Ajout d'information dans une base a partir d'un formulaire

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Ajout d'information dans une base a partir d'un formulaire

par smarties » 11 juin 2005, 22:19

Tu peux aussi faire :

Code : Tout sélectionner

echo <<<FIN <form action="saisie.php" method="post"> Réponse : <input type="text" name="libeller" size="20"><br><br> <div align="center"><input type="submit" value="Envoyer"></div> </form> FIN;
Comme ca tu n'as plus de problème avec les apostrophes

par ouckileou » 11 juin 2005, 20:04

fais un echo de ta variable "libellé" tu verras déjà si tu l'as bien récupérée

tu as aussi des guillemets en trop dans ta requête j'ai l'impression
if (isset($_POST['submit'])) {
   // onvérifie que la variable libellé à été transmise
   // si non on lui affecte la valeur null pour éviter un warning
   $libelle = (isset($_POST['libelle']))?$_POST['libelle']:null;
   // affichage de contrôle
   echo ">>>".$libelle."<<<";

   $rep="INSERT INTO reponse values('','$libelle')";
    $reponse=mysql_query($rep) or die (mysql_error());
    }
tu peux aussi construire ta requête en précisant dans quels champs tu fais tes insertions, cela t'évites de devoir mettre des valauers vides pour les champs auto-incrémenté par exemple

Code : Tout sélectionner

INSERT INTO reponese (champ_libelle) VALUES ('$libelle')

par Cyrano » 11 juin 2005, 19:35

Si ce champ est une clé primaire auto_increment, tu ne peux pas: la numérotation est automatique et tu ne peux pas sauf en le forçant manuellelemt, mais à l'usage, ce n,est ni pratique ni vraiment utile. Ce numéro n'est qu'un point de repère et ne devrait en principe pas être utilisé autrement. Si en outre tu as d'autres table qu utilisent cette valeur en clé étrangère, tu risques à terme d'avoir de gros problèmes de liens si tu forces les clés primaires.

par Nadia » 11 juin 2005, 19:28

Au fait est ce que tu sais comment faire lors de la suppression d une ligne pour revenir au numero precedent? C'est a dire que si je sui a la ligne 5 et que je la supprime je veux que le prochain enregistrement soit le 5
Merci :oops:

par Nadia » 11 juin 2005, 19:25

ok merci
j ai fait ce que tu m as dis. je n ai plus d erreur seulement dans ma table le champs libelleR reste vide?
voila le code:
if (isset($_POST['submit']))  
   {
    $rep="insert into reponse values('','".$_POST['libeller']."')";
    $reponse=mysql_query($rep) or die (mysql_error()); 
	}
else
    echo '<form action="saisie.php" method="post"> 
    Réponse : <input type="text" name="libeller" size="20"><br><br>
    <div align="center"><input type="submit" value="Envoyer"></div> 
    </form>';
Que me conseille - tu?

par ouckileou » 11 juin 2005, 19:10

dans la correction que tu as faite il te faut échapper les guillemets contenus dans ta chaine sinon tu auras une erreur

ou alors l'entourer de guillemets simples

par Nadia » 11 juin 2005, 19:08

oui je m en sui rendu compte juste apres. merci
$rep="insert into reponse values('','".$_POST['libeller']."')";
$reponse=mysql_query($rep) or die (mysql_error()); 
echo "<form action="saisie.php" method="post"> 
 Réponse : <input type="text" name="libeller" size="20"><br><br>
 <div align="center"><input type="submit" value="Envoyer"></div> 
 </form>";

par ouckileou » 11 juin 2005, 19:05

il manque déjà des guillemets autour de la chaine envoyée par le echo

et met ton code entre balises php qu'on le voit mieux
$rep="insert into reponse values('','".$_POST['libeller']."')";
$reponse=mysql_query($rep) or die (mysql_error());
echo "<form action=\"saisie.php\" method=\"post\">
Réponse : <input type=\"text\" name=\"libeller\" size=\"20\"><br><br>
<div align=\"center\"><input type=\"submit\" value=\"Envoyer\"></div>
</form>;" 
plutôt que d'linsérer directement il faudrait tester que ta variable $_POST['libeller'] est bien transmise et éventuellement la formater (addslashes() par exemple)

car là tu fais l'insertion quoiqu'il arrive, avant d'afficher ton formulaire et même s'il n'a pas été posté

tu peux nommer ton bouton Envoyer avec name="submit
ce qui te renverra une variable "submit" en cas d'envoi de tonn formulaire

donc tu peux faire
if (isset($_POST['submit'])) {
   // insertion
} else {
   // affichage du formulaire
}

Ajout d'information dans une base a partir d'un formulaire

par Nadia » 11 juin 2005, 19:01

Salut,
Je débute en php et j ai un gros problème la :oops:
voila je dispose d'une table reponse qui contient les champs codeR (auto incremente) et libelleR( chaine de caractere)
je desire ajouté des ligne dans le champs libelleR a partir d un formulaire
voila le code que j ai ecris:

$rep="insert into reponse values('','".$_POST['libeller']."')";
$reponse=mysql_query($rep) or die (mysql_error());
echo <form action="saisie.php" method="post">
Réponse : <input type="text" name="libeller" size="20"><br><br>
<div align="center"><input type="submit" value="Envoyer"></div>
</form>;

et voici l erreur qu il me genere:
parse error, unexpected '<', expecting ',' or ';' in c:\program files\easyphp1-7\www\projet_certification\saisie.php

Svp si quelqu un sait comment m aider je vous en prie :(
Parce que serieux, ça fait 3 jours que je bloque dessus.
Je vous remercie