Requete de formulaire html vers base de données
squaria
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
Bon j'ai passer 2 jours dessus je suis crever donc je vais être direct : voila ce que je veux faire : Envoi du formulaire (qui est dans index.php) vers le fichier de traitement (load_join.php) -> déclarer les names du formulaire et les envoyer dans la table (infos) // Ensuite j'aimerai recuperer les données de la table et les inscrires dans un tableau qui est dans le ficher (G2SOI8ZJ2Q9JOIN.php) "Vous inquieter pas du nom du fichier c'est pour pas qu'il soit trouvable".
Bon actuellement je suis rendu a une page blanche dans load_join.php, il n'y a rien dans la table infos et une syntax error, unexpected 'name' (T_STRING), expecting ',' or ';' dans G2SOI8ZJ2Q9JOIN.php.
Voila le code :
dans index.php (la ou est le formulaire)
Ensuite connect.php (je vous en est pas parler mais c'est la ou il y a mysqli_connect)
Ensuite load_join.php (qui sert a envoyer les donnees du formulaire a la base de donnees)
Et pour finir G2SOI8ZJ2Q9JOIN.php (pour afficher un beau tableau de la table infos)
Bon actuellement je suis rendu a une page blanche dans load_join.php, il n'y a rien dans la table infos et une syntax error, unexpected 'name' (T_STRING), expecting ',' or ';' dans G2SOI8ZJ2Q9JOIN.php.
Voila le code :
dans index.php (la ou est le formulaire)
<form method="post" action="../info/load_join.php" enctype='multipart/form-data'> <input type="hidden" name="tablename" value="userlist"> <fieldset> <legend>Your information :<br /><br /></legend> <label for="name">Your name : </label><input name="name" id="name" maxlength=32 type="text" placeholder="Ex : Valerie Castaignede" /><br /><br /> <label for="email">Your email : </label><input name="email" id="email" maxlength=64 type="email" placeholder="***@***" /><br /><br /> <label for="job">Your job : <br /></label><textarea name="job" id="job" placeholder="Ex : Architect" class="textarea"></textarea><br /><br /> <label for="intention">Your intention : <br /></label><textarea name="intention" id="intention" placeholder="Ex : " class="textarea"></textarea><br /><br /> <label for="pays">Where are you from ? : </label><br /> <[/contents/1068-sql-commande-select select] name="pays" id="pays"> <optgroup label="Europe"> <option value="france">United Kingdom</option> <option value="royaume-uni">France</option> <optgroup label="America"> <option value="canada">Canada</option> <option value="etats-unis">U.S.A</option> </select><br /><br /> <input type="submit" value="Submit" name="submit" /> </fieldset> </form>
Ensuite connect.php (je vous en est pas parler mais c'est la ou il y a mysqli_connect)
// on se connecte à notre base if($[/contents/104-bases-de-donnees-introduction bdd] = mysqli_connect('[/contents/523-adresse-ip localhost]', 'squaria', '.............', 'info')) { // Si la connexion a réussi, rien ne se passe. } else // Mais si elle rate… { echo 'Erreur'; // On affiche un message d'erreur. }
Ensuite load_join.php (qui sert a envoyer les donnees du formulaire a la base de donnees)
<?php session_start(); include('connect.php'); // lancement de la requete ini_set('error_reporting', 2147483647); ini_set('display_errors', '1'); if (isset($_POST["submit"])) { $b_name=$_POST["name"]; $b_email=$_POST["email"]; $b_job=$_POST["job"]; $b_intention=$_POST["intention"]; $b_pays=$_POST["pays"]; $query="INSERT INTO infos (name,email,job,intention,pays) VALUES('$b_name','$b_email','$b_job','$b_pays')"; if (mysqli_query($query)) { echo '<br/><span style="color:red">Mise à jour effectuée avec succès</span>'; //header('Location:addActu2.php'); } else { echo '<br/><span>Erreur de mise à jour: '.mysql_error().'</span>'; } } ?>
Et pour finir G2SOI8ZJ2Q9JOIN.php (pour afficher un beau tableau de la table infos)
<?php include('connect.php'); try { $requete = mysqli_query($bdd, 'SELECT name, email, job, intention, pays FROM infos'); while($data = mysqli_fetch_assoc($requete)) { ?> <table> <caption>Liste des équipiers du projet</caption> <tr id="entete_tableau_join"> <th>Nom</th> <th>Email</th> <th>Job</th> <th>intention</th> <th>pays</th> </tr> <tr id="ligne_tableau_join"> <td class="case_tableau_join"><?php echo '$data['name']' ?> </td> <td class="case_tableau_join"><?php echo '$data['email']' ?> </td> <td class="case_tableau_join"><?php echo '$data['job']' ?> </td> <td class="case_tableau_join"><?php echo '$data['intention']' ?> </td> <td class="case_tableau_join"><?php echo '$data['pays']' ?> </td> </tr> </table> <?php } $requete->closeCursor(); echo "données reçue"; } catch(Exception $e) { die('Erreur : '.$e->getMessage()); echo "données non reçue"; } ?>
A voir également:
- Requete de formulaire html vers base de données
- Whatsapp formulaire opposition - Guide
- Fuite données maif - Guide
- Formulaire de réclamation facebook - Guide
- Base de registre - Guide
- Formulaire de reclamation instagram - Guide
3 réponses
Bonjour,
je suis loin d'être un pro de php, mais dans ton load_join.php, tu mets :
Tu n'insères pas dans ton VALUES le champ 'intention'.
Je ne sais pas si cela vient de là, mais c'est la première chose qui m'a sauté au yeux.
A+
je suis loin d'être un pro de php, mais dans ton load_join.php, tu mets :
if (isset($_POST["submit"])) { $b_name=$_POST["name"]; $b_email=$_POST["email"]; $b_job=$_POST["job"]; $b_intention=$_POST["intention"]; $b_pays=$_POST["pays"]; $query="INSERT INTO infos (name,email,job,intention,pays) VALUES('$b_name','$b_email','$b_job','$b_pays')";
Tu n'insères pas dans ton VALUES le champ 'intention'.
Je ne sais pas si cela vient de là, mais c'est la première chose qui m'a sauté au yeux.
A+
Il s'arrete a name mais sa vaut aussi pour les autres puisqu'il sont parreils
<td class="case_tableau_join"><?php echo '$data['name']' ?> </td> <td class="case_tableau_join"><?php echo '$data['email']' ?> </td> <td class="case_tableau_join"><?php echo '$data['job']' ?> </td> <td class="case_tableau_join"><?php echo '$data['intention']' ?> </td> <td class="case_tableau_join"><?php echo '$data['pays']' ?> </td>
non j'ai enlever le head mais sinon oui
le fichier en entier
le fichier en entier
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Liste équipiers</title> <link rel="stylesheet" href="../style/style.css" /> </head> <body> <?php include('connect.php'); try { $requete = mysqli_query($bdd, 'SELECT name, email, job, intention, pays FROM infos'); while($data = mysqli_fetch_assoc($requete)) { ?> <table> <caption>Liste des équipiers du projet</caption> <tr id="entete_tableau_join"> <th>Nom</th> <th>Email</th> <th>Job</th> <th>intention</th> <th>pays</th> </tr> <tr id="ligne_tableau_join"> <td class="case_tableau_join"><?php echo '$data['name']' ?> </td> <td class="case_tableau_join"><?php echo '$data['email']' ?> </td> <td class="case_tableau_join"><?php echo '$data['job']' ?> </td> <td class="case_tableau_join"><?php echo '$data['intention']' ?> </td> <td class="case_tableau_join"><?php echo '$data['pays']' ?> </td> </tr> </table> <?php } $requete->closeCursor(); echo "données reçue"; } catch(Exception $e) { die('Erreur : '.$e->getMessage()); echo "données non reçue"; } ?> </body> </html>
Bonjour,
Déjà...
1- $myrow n'existe pas ou j'ai mal vu .. ici ça serait plutôt : $data que tu devrais utiliser
2 - Tu as une accolade en trop visiblement
3 -
Que viennent faire les quotes autour de ta variable php ??
Tu aurais plutôt du écrire :
nb: il manquait aussi un point-virgule.
nb² : A faire aussi sur tes autres lignes de code
4 - Pour finir... penses à récupérer PROPREMENT tes variables AVANT de les utiliser.
Ceci est valable pour toutes les variables tableau ( POST / GET / SESSION / COOKIE .. et même les résultats du fetch.
Regarde ici comment faire : https://forums.commentcamarche.net/forum/affich-37636387-php-notice-undefined-index
Déjà...
/* now you can fetch the results into an array - NICE */ while ($data = $result->fetch_assoc()) { // use your $myrow array as you would with any other fetch printf("%s is in district %s\n", $city, $myrow['district']); { echo "test";
1- $myrow n'existe pas ou j'ai mal vu .. ici ça serait plutôt : $data que tu devrais utiliser
2 - Tu as une accolade en trop visiblement
3 -
<td class="case_tableau_join"> <?php echo '$data["name"]' ?> </td>
Que viennent faire les quotes autour de ta variable php ??
Tu aurais plutôt du écrire :
<td class="case_tableau_join"> <?php echo $data["name"]; ?> </td>
nb: il manquait aussi un point-virgule.
nb² : A faire aussi sur tes autres lignes de code
4 - Pour finir... penses à récupérer PROPREMENT tes variables AVANT de les utiliser.
Ceci est valable pour toutes les variables tableau ( POST / GET / SESSION / COOKIE .. et même les résultats du fetch.
Regarde ici comment faire : https://forums.commentcamarche.net/forum/affich-37636387-php-notice-undefined-index
Merci de m'avoir donné une réponse aussi claire bon déjà sa je l'ai fait à la va vite par ce qu'il etait tard donc désolé pour les erreurs. Ensuite pour le point virgule on m'a dit sur un autre forum qu'elle était facultatif dans cette situation mais c'est vrai que je ne les ai pas écouté pour ça ^^. Bon l'à je vais tout faire ce que tu m'à demandé et je te donne les résultats ^^
Le message est clair ....
Tu n'as pas le même nombre de variables dans ta requête que dans le bind_param.
Autrement dit : Dans ta requête... tu n'as pas de WHERE .... donc 0 variables....
Pourquoi mettre un Bind_param alors ?
Tu n'as pas le même nombre de variables dans ta requête que dans le bind_param.
$requete = mysqli_prepare($bdd, "SELECT name, email, job, intention, pays FROM infos")) { /* Lecture des marqueurs */ mysqli_stmt_bind_param($requete, "s", $city);
Autrement dit : Dans ta requête... tu n'as pas de WHERE .... donc 0 variables....
Pourquoi mettre un Bind_param alors ?
J'ai changé beaucoup de choses
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Liste équipiers</title> <link rel="stylesheet" href="../style/style.css" /> </head> <body> <?php include('connect.php'); $name = isset($_GET['name']) ? $_GET['name'] : NULL; $email = isset($_GET['email']) ? $_GET['email'] : NULL; $job = isset($_GET['job']) ? $_GET['job'] : NULL; $intention = isset($_GET['intention']) ? $_GET['intention'] : NULL; $pays = isset($_GET['pays']) ? $_GET['pays'] : NULL; /* Crée une requête préparée */ if ($requete = mysqli_prepare($bdd, "SELECT name, email, job, intention, pays FROM infos")) { /* Lecture des marqueurs */ mysqli_stmt_bind_param($requete, "s", $name, $email, $job, $intention, $pays); /* Exécution de la requête */ mysqli_stmt_execute($requete); /* bind parameters for markers */ $requete->bind_param("s", $name, $email, $job, $intention, $pays); /* execute query */ $requete->execute(); /* instead of bind_result: */ $result = $requete->get_result(); /* now you can fetch the results into an array - NICE */ while ($data = $result->fetch_assoc()) { // use your array as you would with any other fetch echo "test"; ?> <table> <caption>Liste des équipiers du projet</caption> <tr id="entete_tableau_join"> <th>Nom</th> <th>Email</th> <th>Job</th> <th>intention</th> <th>pays</th> </tr> <tr id="ligne_tableau_join"> <td class="case_tableau_join"> <?php echo $data["name"] ; ?> </td> <td class="case_tableau_join"> <?php echo $data["email"] ; ?> </td> <td class="case_tableau_join"> <?php echo $data["job"] ; ?> </td> <td class="case_tableau_join"> <?php echo $data["intention"] ; ?> </td> <td class="case_tableau_join"> <?php echo $data["pays"] ; ?> </td> </tr> </table> <?php } echo "données reçue"; } /* Lecture des variables résultantes */ mysqli_stmt_bind_result($requete, $name, $email, $job, $intention, $pays); /* Récupération des valeurs */ mysqli_stmt_fetch($requete); /* Fermeture du traitement */ mysqli_stmt_close($requete); /* Fermeture de la connexion */ mysqli_close($bdd); ?> </body> </html>
et il y a bien les infos dans la table. Maintenant j'aimerai les récupérer dans un tableau (avec le fichier G2SOI8ZJ2Q9JOIN.php) mais pour l'instant j'ai cette erreur : Parse error: syntax error, unexpected 'name' (T_STRING), expecting ',' or ';' in /home/colabawa/public_html/info/G2SOI8ZJ2Q9JOIN.php on line 33