[ Newbie en PHP/MySQL ] Faire un formulaire

Faire un formulaire [ Newbie en PHP/MySQL ] - Programmation

Marsh Posté le 17-02-2002 à 19:33:34    

Voilà, j'ai crée ma table avec mon contenu et tout, ca s'affiche sur ma page, ok.
 
Maintenant je voudrais, via un formulaire simple, ajouter des infos à la base.
 
Vous avez un formulaire type à me proposer ??
 
Il y a deux champs à ajouter ( "ID" et "infos" ) et il faudrait que après validation, il y aie une page de confirmation.

 

[jfdsdjhfuetppo]--Message édité par Pinzo--[/jfdsdjhfuetppo]


---------------
“I'll thank you very much.”
Reply

Marsh Posté le 17-02-2002 à 19:33:34   

Reply

Marsh Posté le 17-02-2002 à 19:51:48    

UP ca urge. J'ai un modèle de formulaire mais il passe par un ajout_verif.php pour la vérification.
 
C'est possible de faire sans ?


---------------
“I'll thank you very much.”
Reply

Marsh Posté le 17-02-2002 à 20:08:10    

tu utilise les requetes sql pour ajouter

 

[jfdsdjhfuetppo]--Message édité par deathsharp--[/jfdsdjhfuetppo]


---------------
What butter and whiskey won't cure, there is no cure for.
Reply

Marsh Posté le 17-02-2002 à 20:13:55    

Ok, mais explique-moi ca plus clairement, je débute totalement. :)


---------------
“I'll thank you very much.”
Reply

Marsh Posté le 17-02-2002 à 20:35:58    

Dans la page de réception du formulaire, tu as des variables correspondant aux champs du formulaire. Si ces champs s'appellent ID et infos dans le formulaire, tu auras des variables $ID et $infos. Suffit de les traiter dans ton formulaire et de contruire la requete.
$requete = "INSERT INTO table(ID, infos) VALUES('$ID', '" . addslashes($infos) . "';)";
$ok = mysql_query($requete);
 
Le addslashes permet de traiter les caractères qui pourraient poser problème dans le cas d'une chaine de caractère.
 
Normalement, c'est pas très 'propre' de récupérer les champs directement en variables globales, mais pour débuter, c'est suffisant.

Reply

Marsh Posté le 17-02-2002 à 20:40:13    

Merci mais euh... pas tout compris. Voilà mon formulaire de base généré dans Frontpage :

Code :
  1. <form method="POST" action="--WEBBOT-SELF--">
  2.   <p><input type="text" name="T1" size="45"></p>
  3.   <p><input type="submit" value="Envoyer" name="B1"><input type="reset" value="Rétablir" name="B2"></p>
  4. </form>


 
Où est-ce que j'insère ton code PHP là-dedans ?


---------------
“I'll thank you very much.”
Reply

Marsh Posté le 17-02-2002 à 20:43:39    

dant la valeur option de <FORM> il faut mettre ta page de traitement (ca peut etre la page en cours) c'est sur cette page que tu traite les donnée

Reply

Marsh Posté le 17-02-2002 à 20:46:25    

Ok.
 
Et ca je dois le mettre où ?

Code :
  1. $requete = "INSERT INTO table(ID, infos) VALUES('$ID', '" . addslashes($infos) . "')";
  2. $ok = mysql_query($requete);


---------------
“I'll thank you very much.”
Reply

Marsh Posté le 17-02-2002 à 20:49:41    

Voilà ma page toute simple :

Code :
  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
  4. <title>Formulaire</title>
  5. </head>
  6. <body>
  7. <?
  8. $requete = "INSERT INTO table(ID, themes) VALUES('$ID', '" . addslashes($themes) . "')"; 
  9. $ok = mysql_query($requete);
  10. ?>
  11. <form method="POST" action="ajouter.php">
  12. <p><input type="themes" name="themes" size="45"></p>
  13. <p><input type="send" value="Envoyer" name="B1"><input type="reset" value="Rétablir" name="B2"></p>
  14. </form>
  15. </body>
  16. </html>


 
Est-ce que ca joue ? Bon, je teste. :)


---------------
“I'll thank you very much.”
Reply

Marsh Posté le 17-02-2002 à 20:59:23    

Citation :


 
<form method="post" name="poste">
  <p> artiste:  
    <input type="text" name="artiste">
  </p>
  <p> genre:  
    <input type="text" name="genre">
  </p>
  <p> Taille:  
    <input type="text" name="taille">
  </p>
  <p> Dir:  
    <input type="text" name="dir">
  </p>
  <p>  
    <input type="submit" name="submit" value="Envoyer">
  </p>
</form>
 
<?  
if($submit)
{
require("connect.php" );
$result="INSERT INTO idtag (artiste, chanson, genre, taille, dir) VALUES ('$artiste', '$chanson', '$genre', '$taille', '$dir';)";
mysql_query($result);
mysql_close();
}
?>


Ex de truk a la con poor ajoote des infos sur mes mp3 ds la base :D

