Pbm code PHP pour formulaire et MySQL

Fermé
tytiway75 Messages postés 10 Date d'inscription jeudi 5 juillet 2007 Statut Membre Dernière intervention 28 septembre 2007 - 26 sept. 2007 à 15:05
tytiway75 Messages postés 10 Date d'inscription jeudi 5 juillet 2007 Statut Membre Dernière intervention 28 septembre 2007 - 28 sept. 2007 à 21:08
Bonjour à tous,

Je viens de réalisé un formulaire en HTML dont les réponses sont récupérées par un programme PHP pour intégrées ensuite une base de données MySQL.
Pour l'instant je test ce programme en reseau local et une erreur persiste dans mon code que je n'arrive pas a identifier.

Je precise que je debute a peine dans le langage PHP donc il est fort possible que mon code soit truffer d'erreur.

Je demande donc votre aide pour me permettre de faire fonctionner ce code.

Merci d'avance

Voici le code en question (j'ai volontairement enlever les valeur pour $user, $host, $password et $database.):


<?php
/*Nom du programme: test_form.php
*description: ce programme controle les champs du formulaire (zones vides, format incorrect)
*et envoie les informations dans la base de donnees associee
*/
?>

<html>
<head><title>test de champs</title>
</head>

<body>
<?php
/*Definir les champs a tester*/
$labels = array ("eleveNom" => "Nom",
"elevePrenom"=>"Prenom",
"eleveClasse"=>"Classe",
"elevePromo"=>"promo",
"eleveSection"=>"Section",
"eleveTheme"=>"Theme",
"elevePrix"=>"Prix",
"eleveVenue"=>"Venue",
"eleveMail"=>"mail");

foreach($_POST as $champ => $valeur)
{
//Controler tous les champs sauf la classe la promo et le theme
if($valeur=="")
{
if($champ!== "eleveClasse" and $champ=="elevepromo" and $champ=="eleveSection" and $champ=="eleveTheme" and $champ=="elevePrix" and $champ=="eleveVenue")
{
$tabloVide[$champ]="blanc";
}
}
elseif($champ=="Prenom" or $champ=="Nom" or $champ=="mail")
{
if (!ereg("/^.+\@[A-Za-z' -]{1,50}$",$_POST[$champ]) )
{
$mauvaisFormat[$champ]="mauvais";
}
}
}
//Fin de la boucle foreach pour $_POST

//Si un des champs est incorect, afficher un message
if(@sizeof($tablovide)>0 or @sizeof($mauvaisFormat)>0)
{
if(@sizeof($tabloVide)>0)
{
/*message pour information manquante*/
echo"<b> Un des champs n'a pas ete rempli. Vous devez saisir:
</b><br />";
/*affichage du nom des informations recquises*/
foreach($tabloVide as $champ => $valeur)
{
echo"   {$labels[$champ]}<br />";
}
/*Fin de la boucle foreach pour les champs vides */
}
if(@sizeof($mauvaisFormat)>0)
{
/*message pour information invalide*/
echo"<b>Un ou plusieurs champs contiennent des informations qui semblent incorrectes.
Corriger le format de:</b><br />";
/*affiche la liste des informations incorrectes*/
foreach($mauvaisFormat as $champ => $valeur)
{
echo"   {$labels[$champ]}<br />";
}
/*fin de la boucle foreach pour les informations incorrectes*/
}
/*reaffiche le formulaire*/
echo"<p>";
echo " <form action='$_SERVER[PHP_SELF]' method='POST'> <table>";
foreach($labels as $champ => $label)
{
$dataOk[$champ] = strip_tags(trim($_POST[$champ]) );
echo"<tr>
<td style='test-align: right; font-weight: bold'><br />
{$labels[$champ]}</td>
<td><input type='text' name='$champ' size='50' maxlength='50' value='$dataOk[$champ]'></td>
<td><input type='radio' name='$cle' value='$dataOk[$cle]'>
</td></tr>";
}
echo"<tr>
<td colspan='2' style='text-align: center'>
<input type='submit' value='envoyer'>";
echo"</td></tr></table></form>";
exit();
}
else //si les données sont ok
{
$host="";
$user="";
$password="";
$database="";
$cxn= mysqli_connect($host,$user,$password,$database)
or die("Connexion impossible");
$champsTous= array_keys($labels);
foreach($champsTous as $champ)
{
$dataOk[$champ]=strip_tags(trim($_POST[$champ]) );
$dataOk[$champ]=mysqli_real_escape_string($cxn,$dataOk[$champ]);
}
$req="INSERT INTO eleve (eleveNom,
elevePrenom,
eleveClasse,
elevePromo,
eleveSection,
eleveTheme,
elevePrix,
eleveVenue,
eleveMail)
VALUES('$dataOk[eleveNom]',
'$dataOk[elevePrenom]',
'$dataOk[eleveClasse]',
'$dataOk[elevePromo]',
'$dataOk[eleveSection]',
'$dataOk[eleveTheme]',
'$dataOk[elevePrix]',
'$dataOk[eleveVenue]',
'$dataOk[eleveMail]')";
$result=mysqli_query($cxn,$req)
or die ("Requete impossible");
echo"<h4>Les informations ont bien ete transmises </h4>";
}
?>

</body>
</html>
A voir également:

4 réponses

tytiway75 Messages postés 10 Date d'inscription jeudi 5 juillet 2007 Statut Membre Dernière intervention 28 septembre 2007
26 sept. 2007 à 15:08
J'ai oublier de vous dire l'erreur persistante:

cela m'indique que la requete est impossible et que des valeurs ne sont pas definiies donc l'erreur doit provenir de la requete $req=INSERT TO.... mais je ne m'y connais pas suffisemment pour regler ce probleme.

En esperant que quelqu'un puisse m'aider.

Merci d'avance
0
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
26 sept. 2007 à 21:53
Bsr

Ecrit la requête comme ceci :

$req="INSERT INTO eleve (eleveNom, 
elevePrenom, 
eleveClasse, 
elevePromo, 
eleveSection, 
eleveTheme, 
elevePrix, 
eleveVenue, 
eleveMail) 
VALUES('".$dataOk['eleveNom']."', 
'".$dataOk['elevePrenom']."', 
'".$dataOk['eleveClasse']."', 
'".$dataOk['elevePromo']."', 
'".$dataOk['eleveSection']."', 
'".$dataOk['eleveTheme']."', 
'".$dataOk['elevePrix']."', 
'".$dataOk['eleveVenue']."', 
'".$dataOk['eleveMail']."')"; 


Pour info PHP n'est capable de substituer que des noms de variables "simples" dans des chaînes de caractères délimitées par des guillemets.

De plus la syntaxe des tableaux associatifs requière que la clé d'un élément soit encadrée par ' ou par ".

0
tytiway75 Messages postés 10 Date d'inscription jeudi 5 juillet 2007 Statut Membre Dernière intervention 28 septembre 2007
26 sept. 2007 à 23:57
Merci pour le conseil et pour les infos je vais essayer ce que tu me conseil.
0
tytiway75 Messages postés 10 Date d'inscription jeudi 5 juillet 2007 Statut Membre Dernière intervention 28 septembre 2007
28 sept. 2007 à 21:08
Bonsoir,
malheureusement j'ai suivi votre conseil mais cela ne fonctionne pas. L'erreur persiste et em dit que les index sont non définis, je ne comprend toujours pas d'ou cela peut venir, si quelqu'un peut m'aider ce serait avec plaisir.

Merci d'avance
0