[PHP] Aide Envoi/Reception Formulaire.

Fermé
tambs
Messages postés
2
Date d'inscription
jeudi 25 janvier 2007
Statut
Membre
Dernière intervention
25 janvier 2007
- 25 janv. 2007 à 06:07
Ssylvainsab
Messages postés
2884
Date d'inscription
samedi 29 juillet 2006
Statut
Modérateur
Dernière intervention
15 août 2020
- 28 janv. 2007 à 14:20
bonjour, étant joueur online, je désire faire un tableau pour ma guilde.
Un formulaire avec envoi de données.
Le problème est que j'ai aucune erreur après que envoi.php soit éxécuté mais pourtant il ne crée pas l'entrée dans la table.

Formulaire HTML :
************************************************
<html>
<body>
<form name="form1" method="post" action="envoi.php">
<p>
Perso :
<input type="text" name="textfield">
</p>
<p>Race :
<select name="Race">
<option value="None">None</option>
<option value="Goblin">Goblin</option>
<option value="Half Elf">Half Elf</option>
<option value="Kojani">Kojani</option>
<option value="Orc">Orc</option>
<option value="Wood Elf">Wood Elf</option>
<option value="Dark Elf">Dark Elf</option>
<option value="Gnome">Gnome</option>
<option value="Kurashasa">Kurashasa</option>
<option value="Mordebi">Mordebi</option>
<option value="Qalianthari">Qalianthari</option>
<option value="Varanthari">Varanthari</option>
<option value="Dwarf">Dwarf</option>
<option value="Halfling">Halfling</option>
<option value="High Elf">High Elf</option>
<option value="Lesser Giant">Lesser Giant</option>
<option value="Thestran">Thestran</option>
<option value="Vulmane">Vulmane</option>
<option value="Varanjar">Varanjar</option>
</select>
</p>
<p>
Classe :
<select name="Classe">
<option value="None">None</option>
<option value="Dread Knight">Dread Knight</option>
<option value="Paladin">Paladin</option>
<option value="Warrior">Warrior</option>
<option value="Bard">Bard</option>
<option value="Monk">Monk</option>
<option value="Ranger">Ranger</option>
<option value="Rogue">Rogue</option>
<option value="Blood Mage">Blood Mage</option>
<option value="Cleric">Cleric</option>
<option value="Disciple">Disciple</option>
<option value="Shaman">Shaman</option>
<option value="Druid">Druid</option>
<option value="Necromancer">Necromancer</option>
<option value="Psionicist">Psionicist</option>
<option value="Sorcerer">Sorcerer</option>
</select>
</p>
<p>Diplomatie :
<select name="Diplomatie">
<option value="None">None</option>
<option value="Bureaucrat">Bureaucrat</option>
<option value="Ringleader">Ringleader</option>
<option value="Arbiter">Arbiter</option>
<option value="Sage">Sage</option>
<option value="Firebrand">Firebrand</option>
<option value="Sophist">Sophist</option>
<option value="Con Artist">Con Artist</option>
<option value="Puppet Artist">Puppet Artist</option>
</select>
</p>
<p>Artisanat :
<select name="Artisanat">
<option value="None">None</option>
<option value="Blacksmith">Blacksmith</option>
<option value="Outfitter">Outfitter</option>
<option value="Artificer">Artificer</option>
<option value="Alchimist">Alchimist</option>
</select>
</p>
<p>Recolte :
<select name="Recolte">
<option value="None">None</option>
<option value="Foreman">Foreman</option>
<option value="Gleaner">Gleaner</option>
<option value="Reaper">Reaper</option>
<option value="Prospector">Prospector</option>
</select>
</p>
<p>
<input type="submit" name="Submit" value="Envoyer">
</p>
</form>
</body>
</html>

*******************************************************




Le fichier Envoi.php :
******************************************************

<?php

$db = mysql_connect("localhost","tambs","");
mysql_select_db("tambs_db",$db);




//requete d'insertion

$sql = "INSERT INTO Paragon_Roster (Perso,Race,Classe,Diplomatie,Artisanat,Recolte) VALUES ('$Perso','$Race','$Classe','$Diplomatie','$Artisanat','$Recolte')";


?>

*********************************************************


Si quelqu'un pouvait m'aider, ce serait gentil.
Merci d'avance.

p.s: les noms des champs sont bien les mêmes que ceux de ma base.

9 réponses

kij_82
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
856
25 janv. 2007 à 10:45
Normal que ca ne fonctionne pas, il faut que tu prenne tes données via $_POST dans ton fichier de traitement php.

Voilà qui devrait mieux fonctionner :
<?php 

$db = mysql_connect("localhost","tambs",""); 
mysql_select_db("tambs_db",$db); 


//requete d'insertion 

$sql = "INSERT INTO Paragon_Roster (Perso,Race,Classe,Diplomatie,Artisanat,Recolte) VALUES ('".$_POST["Perso"]."','".$_POST["Race"]."','".$_POST["Classe"]."','".$_POST["Diplomatie"]."','"._POST["$Artisanat"]."','".$_POST["Recolte"]."')"; 

// --- Ajout :
@mysql_query($sql,$db);


?> 

0
thifoolish
Messages postés
79
Date d'inscription
jeudi 11 janvier 2007
Statut
Membre
Dernière intervention
11 juillet 2008
18
25 janv. 2007 à 11:09
Bonjour,

Quand on utilise la méthode POST dans un formulaire,
pour récupérer les variables on utilisera la syntaxe suivante :
$_POST['mavariable'];

afin de récupérer la valeur contenue dans le formulaire.

Idem pour la méthode GET,
$_GET['mavariable'];


Sans le $ devant mavariable sinon ça va encore bugger, lol.
Cordialement.
0
Ssylvainsab
Messages postés
2884
Date d'inscription
samedi 29 juillet 2006
Statut
Modérateur
Dernière intervention
15 août 2020
824
25 janv. 2007 à 14:14
Salut.

C'est la pire chose que tu puisses faire à ton site, en ne vérifiant aucune variable $_POST...

Reportes-toi à ce message :
php envoi de formulaires par mail#5
0
tambs
Messages postés
2
Date d'inscription
jeudi 25 janvier 2007
Statut
Membre
Dernière intervention
25 janvier 2007

25 janv. 2007 à 14:40
Merci.
J'ai un nouveau problème.
Tous les champs sont envoyés sauf deux:
Le champ "Perso" et le champ "Artisanat".
Je vous remets mon formulaire et le fichier php :


Le formulaire:
****************************************
<body>
<form name="form1" method="post" action="envoi.php">
<p>
Perso :
<input type="text" name="textfield">
</p>
<p>Race :
<select name="Race">
<option value="None">None</option>
<option value="Goblin">Goblin</option>
<option value="Half Elf">Half Elf</option>
<option value="Kojani">Kojani</option>
<option value="Orc">Orc</option>
<option value="Wood Elf">Wood Elf</option>
<option value="Dark Elf">Dark Elf</option>
<option value="Gnome">Gnome</option>
<option value="Kurashasa">Kurashasa</option>
<option value="Mordebi">Mordebi</option>
<option value="Qalianthari">Qalianthari</option>
<option value="Varanthari">Varanthari</option>
<option value="Dwarf">Dwarf</option>
<option value="Halfling">Halfling</option>
<option value="High Elf">High Elf</option>
<option value="Lesser Giant">Lesser Giant</option>
<option value="Thestran">Thestran</option>
<option value="Vulmane">Vulmane</option>
<option value="Varanjar">Varanjar</option>
</select>
</p>
<p>
Classe :
<select name="Classe">
<option value="None">None</option>
<option value="Dread Knight">Dread Knight</option>
<option value="Paladin">Paladin</option>
<option value="Warrior">Warrior</option>
<option value="Bard">Bard</option>
<option value="Monk">Monk</option>
<option value="Ranger">Ranger</option>
<option value="Rogue">Rogue</option>
<option value="Blood Mage">Blood Mage</option>
<option value="Cleric">Cleric</option>
<option value="Disciple">Disciple</option>
<option value="Shaman">Shaman</option>
<option value="Druid">Druid</option>
<option value="Necromancer">Necromancer</option>
<option value="Psionicist">Psionicist</option>
<option value="Sorcerer">Sorcerer</option>
</select>
</p>
<p>Diplomatie :
<select name="Diplomatie">
<option value="None">None</option>
<option value="Bureaucrat">Bureaucrat</option>
<option value="Ringleader">Ringleader</option>
<option value="Arbiter">Arbiter</option>
<option value="Sage">Sage</option>
<option value="Firebrand">Firebrand</option>
<option value="Sophist">Sophist</option>
<option value="Con Artist">Con Artist</option>
<option value="Puppet Artist">Puppet Artist</option>
</select>
</p>
<p>Artisanat :
<select name="Artisanat">
<option value="None">None</option>
<option value="Blacksmith">Blacksmith</option>
<option value="Outfitter">Outfitter</option>
<option value="Artificer">Artificer</option>
<option value="Alchimist">Alchimist</option>
</select>
</p>
<p>Recolte :
<select name="Recolte">
<option value="None">None</option>
<option value="Foreman">Foreman</option>
<option value="Gleaner">Gleaner</option>
<option value="Reaper">Reaper</option>
<option value="Prospector">Prospector</option>
</select>
</p>
<p>
<input type="submit" name="Submit" value="Envoyer">
</p>
</form>
</body>

*************************************************





le fichier envoi.php
*************************************************
<?php

$db = mysql_connect("localhost","tambs","");
mysql_select_db("tambs_db",$db);




//requete d'insertion

$sql = "INSERT INTO Paragon_Roster (Perso,Race,Classe,Diplomatie,Artisanat,Recolte) VALUES ('".$_POST["Perso"]."','".$_POST["Race"]."','".$_POST["Classe"]."','".$_POST["Diplomatie"]."','".$_POST["$Artisanat"]."','".$_POST["Recolte"]."')";

// --- Ajout :
@mysql_query($sql,$db);

?>

*********************************************************




Pouvez vous m'aider pour savoir pourquoi ces 2 champs ne sont pas encoyés.
Merci encore de votre aide.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kij_82
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
856
25 janv. 2007 à 17:45
remplace :
<input type="text" name="textfield"> 

par :
<input type="text" name="Perso"> 


et vire le '$' de :
["$Artisanat"]."
dans la requete.

Sinon, comme l'a dit Ssylvainsab, la solution que je t'ai donné est la pire, même si elle fonctionne, car tu ne vérifie pas les donnés réceptionnées...

Apres ca, il te reste à vérifier via une fonction javascript les données envoyées, et les vérifier dans ton script PHP de traitement. Sans quoi tu risque de te faire corrompre ta base de données facilement...
0
Ssylvainsab
Messages postés
2884
Date d'inscription
samedi 29 juillet 2006
Statut
Modérateur
Dernière intervention
15 août 2020
824
25 janv. 2007 à 20:52
Utilises ce code dans le fichier envoi.php :
<?php
$db = mysql_connect("localhost","tambs","");
mysql_select_db("tambs_db",$db);

  if(get_magic_quotes_gpc())
    foreach($_POST as $valeur)
      $valeur=stripslashes($valeur);
  foreach($_POST as $valeur)
    $valeur=mysql_real_escape_string($valeur);

extract($_POST);
//requete d'insertion

$sql='INSERT INTO Paragon_Roster(Perso,Race,Classe,Diplomatie,Artisanat,Recolte) '.
     "VALUES('$Perso','$Race','$Classe','$Diplomatie','$Artisanat','$Recolte')";

// --- Ajout :
mysql_query($sql,$db);
?>

Pour les explications voir le post donné plus haut :
php envoi de formulaires par mail#5
0
Conan28
Messages postés
135
Date d'inscription
dimanche 5 novembre 2006
Statut
Membre
Dernière intervention
17 octobre 2009
136
27 janv. 2007 à 17:30
Aussi, quand tu affiche, n'oublie pas un coup d'htmlspecialchars ;)
0
thifoolish
Messages postés
79
Date d'inscription
jeudi 11 janvier 2007
Statut
Membre
Dernière intervention
11 juillet 2008
18
27 janv. 2007 à 23:35
Bonsoir,

Je dirais même plus ! Un gros coup d'htmlentities... Pour éviter d'avoir à trier tout cela... Lol !

Mais là déjà ton script est presque totalement pondu (par Sylv et par kij)
Plus qu'un bon design et hop en ligne...
Enfin, teste les vars avant de publier, on ne sait jamais qui passe sur un site, et la prudence est obligatoire avec une db.

Bonne nuit.
0
Ssylvainsab
Messages postés
2884
Date d'inscription
samedi 29 juillet 2006
Statut
Modérateur
Dernière intervention
15 août 2020
824
28 janv. 2007 à 14:20
Un htmlentities ?
Pourquoi faire ?
un htmlspecialchars ENT_NOQUOTES + mysql_real_escape_string fonctionne très bien et c'est la meilleure solution selon moi.
0