Problèmes d'insertion

Problèmes d'insertion - PHP - Programmation

Marsh Posté le 23-11-2004 à 13:19:38    

Salut,
 
J'ai fait une page qui permet d'insérer des fiches dans une base MySql, la page en question permet d'insérer 5 fiches à la fois mais le problèmes c'est que si je veux en insérer qu'une, ça m'en met quand même 5 dont 4 vides. Pourtant je fais des tests.... voila mon code:
 
<?include("_connexion.php" );
 
if (ISSET($_POST['tf_Ref1'])) {
$Ref = $_POST['tf_Ref1'];
$Titre = $_POST['tf_Titre1'];
$Auteur = $_POST['tf_Auteur1'];
$dateEntree = $_POST['hd_DateE'];
$Titre = str_replace("'","'",$Titre);
$Auteur = str_replace("'","'",$Auteur);
 
$query = "INSERT INTO livres (Ref, Titre, Auteur, DateEntree) VALUES ('$Ref', '$Titre', '$Auteur', '$dateEntree')";
$result = mysql_query($query);
 
}
 
if (ISSET($_POST['tf_Ref2'])) {
$Ref2 = $_POST['tf_Ref2'];
$Titre2 = $_POST['tf_Titre2'];
$Auteur2 = $_POST['tf_Auteur2'];
$dateEntree2 = $_POST['hd_DateE2'];
$Titre2 = str_replace("'","'",$Titre2);
$Auteur2 = str_replace("'","'",$Auteur2);
 
$query2 = "INSERT INTO livres (Ref, Titre, Auteur, DateEntree) VALUES ('$Ref2', '$Titre2', '$Auteur2', '$dateEntree2')";
$result2 = mysql_query($query2);
}
 
if (ISSET($_POST['tf_Ref3'])) {
$Ref3 = $_POST['tf_Ref3'];
$Titre3 = $_POST['tf_Titre3'];
$Auteur3 = $_POST['tf_Auteur3'];
$dateEntree3 = $_POST['hd_DateE3'];
$Titre3 = str_replace("'","'",$Titre3);
$Auteur3 = str_replace("'","'",$Auteur3);
 
$query3 = "INSERT INTO livres (Ref, Titre, Auteur, DateEntree) VALUES ('$Ref3', '$Titre3', '$Auteur3', '$dateEntree3')";
$result3 = mysql_query($query3);
}
 
if (ISSET($_POST['tf_Ref4'])) {
$Ref4 = $_POST['tf_Ref4'];
$Titre4 = $_POST['tf_Titre4'];
$Auteur4 = $_POST['tf_Auteur4'];
$dateEntree4 = $_POST['hd_DateE4'];
$Titre4 = str_replace("'","'",$Titre4);
$Auteur4 = str_replace("'","'",$Auteur4);
 
$query4 = "INSERT INTO livres (Ref, Titre, Auteur, DateEntree) VALUES ('$Ref4', '$Titre4', '$Auteur4', '$dateEntree4')";
$result4 = mysql_query($query4);
}
 
if (ISSET($_POST['tf_Ref5'])) {
$Ref5 = $_POST['tf_Ref5'];
$Titre5 = $_POST['tf_Titre5'];
$Auteur5 = $_POST['tf_Auteur5'];
$dateEntree5 = $_POST['hd_DateE5'];
$Titre5 = str_replace("'","'",$Titre5);
$Auteur5 = str_replace("'","'",$Auteur5);
 
$query5 = "INSERT INTO livres (Ref, Titre, Auteur, DateEntree) VALUES ('$Ref5', '$Titre5', '$Auteur5', '$dateEntree5')";
$result5 = mysql_query($query5);
}
?>
 
D'ou peut venir l'erreur (apparemment c'est du à la date, car quand j'en mets pas, ça marche...)

Reply

Marsh Posté le 23-11-2004 à 13:19:38   

Reply

Marsh Posté le 23-11-2004 à 14:09:36    

Houlalala par pitier [:ciler]  
Prenez de bonne habitude quand vous codez. Certe c'est pas lier à cela mais évité de mettre des variables dans une chaine de caractère.
 
 
:non:  

Code :
  1. echo "Je suis pas claire dans ce code la : $code mais je me rattraperais"


 
:jap:

Code :
  1. echo "Je suis pas claire dans ce code la : ".$code." mais je me rattraperais"


 
Pour ton probleme c'est quoi le type de champ de ta table ? c'est un datetime ? regarde comment tu formates ta date.
Fait un echo mysql_error() apres tes requettes.

Reply

Marsh Posté le 23-11-2004 à 14:13:17    

$_POST['tf_Ref1'] c'est quoi? A vue de nez il est toujours set mais des fois il est vide! n'est-ce pas?

Reply

Marsh Posté le 23-11-2004 à 14:24:50    

+1 pour la remarque de Berceker United, il vaut mieux concaténer que mettre les variable dans la chaine, mais tu peux aller plus loin puisqu'il n'y a plus de variable dans tes chaines, utilise des simple quote au lieu des doubles.
 
Double quote, le serveur va regarder s'il y a des variables dans la chaine, s'il n'y en a pas, pas besoin qu'il y regarde --> simple quote --> léger gain en temps de génération de la page (d'accord, on parle de milliseconde sur des centaine d'itérations, mais kit à faire du code propre, autant aller au bout ;))


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 23-11-2004 à 21:25:14    

=> ce qu'a dit bob007.
 
A tous les coups c'est un champ input text qui est vide, et qui existe donc mais contient la chaîne vide. Il faudrait donc vérifier qu'il contient qqchose au lieu de vérifier son existence.


Message édité par sielfried le 23-11-2004 à 21:25:33

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 24-11-2004 à 09:05:24    

tout à fait!
if (isset($_POST['tf_Ref1']) && $_POST['tf_Ref1'])
{
 
}

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed