Toon posts:

[PHP/MySQL] insert nieuw record werkt niet *

Pagina: 1
Acties:
  • 50 views sinds 30-01-2008

Verwijderd

Topicstarter
Ik heb een php en mysql met succes op mijn windows server2003 geinstalleerd. Ik heb ook het idee dat mysql het goed doet, echter mijn gastenboek slaat geen berichten op. Het gastenboek is gemaakt in php en maakt gebruik van 2 databases van mysql. Ik heb in het congfig.php bestand alle instellingen (localhost database name gebruiker en password) ingevoerd. Na openen leest hij dus wel de gegevens uit, maar hij voert geen nieuwe berichten in. Zie http://62.131.18.48/guestbook/index.php. Ik weet echt niet wat ik fout doe, Ik kan ook nergens een log file raadplegen. Ik heb ook een teller (http://62.131.18.48 onderaan pagina) voor het aantal users online en deze werkt wel, met exact dezelfde gegevens (username, password, localhost en database).
Iemand die mij misschien kan helpen?

Alvast bedankt.

  • Y0ur1
  • Registratie: Oktober 2000
  • Niet online
Gaat het command-line allemaal wel goed bijvoorbeeld of via phpmyadmin? En post eens het gedeelte waar je het bericht in de database zet.

Verwijderd

Topicstarter
Dit is de code die het bericht in de database plaatst.

PHP:
1
2
3
4
5
6
7
include"config.php";
  if ($submit) { 
      // Maak SQL query om toe te voegen (INSERT) 
      $sql = "INSERT INTO justaguestbook_bericht SET id = '', naam = '$naam', email = '$email', zichtbaar = '$zicht' , url = '$url', bericht = '$bericht', datum = '$datum1' , tijd = '$tijd'"; 
      // Voer SQL uit 
      mysql_query($sql) or die("fout!!!!");    
   }
Y0ur1 schreef op dinsdag 15 februari 2005 @ 11:25:
Gaat het command-line allemaal wel goed bijvoorbeeld of via phpmyadmin? En post eens het gedeelte waar je het bericht in de database zet.

[ Voor 12% gewijzigd door curry684 op 15-02-2005 11:40 . Reden: [php]-tags maken het mooier :) ]


  • Y0ur1
  • Registratie: Oktober 2000
  • Niet online
Hoe zit het met je register_globals? if($submit)...

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 19-10-2025
wat dacht je van debuggen?
als je meerdere van dit soort websites wil gaan maken zal je toch echt dit soort werk zelf moeten kunnen doen.

goede vorm van debuggen, is binnen elk if statement en for/while loopje een println ofzo te kwakken.
zo kan je dus zien OF je in de loop/voorwaarde komt, en zo ja, hoe vaak.

in dit geval zou je dus zoals hierboven al is gezegt, een echo "hoi"; kunnen plaatsen na 'if ($submit)'
dit houd in dat wanneer daar niks uitkomt, je direct weet wat het probleem is

This message was sent on 100% recyclable electrons.


  • SYQ
  • Registratie: Oktober 2001
  • Niet online

SYQ

SET id = '', naam = '$naam',

moet toch zoiets worden gok ik, in ieder geval de id en naam gaat fout in je sql

SET id = ' ', naam = '$naam',

[ Voor 18% gewijzigd door SYQ op 15-02-2005 11:36 ]


  • Y0ur1
  • Registratie: Oktober 2000
  • Niet online
idd die query is volgens mij ook niet lekker. Ik denk dat je id auto incremental is, dan hoef je hem niet op te geven in je query...

code:
1
2
3
4
5
6
7
8
9
10
11
$sql = "
INSERT INTO
  justaguestbook_bericht 
SET 
  naam = '$naam', 
  email = '$email', 
  zichtbaar = '$zicht', 
  url = '$url', bericht = '$bericht', 
  datum = '$datum1', 
  tijd = '$tijd'
";

Als een query niet werkt, altijd effe zo neerzetten, moet je eigenlijk sowieso doen, vooral als je in de toekomst met grotere querys gaat werken is het onontkoombaar.

[ Voor 23% gewijzigd door Y0ur1 op 15-02-2005 11:40 ]


  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Y0ur1 schreef op dinsdag 15 februari 2005 @ 11:39:
idd die query is volgens mij ook niet lekker. Ik denk dat je id auto incremental is, dan hoef je hem niet op te geven in je query...
Sterker nog, je krijgt dan zelfs een error.

