Probleme formulaire et insert into ?

Répondre
clicone
le 19/04/2006 à 16:11
clicone
Hello,
Mon petit problème du jour: j'ai un formulaire sur lequel j’envoie les données vers la page goaction.php pour faire un insert into et rien ne s'inscrit dans la base, qui veux bien verifier mon code, Merci :)

<form method="post" name="form1" action="goaction.php">
<input name="nom" type="text" class="box" value="" size="41">
etc...
<input type="submit" value="Envoyer" name="envoyer">
</form>


Je recupère le code pour faire un insert into
<?
if (isset($_POST['ID'])
&& isset($_POST['nom'])
etc…
&& isset($_POST['adresse'])) {

$sql = 'INSERT INTO ma_table (ID, nom, adresse) VALUES('.$_POST['nom'].'", "'.$_POST['adresse'].'")';

mysql_query ($sql) or die ('Erreur SQL !'.$sql.''.mysql_error());

echo ‘Bravo';

mysql_close();

}
?>
Si Dieu existe, j'espère qu'il a une bonne excuse -woody allen-
Lefounard
le 19/04/2006 à 17:42
Lefounard
Bonjour,
Voila une solution, peut-etre qu'elle fonctionnera :
<?php // tous les serveurs ne connaissent pas forcement les <?
/*Mettre dans la meme page, comme les retour d'erreur sont plus facile a afficher, apres tu peux toujours separer le formulaire html et l'inclure !*/

//Toujours verifier si le formulaire a été submit
if(isset($_POST['envoyer']) && $_POST['envoyer'] == "Envoyer")
{

/* tu ne teste pas si ta variable est vide ?!! voir empty() */
if ((isset($_POST['ID']) // tu avais oublier une (
&& isset($_POST['nom'])
etc…
&& isset($_POST['adresse'])) {

//N'oublie pas ta connection mysql


/*
Pour les insertions dans mysql, il faut "nettoyer" ces variables (sinon tu risque d'avoir des prob d'affichage et de securité), regarde les cours de laglobule, sinon tu as aussi strip_tags() , htmlentities() , ....... bref */

*/
$sql = 'INSERT INTO ma_table (nom, adresse) VALUES("'.$_POST['nom'].'", "'.$_POST['adresse'].'")'; // tu avais oublier un " devant $_POST['nom'].

mysql_query ($sql) or die ('Erreur SQL !'.$sql.''.mysql_error());

echo 'Bravo'; //tu as mis un ` , g rectifier

mysql_close();
//faire ta redirection;
}

?>

<form method="post" name="form1" action="goaction.php">
<input name="nom" type="text" class="box" value="<?php if(!empty($_POST['nom'])) echo $_POST['nom'];?>" size="41">
etc...
<input type="submit" value="Envoyer" name="envoyer">
</form>


Si tu mets ID, il fallait mettre "" dans ton inserto, si ton id est en autoincrement, pas besoin de mettre ID, et donc pas besoin de "", il faut garder l'ordre des champs.
Apres pour les petites erreurs, bon tu as du surement taper vite fait ton script et ca fait souvent ca ! ;)
Je t'ai rajouter ma facon a moi, apres chacun a la tienne ! Ce sont des conseils que m'ont donnée aussi des personnes, apres tu peux les suivres si tu en as envie.
Ciao,
I am singing in the rain , I am happy again !!
clicone
le 19/04/2006 à 20:29
clicone
Merci pour ta correction. Maintenant je recois Parse error: parse error... est qu'il ne manque pas un } quelque part ?
Si Dieu existe, j'espère qu'il a une bonne excuse -woody allen-
kronemburg
le 19/04/2006 à 21:34
kronemburg
<?php
if(isset($_POST['envoyer']) && $_POST['envoyer'] == "Envoyer")
{ // <== C'est ce bloque qui n'était pas fermé

if ((isset($_POST['ID']) // tu avais oublier une (
&& isset($_POST['nom'])
etc…
&& isset($_POST['adresse'])) {

//N'oublie pas ta connection mysql

$sql = 'INSERT INTO ma_table (ID, nom, adresse) VALUES(NULL,"'.$_POST['nom'].'", "'.$_POST['adresse'].'")';
// En auto-incrément tu peux aussi mettre NULL à la place de "",
//je pense même que c'est mieu. à savoir aussi,
//si tu donne toutes les valeurs de chaque colonne de ta table, pas besoin de "(ID, nom, adresse)"
mysql_query ($sql) or die ('Erreur SQL !'.$sql.''.mysql_error());

echo 'Bravo'; //tu as mis un ` , g rectifier

mysql_close();
//faire ta redirection;
}

} // <== La fermeture manquante

?>

<form method="post" name="form1" action="goaction.php">
<input name="nom" type="text" class="box" value="<?php if(!empty($_POST['nom'])) echo $_POST['nom'];?>" size="41">
etc...
<input type="submit" value="Envoyer" name="envoyer">
</form>
Kro kro kro kronemburg
Lefounard
le 20/04/2006 à 00:15
Lefounard
Salut,
Je suis désolé, j'ai pas tester le script et donc j'ai pas remarquer les { }, par contre pour les accolades, quand tu ouvres une accolade, tu va a la ligne, en indentant de 4 espaces (pour eviter les probleme d'affichage entre les editeurs php), ensuite tu vas a la ligne et tu mets ton bloc d'instruction.
Voila ca te permettra d'avoir un code plus lisible pour les autres personnes et donc une facilité plus accrue pour retrouver les erreurs. (ce sont des conseils lu dans un bouquin).
Bonne continuation.
Ciao,
I am singing in the rain , I am happy again !!
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours