[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.
A voir également:

9 réponses

kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
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 825
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 857
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 825
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 825
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