Toon posts:

[PHP+MYSQL] Verstuurd, maar toch niet?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Probleem:
1.
Ik heb een script, die half werkt. Op het moment dat ik gegevens heb ingevult en op "submit" klik, ga ik door naar de post-pagina, maar vervolgens gebeurt er niks.

2.
Bij de pagina gegevens.php geeft hij een volgende error:
Unknown column 'id' in 'order clause'

Wat is er mis dan?

Ik ben nog niet heel erg ervaren met php en my_sql dus ik kan de fout niet vinden, er komt ook geen error te staan.

formulier.htm
<FORM NAME="formulier" METHOD="post" ACTION="doorsturen.php">
Voornaam:<INPUT TYPE="text" NAME="voornaam" MAXLENGTH="100"><BR>
Tussenvoegsel:<INPUT TYPE="text" NAME="tussenv" MAXLENGTH="20"><BR>
Achternaam:<INPUT TYPE="text" NAME="achternaam" MAXLENGTH="20"><BR>
Geboortedatum:<INPUT TYPE="text" NAME="gebdat" MAXLENGTH="20"><BR>
Telfoonnummer:<INPUT TYPE="text" NAME="telnr" MAXLENGTH="20"><BR>
E-mailadres:<INPUT TYPE="text" NAME="email" MAXLENGTH="20"><BR>
Opmerkingen:<INPUT TYPE="text" NAME="opmerkingen" MAXLENGTH="20"><BR>
<INPUT TYPE="Submit" NAME="Submit" VALUE="Submit">
<INPUT TYPE="Reset" NAME="Reset" VALUE="Reset">
</FORM>

doorsturen.php
<?php
mysql_connect("localhost","@@@","###");
mysql_select_db("@@@");
if ("$_POST['Submit']") { //als de persoon op submit heeft gedrukt
$voornaam=$_POST['voornaam'];
$tussenv=$_POST['tussenv'];
$achternaam=$_POST['achternaam'];
$gebdat=$_POST['gebdat']";
$telnr=$_POST['telnr'];
$email=$_POST['email'];
$opmerkingen=$_POST['opmerkingen'];

$query="INSERT INTO gegevens (voornaam, tussenv, achternaam, gebdat, telnr, email, opmerkingen) VALUES ('$voornaam', '$tussenv', '$achternaam', '$gebdat', '$telnr', '$email, '$opmerkingen')";
mysql_query($query) or die (mysql_error());

echo "De gegevens zijn succesvol verstuurd";
}
?>

gegevens.php
<TABLE WIDTH="100%" BORDER="1" CELLPADDING="2">
<TR>
<TD>Id:</TD>
<TD>Voornaam:</TD>
<TD>Tussenvoegsel:</TD>
<TD>Achternaam:</TD>
<TD>Geboortedatum:</TD>
<TD>Telefoonnummer:</TD>
<TD>Emailadres:</TD>
<TD>Opmerkingen:</TD>
</TR>
<?php
mysql_connect("localhost","@@@","###");
mysql_select_db("@@@");

$query="SELECT * FROM gegevens ORDER BY id DESC";

$sql=mysql_query($query) or die (mysql_error());
while ($obj=mysql_fetch_object($sql)) {


$persid = $obj->persid;
$voornaam = $obj->voornaam;
$tussenv = $obj->tussenv;
$achternaam = $obj->achternaam;
$gebdat = $obj->gebdat;
$telnr = $obj->telnr;
$emailadres = $obj->emailadres;
$opmerkingen = $obj->opmerkingen;


?>
<TR>
<TD><?php echo $persid; ?></TD>
<TD><?php echo $voornaam; ?></TD>
<TD><?php echo $tussenv; ?></TD>
<TD><?php echo $achternaam; ?></TD>
<TD><?php echo $gebdat; ?></TD>
<TD><?php echo $telnr; ?></TD>
<TD><?php echo $emailadres; ?></TD>
<TD><?php echo $opmerkingen; ?></TD>
</TR>
<?php
}
?>
</TABLE>

[ Voor 79% gewijzigd door Verwijderd op 17-09-2003 12:30 ]


  • Glashelder
  • Registratie: September 2002
  • Niet online

Glashelder

Anti Android

Tabel gegevens, bestaat daar de kolom id ?

:+

verder logisch dat er verder niks gebeurt, want je zegt dat ie moet sterven

Nog iets; waarom ga je in elke while eerst weer alle variabelen zetten. Waarom niet gewoon gelijk een
<TD><?php echo $obj->persid ?></TD>
?

[ Voor 91% gewijzigd door Glashelder op 17-09-2003 12:34 ]