Noushka's Magnificent Dream | Unity


  • ironx
  • Registratie: Augustus 2001
  • Laatst online: 08-05 21:49
code:
1
$sql = "INSERT INTO justaguestbook_bericht (naam, email, zichtbaar, url, bericht, datum, tijd) VALUES ('$naam', '$email', '$zicht', '$url', '$bericht', '$datum1', '$tijd')"

en verander anders
code:
1
mysql_query($sql) or die("fout!!!!");

eens in
code:
1
mysql_query($sql) or die(mysql_error());

Dit zal dan de eventuele fout moeten laten zien...

En id zou (zoals door anderen ook al gemeld) autoincrement moeten zijn.

[ Voor 97% gewijzigd door ironx op 15-02-2005 11:46 ]


This posting is provided "AS IS" with no warranties, and confers no rights.


Verwijderd

Topicstarter
Aanpassing doorgevoerd, maar code laat geen fout zien.
Ik zal nog even kijken naar de autoincrement.
Verder vind ik het toch raar. Dit is exact dezelfde code die ik ook al gebruikte toen mijn site onder een hosting bedrijf werd beheerd.
ironx schreef op dinsdag 15 februari 2005 @ 11:43:
code:
1
$sql = "INSERT INTO justaguestbook_bericht (naam, email, zichtbaar, url, bericht, datum, tijd) VALUES ('$naam', '$email', '$zicht', '$url', '$bericht', '$datum1', '$tijd')"

en verander anders
code:
1
mysql_query($sql) or die("fout!!!!");

eens in
code:
1
mysql_query($sql) or die(mysql_error());

Dit zal dan de eventuele fout moeten laten zien...

En id zou (zoals door anderen ook al gemeld) autoincrement moeten zijn.

Verwijderd

Topicstarter
Code is nu zo, zonder veel resultaat:
<?php
include"config.php";
if ($submit) {
// Maak SQL query om toe te voegen (INSERT)
$sql = "
INSERT INTO
justaguestbook_bericht
SET
naam = '$naam',
email = '$email',
zichtbaar = '$zicht',
url = '$url', bericht = '$bericht',
datum = '$datum1',
tijd = '$tijd'";

mysql_query($sql) or die(mysql_error());

}

?>
instellingen bestand (config.php) ziet er zo uit:
<?php
//verbinding maken
$database_server = mysql_connect("localhost", "Jeroen Galjee", "**************");
//database selecteren
mysql_select_db("galjee1", $database_server);
//extra gegevens voor datum
$datum1 = date("j-m-Y");
$tijd = date("H:i:s");
$dagweek = date("l");
?>
Heeft het niet iest met rechten te maken?

[ Voor 36% gewijzigd door Verwijderd op 15-02-2005 12:04 ]


  • ironx
  • Registratie: Augustus 2001
  • Laatst online: 08-05 21:49
/* laat maar */

[ Voor 114% gewijzigd door ironx op 15-02-2005 12:12 ]


This posting is provided "AS IS" with no warranties, and confers no rights.


  • WPN
  • Registratie: Augustus 2003
  • Laatst online: 14-05 01:27

WPN

komen je variabelen wel door???

doe eens een ECHO voor je de query insert....

ik weet niet hoe het formulier gepost wordt maar probeer anders
PHP:
1
  $email = $_POST['email'];


en dan natuurlijk voor je andere variabelen ook zo doen.....

Als ik denk zoals ik dacht, dan doe ik zoals ik deed, als ik doe zoals ik deed, dan denk ik zoals ik dacht! Cogito Ergo Sum


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-05 22:46

Janoz

Moderator Devschuur®

!litemod

Ik denk dat het probleem al in de 3e reactie aangegeven is door Y0ur1. Daarnaast lijkt het me handig om ook even de faq door te nemen over wat je in je topic moet zetten, hoe je je code neerzet (mbv [php] bv), maar ook hoe je kunt debuggen.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Ik heb ook al eens met dit probleem te maken gehad...

En het ligt idd vaak aan de query...

Volgende query gebruik ik in mijn gastenboek en die werk perfect:

PHP:
1
2
3
4
5
6
7
8
9
$query="INSERT into $tablename values ('0','$naam','$e_mail','$bericht','$vandaag','$tijd')";
if(mysql_db_query($dbname,$query,$link))
{
  echo "succes"
}
else
{
  echo "failure"
}


