2010-12-04 6 views
3

Mon code insère un enregistrement vide dans la table MySQL "table1" au lieu d'obtenir ce qui est inséré dans le champ "Nom" dans form1.html. Une idée pour laquelle il insère un enregistrement vide au lieu de ce que l'utilisateur a entré dans le champ?Code PHP Insérer des enregistrements vides dans la base de données MySQL

form1.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
    "http://www.w3.org/TR/html4/strict.dtd" 
    > 
<html lang="en"> 
<head> 
    <title>Insert Your Name</title> 
</head> 
<body> 
    <h3> Insert Your Name</h3> 
    <form action="form1.php" method="post"> 
     <input type="text" name="Name"> 
      <input type="Submit" value="Submit" name="Submit"> 
    </form> 
</body> 
</html> 

form.php

> <?php 
> $connection = 
> mysql_connect("localhost","root","") 
> or die ("Couldn't Connect To Server"); 
> $db = mysql_select_db("db1", 
> $connection) or die ("Couldn't Select 
> Database"); $query = "CREATE TABLE IF 
> NOT EXISTS table1 (Name VARCHAR(20))"; 
> $result = mysql_query($query) or die 
> ("Query Failed: " . mysql_error()); 
> $query = "INSERT INTO table1 (Name) 
> VALUES ('$_post[Name]')"; $result = 
> mysql_query($query) or die ("Query 
> Failed: " . mysql_error()); $query = 
> "SELECT * FROM table1"; $result = 
> mysql_query($query) or die ("Query 
> Failed: " . mysql_error()); 
>  echo "<TABLE BORDER = '1'>"; 
>  echo "<TR>"; 
>  echo "<TH>Name</TH>"; 
>  echo "</TR>"; 
>  
>  while ($row = mysql_fetch_array($result)) 
>  { 
>   echo "<TR>"; 
>   echo "<TD>", $row['name'], "</TD>"; 
>   echo "</TR>"; 
>  } 
>  echo "</TABLE>"; 
>  mysql_close($connection); ?> 
+5

+1 rarement débutant avec la réputation 1 capable de poster la question avec une grande lisibilité :) Merci – ajreal

+0

ajreal! J'espère que c'est ici que je pourrai trouver des réponses :) – t0mgs

+0

Avez-vous regardé dans la base de données pour vérifier si le champ de nom y est enregistré? Cela permettra de déterminer si le problème est dans votre insert ou votre sélection. –

Répondre

0
$query = "INSERT INTO table1 (Name) 
VALUES ('{$_POST[Name]}')"; $result = 
mysql_query($query) or die ("Query 
Failed: " . mysql_error()); 

$_POST et $_GET sont en majuscules.

changer le code d'affichage:

while ($row = mysql_fetch_array($result)) 
    { 
     echo "<TR>"; 
     echo "<TD>", $row['Name'], "</TD>"; 
     echo "</TR>"; 
    } 
+0

Merci à vous Horia! Wow, c'est vraiment vrai que la réponse est rapide ici. HoI vous renvoie aussi ma deuxième question: le code php qui montre une table avec les données ne montre pas le nouveau recoed entré. Des idées? – t0mgs

+0

voir la réponse mise à jour. :-) –

+1

aussi, essayez de garder toutes les choses en minuscules dans le futur. Moins de maux de tête de cette façon. –

0

S'il vous plaît changer cette

<input type="text" name="fname"> 


$query = "INSERT INTO table1 (Name) 
VALUES ('".mysql_real_escape_string($_POST[fname],$db)."')"; 
+0

Merci pour la réponse rapide Pradeep! – t0mgs

+0

Cependant, il existe maintenant un problème différent - le code php qui montre une table avec les données ne montre pas le nouveau recoed entré. Des idées? – t0mgs

+0

après insertion s'il vous plaît rediriger la page –

2

Au lieu de

$query = "INSERT INTO table1 (Name) VALUES ('$_post[Name]')"; 

Essayez cette

$query = "INSERT INTO table1 (Name) VALUES ('" . 
      mysql_real_escape_string($_post['Name'],$db) . "')"; 
+0

Merci à vous à Roy-même question que j'ai demandé à Pradeep: le code php qui montre une table avec les données de "table1" ne montre pas le nouveau recoed entré. Des idées? – t0mgs

+1

désolé $ _POST ['Nom'] – royas

+0

Ouais pensé que vous vouliez dire que :) Merci de toute façon l'homme. – t0mgs

0
" . ($_POST['Fname'] != "") ? $_POST['Fname'] : "No Name" ." 
+0

Merci Geeo! Quelle est la raison du "No Name"? Donc, si quelqu'un insérait un champ vide, il écrirait simplement "pas de nom"? – t0mgs

Questions connexes