Reply

Marsh Posté le 17-02-2002 à 20:59:23   

Reply

Marsh Posté le 17-02-2002 à 21:01:50    

Ok j'essaie. :)


---------------
“I'll thank you very much.”
Reply

Marsh Posté le 17-02-2002 à 21:11:45    

Nop elle marche pas ta solution. La tienne non plus Bjbebert ! Ou alors je sais pas m'y prendre... :sarcastic:


---------------
“I'll thank you very much.”
Reply

Marsh Posté le 17-02-2002 à 21:18:42    

UP ? :)


---------------
“I'll thank you very much.”
Reply

Marsh Posté le 17-02-2002 à 21:24:00    

Pinzo a écrit a écrit :

Nop elle marche pas ta solution. La tienne non plus Bjbebert ! Ou alors je sais pas m'y prendre... :sarcastic:  




Faut adapte a tes besoins hein! :D

Reply

Marsh Posté le 17-02-2002 à 21:25:48    

plouf02 a écrit a écrit :

 
Faut adapte a tes besoins hein! :D  



:heink:


---------------
“I'll thank you very much.”
Reply

Marsh Posté le 17-02-2002 à 21:40:11    

UP ? [:wam]


---------------
“I'll thank you very much.”
Reply

Marsh Posté le 17-02-2002 à 21:58:48    

bon detaillons:
 
tu a une page plop.php ok?
 
<form method="POST" action="plop.php">
 <p><input type="text" name="T1" size="45"></p>
 <p><input type="submit" value="Envoyer" name="B1"><input type="reset" value="Rétablir" name="B2"></p>
</form>
 
juste avant ca tu met un truc genr  
 
<?
if (isset(T1))
{
$requete = "INSERT INTO table(info) VALUES('".addslashes($T1)."';)";  
$ok = mysql_query($requete);  
}
?>

Reply

Marsh Posté le 17-02-2002 à 22:46:54    

Pinzo a écrit a écrit :

:heink:  




Tu l'as modifie poor ton usage?
PArce ke je te l'ai donne tel ke je l'ai moi

Reply

Marsh Posté le 17-02-2002 à 23:22:12    

Pinzo a écrit a écrit :

Voilà ma page toute simple :

Code :
  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
  4. <title>Formulaire</title>
  5. </head>
  6. <body>
  7. <?
  8. $requete = "INSERT INTO table(ID, themes) VALUES('$ID', '" . addslashes($themes) . "')"; 
  9. $ok = mysql_query($requete);
  10. ?>
  11. <form method="POST" action="ajouter.php">
  12. <p><input type="themes" name="themes" size="45"></p>
  13. <p><input type="send" value="Envoyer" name="B1"><input type="reset" value="Rétablir" name="B2"></p>
  14. </form>
  15. </body>
  16. </html>





Non, faut deux pages différentes.
T'as une page avec le formulaire, qui est posté vers une autre page (on peut tout mettre dans la même mais on va pas compliquer).
C'est dans la page de réception que tu as les variables correspondant aux champs du formulaire posté.
 
PS : c'est quoi ce type : type="themes" ??

Reply

Marsh Posté le 17-02-2002 à 23:25:50    

Y a un gars sur les forums de ALL HTML.com qui m'a filé un code meilleur.
 
form.php

Code :
  1. <form action="insert.php" method="post">
  2. Champ 1 : <input type="text" name="champ1"><br>
  3. Champ 2 : <input type="text" name="champ2"><br>
  4. <input type="submit" value="Valider">
  5. </form>


 
insert.php

Code :
  1. <?
  2. // les champs ont-ils bien ete remplis ?  
  3. if(!empty($champ1) AND !empty($champ2))
  4. {
  5. // parametres de connexion  
  6. $sql_server="TON SERVEUR";
  7. $sql_user="TON LOGIN";
  8. $sql_pass="TON PASS";
  9. $sql_bdd="LE NOM DE TA BDD";
  10. // connexion  
  11. $db=mysql_connect($sql_server,$sql_user,$sql_pass);
  12. mysql_select_db($sql_bdd,$db);
  13. // requete  
  14. $sql="INSERT INTO ma_table (champ1,champ2) VALUES ('".$champ1."','".$champ2."')";
  15. $query=mysql_query($sql,$db) or die("Erreur !<br>".mysql_error());
  16. // affichage d'un message  
  17. echo "L'insertion s'est bien déroulée";
  18. }
  19. else
  20. {
  21. // si un des champs est vide  
  22. // on affiche un msg d'erreur  
  23. // et on re-affiche le formulaire  
  24. echo "Vous devez remplir tous les champs !";
  25. echo "<form action=\"insert.php\" method=\"post\">
  26. Champ 1 : <input type=\"text\" name=\"champ1\" value=\"".$champ1."\"><br>
  27. Champ 2 : <input type=\"text\" name=\"champ2\" value=\"".$champ2."\"><br>
  28. <input type=\"submit\" value=\"Valider\">
  29. </form>";
  30. }
  31. ?>


 