PV 4915wp op oost, 2680 wp op west, 1900 wp op zuid. pvoutput - AUX 8 kW bi bloc


  • Neus
  • Registratie: Maart 2001
  • Laatst online: 18-08 11:19
Moet ID niet persid zijn ? Hoe ziet je SQL tabel eruit ?

Very funny, Scotty... Now beam down my clothes !


  • Emmeau
  • Registratie: Mei 2003
  • Niet online

Emmeau

All your UNIX are belong to us

$query="SELECT * FROM gegevens ORDER BY id DESC";
moet mischien zijn
$query="SELECT * FROM gegevens ORDER BY persid DESC";

If you choose to criticise you choose your enemies


Verwijderd

in gegevens.php moet je volgens mij:

$query="SELECT * FROM gegevens ORDER BY id DESC";

veranderen in:

$query="SELECT * FROM gegevens ORDER BY persid DESC";

edit:

toch sneller leren typen ;)

[ Voor 19% gewijzigd door Verwijderd op 17-09-2003 12:34 . Reden: te laat ]


  • TRON
  • Registratie: September 2001
  • Laatst online: 16-08 07:26
Als je nou eens je database-structure post dan kunnen we er wat meer mee Afbeeldingslocatie: http://www.krostivod.nl/whos_the_man.gif

Het lijkt namelijk zo dat het probleem zich voordoet bij 'id' zoals men hierboven aal aangeeft.

[ Voor 42% gewijzigd door TRON op 17-09-2003 12:35 ]

Leren door te strijden? Dat doe je op CTFSpel.nl. Vraag een gratis proefpakket aan t.w.v. EUR 50 (excl. BTW)


Verwijderd

Topicstarter
Gedaan, geen resultaat :S

CREATE TABLE `gegevens` (
`persid` int(10) NOT NULL auto_increment,
`voornaam` varchar(100) NOT NULL default '',
`tussenv` varchar(50) default NULL,
`achternaam` varchar(100) NOT NULL default '',
`gebdat` date default '1900-01-01',
`telnr` varchar(50) NOT NULL default '',
`email` varchar(75) NOT NULL default '',
`opmerkingen` text,
PRIMARY KEY (`persid`)
) TYPE=MyISAM AUTO_INCREMENT=2 ;

[ Voor 90% gewijzigd door Verwijderd op 17-09-2003 12:36 ]


  • Glashelder
  • Registratie: September 2002
  • Niet online

Glashelder

Anti Android

Misschien blaat ik nu maar wat, maar misschien moet
PHP:
1
if ("$_POST['Submit']") {

dit zijn:
PHP:
1
if(isset($_POST['Submit'])) {

PV 4915wp op oost, 2680 wp op west, 1900 wp op zuid. pvoutput - AUX 8 kW bi bloc


Verwijderd

$gebdat=$_POST['gebdat']";

de " weghalen

--------
edit
--------
tis misschien ook wel een idee om je query result zo te laten zien :

echo ' query uitvoeren : '.(($query)?('succesvol'):('Mislukt')).' .. ';

[ Voor 72% gewijzigd door Verwijderd op 17-09-2003 12:42 ]


  • TRON
  • Registratie: September 2001
  • Laatst online: 16-08 07:26
1
PHP:
1
2
3
4
if ($_POST["Submit"]) == "Submit" 
 { 
   // doe je ding
 }


-edit-

En je query kan je ook zo doen:
PHP:
1
2
3
$query="INSERT INTO gegevens (voornaam, tussenv, achternaam, gebdat, telnr, 
email, opmerkingen) VALUES ('".$_POST["voornaam"]."', '".$_POST["tussenv"]."', '".$_POST["achternaam"]."', '".$_POST["gebdat"]."'
, '".$_POST["telnr"]."', '".$_POST["email"]."', '".$_POST["opmerkingen"]."')";



Let ook: In je query heb je '$email, staan ipv '$email'

[ Voor 76% gewijzigd door TRON op 17-09-2003 13:04 ]

Leren door te strijden? Dat doe je op CTFSpel.nl. Vraag een gratis proefpakket aan t.w.v. EUR 50 (excl. BTW)


Verwijderd

Topicstarter
ik heb nu:

doorsturen.php
<?php
mysql_connect("localhost","###","@@@");
mysql_select_db("###");
if(isset($_POST['Submit'])) {
$voornaam=$_POST['voornaam'];
$tussenv=$_POST['tussenv'];
$achternaam=$_POST['achternaam'];
$gebdat=$_POST['gebdat'];
$telnr=$_POST['telnr'];
$email=$_POST['email'];
$opmerkingen=$_POST['opmerkingen'];


$query="INSERT INTO gegevens (voornaam, tussenv, achternaam, gebdat, telnr,
email, opmerkingen) VALUES ('".$_POST["voornaam"]."', '".$_POST["tussenv"]."', '".$_POST["achternaam"]."', '".$_POST["gebdat"]."'
, '".$_POST["telnr"]."', '".$_POST["email"]."', '".$_POST["opmerkingen"]."')";

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

echo ' query uitvoeren : '.(($query)?('succesvol'):('Mislukt')).' .. ';
}
?>