Als ik bij mij alleen de query gebruik dan werkt ie niet, echter gebruik ik het if statement, dan blijkt hij wel de waarden in de database op te slaan...

Verwijderd

Topicstarter
Ik begrijp niet helemaal wat hij daarme bedoeld.
Heb tot nu toe van alles geprobeerd, maar helaas zonder enige vooruitgang.
Insert wil maar niet werken
Janoz schreef op dinsdag 15 februari 2005 @ 12:18:
Ik denk dat het probleem al in de 3e reactie aangegeven is door Y0ur1. Daarnaast lijkt het me handig om ook even de faq door te nemen over wat je in je topic moet zetten, hoe je je code neerzet (mbv [php] bv), maar ook hoe je kunt debuggen.

Verwijderd

Ik vermoed inderdaad dat register globals uit staat (tegenwoordig standaard in de installatie, veiligheidsoverwegingen), vanwege het feit dat het eerder wel bij een hostingbedrijf heeft gewerkt.

PHP:
1
2
3
4
5
6
7
8
9
10
11
<? 
include"config.php"; 
  if ($_POST['submit']) { 
      $naam = $_POST['naam'];
      // Doe dit voor alle variabelen ($email, $zicht, $url, $bericht, $datum1, $tijd)
      // Maak SQL query om toe te voegen (INSERT)  
      $sql = "INSERT INTO justaguestbook_bericht SET id = '', naam = '$naam', email = '$email', zichtbaar = '$zicht' , url = '$url', bericht = '$bericht', datum = '$datum1' , tijd = '$tijd'";  
       // Voer SQL uit  
      mysql_query($sql) or die("fout!!!!");     
   } 
?>


Dit zou dan moeten werken. Wat je ook kan doen is je register globals op on zetten, maar dit wordt zoals eerder aangegeven afgeraden.

Verwijderd

Topicstarter
Ik heb mijn code aangepast wat je adviseerde, zie hieronder:
<?
include"config.php";
if ($_POST['submit']) {
$naam = $_POST['naam'];
$email = $_POST['email'];
$zicht = $_POST['zichtbaar'];
$url = $_POST['url'];
$bericht = $_POST['bericht'];
$datum1 = $_POST['datum'];
$tijd = $_POST['tijd'];

$sql = "INSERT INTO justaguestbook_bericht SET id = '', naam = '$naam', email = '$email',
zichtbaar = '$zicht', url = '$url', bericht = '$bericht', datum = '$datum1' , tijd = '$tijd'";
// Voer SQL uit
mysql_query($sql) or die("fout!!!!");
}
?>
Helaas zonder resultaat.
Ik begrijp het echt niet meer.
Is er ook nergens binnen mysql een soort debugger die laat zien wat fout/goed gaat.
Hoe/waar kan ik de register globals op on zetten?
win server 2003
Verwijderd schreef op dinsdag 15 februari 2005 @ 12:54:
Ik vermoed inderdaad dat register globals uit staat (tegenwoordig standaard in de installatie, veiligheidsoverwegingen), vanwege het feit dat het eerder wel bij een hostingbedrijf heeft gewerkt.

PHP:
1
2
3
4
5
6
7
8
9
10
11
<? 
include"config.php"; 
  if ($_POST['submit']) { 
      $naam = $_POST['naam'];
      // Doe dit voor alle variabelen ($email, $zicht, $url, $bericht, $datum1, $tijd)
      // Maak SQL query om toe te voegen (INSERT)  
      $sql = "INSERT INTO justaguestbook_bericht SET id = '', naam = '$naam', email = '$email', zichtbaar = '$zicht' , url = '$url', bericht = '$bericht', datum = '$datum1' , tijd = '$tijd'";  
       // Voer SQL uit  
      mysql_query($sql) or die("fout!!!!");     
   } 
?>


Dit zou dan moeten werken. Wat je ook kan doen is je register globals op on zetten, maar dit wordt zoals eerder aangegeven afgeraden.

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 17:09

Robtimus

me Robtimus no like you

Verwijderd schreef op dinsdag 15 februari 2005 @ 13:16:
PHP:
1
      mysql_query($sql) or die("fout!!!!");
mysql_error() al geprobeerd?
Hoe/waar kan ik de register globals op on zetten?
win server 2003
php.ini, waarschijnlijk in je windows directory. Zoeken naar register_globals, waarde van Off naar On zetten.

