Requete de formulaire html vers base de données

Fermé
squaria - 6 nov. 2016 à 18:38
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 - 7 nov. 2016 à 11:02
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)

<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";
}
?>

3 réponses

Utilisateur anonyme
6 nov. 2016 à 20:26
Bonjour,

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+
0
squaria Messages postés 85 Date d'inscription dimanche 6 novembre 2016 Statut Membre Dernière intervention 27 août 2018
Modifié par squaria le 6/11/2016 à 20:31
Bon on vas déjà commencé par ça merci ^^
0
squaria Messages postés 85 Date d'inscription dimanche 6 novembre 2016 Statut Membre Dernière intervention 27 août 2018
6 nov. 2016 à 21:13
Bon c'est bon ça marche ! j'ai bien le "Mise à jour effectuée avec succès" qui s'affiche ^^
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
0
Utilisateur anonyme
6 nov. 2016 à 21:16
cool,

et tu as quoi à la ligne 33 ?
0
squaria Messages postés 85 Date d'inscription dimanche 6 novembre 2016 Statut Membre Dernière intervention 27 août 2018
Modifié par squaria le 6/11/2016 à 21:19
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>
0
Utilisateur anonyme
6 nov. 2016 à 21:19
Oupsss, je suis c.n, j'ai zappé ton premier message...

C'est vraiment un copier coller du fichier que tu as mis ?

A+
0
squaria Messages postés 85 Date d'inscription dimanche 6 novembre 2016 Statut Membre Dernière intervention 27 août 2018
Modifié par squaria le 6/11/2016 à 21:25
non j'ai enlever le head mais sinon oui

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>
0
Utilisateur anonyme > Utilisateur anonyme
Modifié par HDU le 6/11/2016 à 21:26
ton $bdd dans ta ligne
 $requete = mysqli_query($bdd, 'SELECT name, email, job, intention, pays FROM infos');
, il correspond à quoi ?
0
squaria Messages postés 85 Date d'inscription dimanche 6 novembre 2016 Statut Membre Dernière intervention 27 août 2018
6 nov. 2016 à 21:26
la connection a la base de donnée avec mysqli
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
7 nov. 2016 à 02:29
Bonjour,

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
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
7 nov. 2016 à 02:35
PS : Ta question concernant le code PHP ( et non la requête SQL...) je déplace le sujet dans le bon forum => PHP.
Merci d'y penser la prochaine fois.
0
squaria Messages postés 85 Date d'inscription dimanche 6 novembre 2016 Statut Membre Dernière intervention 27 août 2018
7 nov. 2016 à 08:12
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 ^^
0
squaria Messages postés 85 Date d'inscription dimanche 6 novembre 2016 Statut Membre Dernière intervention 27 août 2018
7 nov. 2016 à 10:07
Ça marche ! Mais j'ai quelques erreurs
https://www.zupimages.net/up/16/45/i8il.png
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > squaria Messages postés 85 Date d'inscription dimanche 6 novembre 2016 Statut Membre Dernière intervention 27 août 2018
7 nov. 2016 à 10:28
Le message est clair ....
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 ?
0
squaria Messages postés 85 Date d'inscription dimanche 6 novembre 2016 Statut Membre Dernière intervention 27 août 2018
7 nov. 2016 à 10:35
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>
0