Scholieren.com forum

Scholieren.com forum (https://forum.scholieren.com/index.php)
-   Software & Hardware (https://forum.scholieren.com/forumdisplay.php?f=20)
-   -   [php] gegevens komen niet in tabel (https://forum.scholieren.com/showthread.php?t=200142)

Slaughterer 29-08-2002 11:29

[php] gegevens komen niet in tabel
 
Ik heb een reactieformulier met php gemaakt, maar het probleem is, als alles is ingevuld, dat de gegevens op de een of andere manier niet worden weggeschreven naar de tabel.

Geven van een reactie:
formulier.html
Citaat:

<form method="post" action="post.php">
<table align="center">
<tr>
<td>naam:</td>
<td><input type="text" name="naam"><td>
</tr>
<tr>
<td>email:</td>
<td><input type="email" name="email"> <font size="1">*wordt niet getoond</font></td>
</tr>
<tr>
<td>reactie:</td>
<td><textarea name="reactie" cols="45" rows="5"></textarea></td>
</tr>
</table>
<br>
<table align="center">
<tr>
<td></td>
<td><input type="submit" name="valider" value="Zenden"> <input type="reset" value="Wissen"></td>
</tr>
</table>
</form>
Wegschrijven van de reactie:
post.php
PHP-code:

<html>
<head>
 <link href="../../css/standaard.css" rel="stylesheet" type="text/css">
 <link href="../vakantieverslag.css" rel="stylesheet" type="text/css">
</head>

<body>

<?php
 $db 
mysql_connect();
 
$continu=1;

 if (
$naam == "")
 {
 print(
"Vul je naam in<br>");
 
$continu=0;
 }

 if (
$continu == 1)
 {
 
$datum=date("Y-m-d H:i:s");
 
$sql="INSERT INTO reacties zomervakantie 2002 (naam, email, datum, reactie) VALUES ('$naam', '$email', '$datum', '$reactie')";
 
mysql_query($sql$db);
 print(
"Bedankt voor je reactie!") ;
 }
 else
 {
 print(
"<a href=formulier.html>terug naar formulier</a>");
 }
 
?>

</body>
</html>

En hoewel het hier niet aan zal liggen, omdat ze gewoon helemaal niet in de tabel kijken (ook als ik handmatig naar mijn database ga waar ik het kan beheren) zal ik ook even de het opvragen erbij zetten

reacties.php
PHP-code:

<table align="center" border="1">
 <tr>
  <td bgcolor="black">DATUM</td>
  <td bgcolor="black">NAAM</td>
  <td bgcolor="black">REACTIE</td>
 </tr>

 <?php
  $db 
mysql_connect();
  
$sql="SELECT DATE_FORMAT(datum,'%d-%m-%Y %H:%i:%s') AS datum, naam, reactie FROM reacties zomervakantie 2002 ORDER by datum DESC";
  
$res=mysql_query($sql$db);
  while (
$ligne mysql_fetch_object ($res))
  {
   print 
"<tr>";
   print 
"<td>$ligne->datum</td>";
   print 
"<td>$ligne->naam</td>";
   print 
"<td>$ligne->reactie</td>";
   print 
"</tr>";
  }
  
mysql_free_result ($res);
  
mysql_close($db);
 
?>
</table>

De database is als volgt:
Citaat:

CREATE TABLE `reacties zomervakantie 2002` (
`id` MEDIUMINT(5) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`naam` VARCHAR(128) NOT NULL,
`email` VARCHAR(128) NOT NULL,
`datum` DATETIME NOT NULL,
`reactie` TEXT NOT NULL
);
Wie ziet er wat er mis is en kan mij helpen?

McMotion 29-08-2002 11:39

ten eerste moet je quotes om je tabelnaam heen zetten... dus:

INSERT INTO "reacties zomervakantie 2002" (na.....etc.

ten tweede ik zou $_POST gebruiken.. dus $_POST['naam'] in plaats van $naam.. want bij sommige php versies kan dat, maar bij andere niet...

ook moet je alle data die wordt ingevoerd eerst door mysql_escape_string() heen halen, anders gaat het ook fout als je een quote ofzo invoert

Manuzhai 29-08-2002 11:55

Verder KAN het nuttig zijn om host, username en password in je mysql_connect() te zetten.

Slaughterer 29-08-2002 11:56

Citaat:

Manuzhai schreef:
Verder KAN het nuttig zijn om host, username en password in je mysql_connect() te zetten.
Dat hoeft niet. Bij het gastenboek dat ik al heb gemaakt is dat niet gedaan, die werkt prima.

Manuzhai 29-08-2002 12:04

Citaat:

PHP-code:

<?php
 $db 
mysql_connect();
 
$continu=1;

 if (
$naam == "")
 {
 print 
"Vul je naam in<br>";
 
$continu=0;
 }

 if (
$continu == 1)
 {
 
$datum=date("Y-m-d H:i:s");
 
$sql="INSERT INTO 'reacties zomervakantie 2002' (naam, email, datum, reactie) VALUES ('".mysql_escape_string($naam)."', '".mysql_escape_string($email)."', '$datum', '$reactie')";
 
mysql_query($sql$db);
 print(
"Bedankt voor je reactie!") ;
 }
 else
 {
 print(
"<a href=formulier.html>terug naar formulier</a>");
 }
 
?>

</body>
</html>


En waarom gebruik je uberhaupt een tabelnaam met spaties erin? Dat is vragen om problemen. Maak er underscores van.

Chimera 29-08-2002 12:10

Citaat:

Slaughterer schreef:

Dat hoeft niet. Bij het gastenboek dat ik al heb gemaakt is dat niet gedaan, die werkt prima.

Lokaal misschien, maar op internet zul je toch echt een username en password moeten geven.

McMotion 29-08-2002 12:13

Citaat:

Manuzhai schreef:
En waarom gebruik je uberhaupt een tabelnaam met spaties erin? Dat is vragen om problemen. Maak er underscores van.
waarom niet gewoon spaties met quotes om het geheel?? veel makkelijker toch? is niet vragen om problemen hoor :)

Chimera 29-08-2002 12:16

Citaat:

McMotion schreef:


waarom niet gewoon spaties met quotes om het geheel??

IIRC vallen tabelnamen met spaties er in buiten de SQL standaard. Porten naar een ander DB systeem kan dan dus problemen opleveren.

Bovendien is het gewoon onoverzichtelijk. Ook geeft een naam als "reacties zomervakantie 2002" al aan dat het DB ontwerp gewoon brak is.

Slaughterer 29-08-2002 12:22

Citaat:

McMotion schreef:
ten eerste moet je quotes om je tabelnaam heen zetten... dus:

INSERT INTO "reacties zomervakantie 2002" (na.....etc.

ten tweede ik zou $_POST gebruiken.. dus $_POST['naam'] in plaats van $naam.. want bij sommige php versies kan dat, maar bij andere niet...

ook moet je alle data die wordt ingevoerd eerst door mysql_escape_string() heen halen, anders gaat het ook fout als je een quote ofzo invoert

1)Ik heb het met quotes geprobeerd, maar dan werd er JUIST een foutmelding gegeven. Toen ik deze weghaalde was de foutmelding verdwenen...alleen nog geen input, maar geen foutmelding.
2)Bij deze php-versie kan dat wel :)
3)Waar had ik dat dan niet gedaan?

Citaat:

Manuzhai schreef:
En waarom gebruik je uberhaupt een tabelnaam met spaties erin? Dat is vragen om problemen. Maak er underscores van.
Tsja, dat is inderdaad dom van me. Ik van underscore neergezet en alles werkte gelijk perfect. Bedankt! :)

McMotion 29-08-2002 12:58

Citaat:

Slaughterer schreef:
3)Waar had ik dat dan niet gedaan?
tjongejongejonge ik hoop echt dat dit een grapje is, anders is het wel heeeeel erg met je gesteld :(


Alle tijden zijn GMT +1. Het is nu 10:23.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.