More than meets the eye
There is no I in TEAM... but there is ME
system specs


Verwijderd

Topicstarter
mysql error wel maar gaf geen error,
Ik weet ook niet precies waar ik die dan precies tussen moet zetten
IceManX schreef op dinsdag 15 februari 2005 @ 13:23:
[...]
mysql_error() al geprobeerd?
[...]
php.ini, waarschijnlijk in je windows directory. Zoeken naar register_globals, waarde van Off naar On zetten.

  • ironx
  • Registratie: Augustus 2001
  • Laatst online: 08-05 21:49
Bekijk (en plaats) de query anders eens door hem te echo'en:

PHP:
1
2
3
4
5
$sql = "INSERT INTO justaguestbook_bericht bla bla bla...";

// Voer SQL uit  
echo "Query: [" . $sql . "]";
// mysql_query($sql) or die("fout!!!!");


Zo kun je in ieder geval eens bekijken hoe de query eruitziet zoals MySQL hem ontvangt.

[ Voor 12% gewijzigd door ironx op 15-02-2005 13:38 ]


This posting is provided "AS IS" with no warranties, and confers no rights.


Verwijderd

Geen records meer kunnen inserten kan een symptoom van een corrupte tabel zijn.

  • [ash]
  • Registratie: Februari 2002
  • Laatst online: 05-04-2025

[ash]

Cookies :9

Hoe staat 'display_errors' ingesteld in je php.ini? Misschien heb je wel wat syntax fouten welke niet getoond worden. Controlleer deze waarde en zet deze zonodig op E_ALL.

Verwijderd

Topicstarter
Heb met mijn stomme kop mijn server (op afstand) uitgezet.
Wordt zo dus erg lastig om verder te proberen.
Vanavond als ik thuis ben kan ik weer verder uitzoeken
Zal hem dan ook echo-en,
Iedereen alvast bedankt
ironx schreef op dinsdag 15 februari 2005 @ 13:37:
Bekijk (en plaats) de query anders eens door hem te echo'en:

PHP:
1
2
3
4
5
$sql = "INSERT INTO justaguestbook_bericht bla bla bla...";

// Voer SQL uit  
echo "Query: [" . $sql . "]";
// mysql_query($sql) or die("fout!!!!");


Zo kun je in ieder geval eens bekijken hoe de query eruitziet zoals MySQL hem ontvangt.

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 13-05 20:39
Staat die database server bij je thuis/binnen handbereik of heb je geen directe toegang op de server? Als je dat wel hebt kun je query zoals je die maakt/echo's hierboven handmatig invoeren in de database, om te controleren of die query echt wel goed is of dat het toch een PHP probleem is.

Verwijderd

Topicstarter
Die staat thuis, maar helaas ben ik dat niet :)
Sybr_E-N schreef op dinsdag 15 februari 2005 @ 13:47:
Staat die database server bij je thuis/binnen handbereik of heb je geen directe toegang op de server? Als je dat wel hebt kun je query zoals je die maakt/echo's hierboven handmatig invoeren in de database, om te controleren of die query echt wel goed is of dat het toch een PHP probleem is.

Verwijderd

Topicstarter
Altijd handig een vriendin die thuis zit.
Ze heeft hem weer aan gezet.
Verwijderd schreef op dinsdag 15 februari 2005 @ 13:48:
Die staat thuis, maar helaas ben ik dat niet :)
[...]

Verwijderd

Topicstarter
Register globals aangezet en server gerestart.
Nu werkt het, maar uit veiligheidsoogpunt laat ik het er niet bij zitten, Wil het ook graag werkend hebben zonder deze optie.
Ga vanavond weer verder zoeken.
Nogmaals iedereen bedankt voor jullie hulp.
IceManX schreef op dinsdag 15 februari 2005 @ 13:23:
[...]
mysql_error() al geprobeerd?
[...]
php.ini, waarschijnlijk in je windows directory. Zoeken naar register_globals, waarde van Off naar On zetten.

  • Y0ur1
  • Registratie: Oktober 2000
  • Niet online
Verwijderd schreef op dinsdag 15 februari 2005 @ 14:01:
Register globals aangezet en server gerestart.
Nu werkt het, maar uit veiligheidsoogpunt laat ik het er niet bij zitten, Wil het ook graag werkend hebben zonder deze optie.
Ga vanavond weer verder zoeken.
Nogmaals iedereen bedankt voor jullie hulp.