En de andere mogelijkheden die jullie suggeste werkte ook niet :(. Misschien nog andere mogelijkheid?

Opgelost:
De gegevens.php.

[ Voor 75% gewijzigd door Verwijderd op 17-09-2003 13:56 ]


  • Sosabowski
  • Registratie: Juni 2003
  • Laatst online: 20-08 17:50

Sosabowski

nerd

$result = mysql_query($query) or die (mysql_error());

en gebruik eens $HTTP_POST_VARS['xxx']

edit: en volegns mijgaat er ook iets fout als je " gebruikt tussen de rechte haken. Zet eens een echo van de query op je scherem en kijk wat je ziet. Zelf gebruik ik altijd sprintf. bijvoorbeeld

$insertSQL = sprintf("INSERT INTO berichten (van, aan, datum, mail, inhoud) VALUES (%s, %s, %s, %s, %s)",
$HTTP_POST_VARS['van'],
$HTTP_POST_VARS['soort'],
$HTTP_POST_VARS['datetime'],
$HTTP_POST_VARS['mail'],
$HTTP_POST_VARS['bericht']);

[ Voor 76% gewijzigd door Sosabowski op 17-09-2003 14:04 ]

The whole problem with the world is that fools and fanatics are always so certain of themselves, and wiser people so full of doubts. -- Bertrand Russell


Verwijderd

Topicstarter
IorGie schreef op 17 September 2003 @ 13:58:
en gebruik eens $HTTP_POST_VARS['xxx']
Waar? :|

Het wordt me even te lastig IorGie :).

[ Voor 16% gewijzigd door Verwijderd op 17-09-2003 14:07 ]


  • TRON
  • Registratie: September 2001
  • Laatst online: 16-08 07:26
Moet je de mysql_query niet oproepen via
PHP:
1
$query_run = mysql_query($query);
Heb ik laatst een keer gehad Afbeeldingslocatie: http://www.krostivod.nl/whos_the_man.gif

Leren door te strijden? Dat doe je op CTFSpel.nl. Vraag een gratis proefpakket aan t.w.v. EUR 50 (excl. BTW)


  • Sosabowski
  • Registratie: Juni 2003
  • Laatst online: 20-08 17:50

Sosabowski

nerd

1) Zoals TRON ook al zegt moet er iets voor mysql_query(.......
2) $HTTP_POST_VARS gebruik ik ipv $_POST
3) Volgens mij ga je ergens de fout in met al je 's en "s gebruik daarom sprintf

The whole problem with the world is that fools and fanatics are always so certain of themselves, and wiser people so full of doubts. -- Bertrand Russell


Verwijderd

Topicstarter
Als je hem zo bedoelt, dan nee.

$query_run = mysql_query($query) or die (mysql_error());

Verwijderd

Topicstarter
<?php
mysql_connect("localhost","--","--");
mysql_select_db("--");
if(isset($HTTP_POST_VARS['Submit'])) {
$voornaam=$HTTP_POST_VARS['voornaam'];
$tussenv=$HTTP_POST_VARS['tussenv'];
$achternaam=$HTTP_POST_VARS['achternaam'];
$gebdat=$HTTP_POST_VARS['gebdat'];
$telnr=$HTTP_POST_VARS['telnr'];
$email=$HTTP_POST_VARS['email'];
$opmerkingen=$HTTP_POST_VARS['opmerkingen'];


$insertSQL = sprintf("INSERT INTO gegevens (voornaam, tussenv, achternaam, gebdat, telnr,
email, opmerkingen) VALUES ('$voornaam', '$tussenv', '$achternaam', '$gebdat', '$telnr', '$email, '$opmerkingen')";

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

echo "De gegevens zijn succesvol verstuurd";

}
?>


Werkt niet.
Maar wat zijn die %s's in jou bericht? Wat moet ik veranderen aan de values?

[ Voor 60% gewijzigd door Verwijderd op 17-09-2003 14:18 ]


  • Sosabowski
  • Registratie: Juni 2003
  • Laatst online: 20-08 17:50

Sosabowski

nerd

zucht ok dan... B)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$hostname_db = "localhost";
$database_db = "***";
$username_db = "***";
$password_db = "***";
$db = mysql_pconnect($hostname_db, $username_db, $password_db) or die(mysql_error());