Ca marche pil poil. :p
 
-------------------------------------------
 
Cependant j'ai encore un problème. Toutes mes entrées de la base s'affichent les unes après les autres sur la même ligne et sans espace dans ma page.
 
Par ex. elles s'affichent comme ca :
 
Entree1Entree2Entree3     (puces comprises)
 
Alors que je voudrais qu'elles devraient s'afficher comme ca :
 

  • Entree1
  • Entree2
  • Entree3


Comment faire ? C'est dans ma page où elles s'affichent que je fois modifier ca ? La voici :

Code :
  1. <?
  2. $myhote="localhost";
  3. $myuser="root";
  4. $mypass="";
  5. $base_id = mysql_connect($myhote, $myuser,$mypass);
  6. if (!$base_id)
  7. {
  8. echo "Connexion à la base de données impossible !";
  9. }
  10. $mybase="testing";
  11. if (! mysql_select_db("$mybase",$base_id))
  12. {
  13. echo "Impossible de sélectionner la base de données !";
  14. }
  15. $query="SELECT * FROM MyNewsInfos";
  16. $resultat=mysql_query($query,$base_id);
  17. if (!$resultat)
  18. {
  19. echo "Impossible d'exécuter la requête !";
  20. }
  21. while ($ligne=mysql_fetch_array($resultat))
  22. {
  23. // Affichage d'une ligne
  24. echo $ligne["themes"];
  25. }
  26. ?>


 
Aidez-moi please. :)

 

[jfdsdjhfuetppo]--Message édité par Pinzo--[/jfdsdjhfuetppo]


---------------
“I'll thank you very much.”
Reply

Marsh Posté le 17-02-2002 à 23:30:14    

pas compliqué, le code html pour est  
<ul>
<li>texte</li>
<li>texte</li>
</ul>
 
donc :
 
 
echo '<ul>';
while ($ligne=mysql_fetch_array($resultat))  
{  
// Affichage d'une ligne  
echo '<li>' . $ligne["themes"] . '</li>';  
}  
echo '</ul>';

 

[jfdsdjhfuetppo]--Message édité par youdontcare--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 17-02-2002 à 23:31:59    

Si tu as ca :
 
<html>
<head><title>Formulaire</title></head>
<body>
<form method="POST" action="RecvForm.php">
<input type="text" name="texte1" ><br>
<input type="send" value="Envoyer">
</form>
</body>
</html>
 
Dans la page RecvForm.php, tu recupere $texte1 :
 
<html>
<head><title>Reception formulaire</title></head>
<body>
valeur de texte1 : <?echo $texte1?> <br>
 
<? // insertion dans la base
require("connect.php" ); // la tu mets tes parametres de connection et de selection de la base de donnees
$requete = "INSERT INTO nom_table(nom_champ) VALUES ('" . addslashes($texte1) . "';)";
$ok = mysql_query($requete);
?>
 
requete executee : <?echo htmlspecialchars($requete)?> <br>
resultat : <?echo $ok?> <br>
<?if (! $ok) echo "Erreur durant la requete" else echo "requete OK"?>
</body>
</html>
 
Pas teste, mais ca devrait passer a peu pres.

Reply

Marsh Posté le 17-02-2002 à 23:40:37    

youdontcare a écrit a écrit :

pas compliqué, le code html pour est  
<ul>
<li>texte</li>
<li>texte</li>
</ul>
 
donc :
 
 
echo '<ul>';
while ($ligne=mysql_fetch_array($resultat))  
{  
// Affichage d'une ligne  
echo '<li>' . $ligne["themes"] . '</li'>;  
}  
echo '</ul'>';  



J'ai une parse error à la ligne 29 :(


---------------
“I'll thank you very much.”
Reply

Marsh Posté le 17-02-2002 à 23:43:48    

Nop, j'ai compris.
 
echo '<ul>';
while ($ligne=mysql_fetch_array($resultat))  
{  
// Affichage d'une ligne  
echo '<li>' . $ligne["themes"] . '</li>';  (le " ' " va après le " > " )
}
echo '</ul>';
 
Merci à tous ! :) :hello:

 

[jfdsdjhfuetppo]--Message édité par Pinzo--[/jfdsdjhfuetppo]


---------------
“I'll thank you very much.”
Reply

Marsh Posté le 17-02-2002 à 23:44:43    

youdontcare a écrit a écrit :

 
echo '<ul>';
while ($ligne=mysql_fetch_array($resultat))  
{  
// Affichage d'une ligne  
echo '<li> . $ligne["themes"] . </li'>;  
}  
echo '</ul>';  




je pense ke c bon :o

Reply

Marsh Posté le 17-02-2002 à 23:56:08    

ouuups ... j'ai édité :D

Reply

Marsh Posté le 18-02-2002 à 00:29:48    

C'est bon j'ai réussi. :)
Tout fonctionne à la perfection. Maintenant, place à la personnalisation de "l'environement".
 
:hello:


---------------
“I'll thank you very much.”
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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