[...]
Gewoon $_POST en $_GET gebruiken dus... je had dit probleem makkelijk met de search kunnen vinden... of zelf kunnen debuggen door na je ifje een echo te zetten bv.

[ Voor 7% gewijzigd door Y0ur1 op 15-02-2005 14:04 ]


Verwijderd

Topicstarter
Leuk GET en POST gebruiken.
Als ik weet hoe. Ik heb diverse topics doorgelezen, maar kom niet tot een duidelijk antwoord.
Wanneer en waar gebruik ik GET en/of POST?
echo werkt ook niet want die geeft niks terug.
Graag een voorbeeld. Ik ben niet zo bekend met php.
Alvast bedankt

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Verwijderd schreef op dinsdag 15 februari 2005 @ 22:12:
Leuk GET en POST gebruiken.
Als ik weet hoe. Ik heb diverse topics doorgelezen, maar kom niet tot een duidelijk antwoord.
Wanneer en waar gebruik ik GET en/of POST?
Als je dat niet weet moet je geen topics lezen, maar tutorials of boeken. Je hebt dan één van de belangrijkste dingen van webscripting niet begrepen, en zonder dat te begrijpen krijg je niets klaar. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
Ja maar daar heb ik nu niet zoveel aan. Met register globals op on werkt onderstaande code wel.
DIt is alleen minder veilig. Wat moet ik nog veranderen?

<?
include"config.php";
if ($_POST['submit']) {
$naam = $_POST ['naam'];
$email = $_POST ['email'];
$zicht = $_POST ['zichtbaar'];
$url = $_POST ['url'];
$bericht = $_POST ['bericht'];
$datum1 = $_POST ['datum'];
$tijd =$_POST ['tijd'];

$sql = "INSERT INTO justaguestbook_bericht SET id = '', naam = '$naam', email = '$email',
zichtbaar = '$zicht', url = '$url', bericht = '$bericht', datum = '$datum1' , tijd = '$tijd'";
// Voer SQL uit
mysql_query($sql) or die("fout!!!!");
}
?>
-NMe- schreef op dinsdag 15 februari 2005 @ 22:18:
[...]

Als je dat niet weet moet je geen topics lezen, maar tutorials of boeken. Je hebt dan één van de belangrijkste dingen van webscripting niet begrepen, en zonder dat te begrijpen krijg je niets klaar. :)

Verwijderd

Topicstarter
iemand? :'(
Verwijderd schreef op dinsdag 15 februari 2005 @ 22:30:
Ja maar daar heb ik nu niet zoveel aan. Met register globals op on werkt onderstaande code wel.
DIt is alleen minder veilig. Wat moet ik nog veranderen?

<?
include"config.php";
if ($_POST['submit']) {
$naam = $_POST ['naam'];
$email = $_POST ['email'];
$zicht = $_POST ['zichtbaar'];
$url = $_POST ['url'];
$bericht = $_POST ['bericht'];
$datum1 = $_POST ['datum'];
$tijd =$_POST ['tijd'];

$sql = "INSERT INTO justaguestbook_bericht SET id = '', naam = '$naam', email = '$email',
zichtbaar = '$zicht', url = '$url', bericht = '$bericht', datum = '$datum1' , tijd = '$tijd'";
// Voer SQL uit
mysql_query($sql) or die("fout!!!!");
}
?>


[...]

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Doe jij nou gewoon even de moeite om je eens wat in te lezen in het vakgebied waar je je in hebt gewaagd. Je geeft in je vorige post zo ongeveer aan dat je dit niet wil. Nouja, dan niet. Maar wij zijn ook geen quickfix. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Je haalt UPDATE en INSERT queries door elkaar. Als je nou eerst eens een beetje SQL en php gaat leren voordat je met dit soort dingen begint.

Noushka's Magnificent Dream | Unity


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-05 22:46

Janoz

Moderator Devschuur®

!litemod

-NMe- slaat de spijker op de kop. In principe is jou al redelijk de ruimte gegeven. Eerder heb ik al aangegeven dat je het beste even de faq door kunt nemen om te zien wat voor problemen er in Programming & Webscripting worden besproken en op wat voor manier deze besproken worden.

De oplossing van je probleem stond al in de derde reactie. Vervolgens moet alles exact voorgekauwd worden. Dat is niet de bedoeling op dit forum.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'

Pagina: 1

Dit topic is gesloten.