mysql_select_db($database_db, $db);
$insertSQL = sprintf("INSERT INTO gegevens (voornaam, tussenv, achternaam, gebdat, telnr, email, opmerkingen) VALUES (%s, %s, %s, %s, %s, %s, %s)",
$HTTP_POST_VARS['voornaam'],
$HTTP_POST_VARS['tussenv'],
$HTTP_POST_VARS['achternaam'],
$HTTP_POST_VARS['gebdat'],
$HTTP_POST_VARS['telnr'],
$HTTP_POST_VARS['email'],
$HTTP_POST_VARS['opmerkingen']);

$result = mysql_query($insertSQL, $db) or die (mysql_error());

[ Voor 65% gewijzigd door Sosabowski op 17-09-2003 14:43 ]

The whole problem with the world is that fools and fanatics are always so certain of themselves, and wiser people so full of doubts. -- Bertrand Russell


Verwijderd

Topicstarter
Regel 8 is fout zegt het.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 17-08 23:56

Janoz

Moderator Devschuur®

!litemod

En kijk eens naar regel acht. Wat zou daar fout aan kunnen zijn?

Kom Vinz-, je mag zelf ook nog wel een beetje doen hoor ;) (Hint, zou die komma daar horen?)

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


  • Sosabowski
  • Registratie: Juni 2003
  • Laatst online: 20-08 17:50

Sosabowski

nerd

Ik heb nu het hele script neer gezet, beetje eigen inbreng mag ook wel Vinz-
Als je er nu niet uitkomt is het tijd om een andere hobby te zoeken of een goed boek over php / mysql te halen.

The whole problem with the world is that fools and fanatics are always so certain of themselves, and wiser people so full of doubts. -- Bertrand Russell


Verwijderd

Topicstarter
-

[ Voor 114% gewijzigd door Verwijderd op 17-09-2003 14:41 ]


Verwijderd

Topicstarter
Uhh, if ya still wanna help me :$.

ik kreeg een "Query is empty" toen ik deze gebruikte:
$result = mysql_query($query, $db) or die (mysql_error());

veranderd in:
$result = mysql_query($insertSQL, $db) or die (mysql_error());

Dan krijg ik een syntax error bij opmerkingen:
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ' opmerking)' at line 1

[ Voor 37% gewijzigd door Verwijderd op 17-09-2003 14:40 ]


  • Jelle Niemantsverdriet
  • Registratie: Februari 2000
  • Laatst online: 21-08 12:15
Wat je je aan moet leren (en wat veel mensen je ook stap voor stap proberen duidelijk te maken), is debuggen. Kortom, systematisch nagaan waar het probleem kan zitten. Dus: komen de gegevens wel aan na het POST request. Zijn ze in de goede vorm? (dus uitvoeren naar het scherm om te checken)
Als dat allemaal een beetje goed lijkt, ga je je met de query bezighouden. Hint: een query kun je ook naar het scherm schrijven.

Zie bijvoorbeeld ook P&W FAQ - Algemeen voor meer van deze tips.

Overigens is er imho weinig mis met het gebruik van $_POST, voor zover ik weet is $HTTP_POST_VARS inmiddels verouderd.

Verwijderd

Topicstarter
Na lang remaken en alles:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php 
$hostname_db = "localhost"; 
$database_db = "---"; 
$username_db = "---"; 
$password_db = "---"; 
$db = mysql_pconnect($hostname_db, $username_db, $password_db) or die(mysql_error()); 
mysql_select_db($database_db, $db); 
if ($_POST['Submit']) {
  $voornaam=$_POST['voornaam']; 
  $tussenv=$_POST['tussenv']; 
  $achternaam=$_POST['achternaam']; 
  $gebdat=$_POST['gebdat']; 
  $telnr=$_POST['telnr']; 
  $email=$_POST['emailadres']; 
  $opmerkingen=$_POST['opmerkingen']; 


$query="INSERT INTO gegevens (voornaam, tussenv, achternaam, gebdat, telnr, email, opmerkingen ) VALUES ('$voornaam', '$tussenv', '$achternaam', '$gebdat', '$telnr', '$email', '$opmerkingen')";

$result = mysql_query($query, $db) or die (mysql_error());
}
?>


Hij werkt.

  • Sosabowski
  • Registratie: Juni 2003
  • Laatst online: 20-08 17:50

Sosabowski

nerd

En, koste dat nou zo veel moeite om zelf uit te vinden??

The whole problem with the world is that fools and fanatics are always so certain of themselves, and wiser people so full of doubts. -- Bertrand Russell


  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 21-02 23:50
IorGie, $HTTP_POST_VARS is -een beetje- outdated. $_POST is zeker te prefereren. (Superglobals, ergens geintroduceerd in PHP4.nogwattes)

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info

Pagina: 1