IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Erreur dans mon formulaire


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2014
    Messages : 36
    Par défaut Erreur dans mon formulaire
    Bonjour j'ai un gros soucis et ça fais 1 semaine que je bloque et que je n'arrive pas a trouver la réponse. Je me considère comme débutant et j'aimerai que quelqu'un puisse m'aider en corrigeant mon code. Il se situe dans la page de gestion des membres de mon site, je voudrai avoir la possibilité de supprimer le membre que je choisit quand je clic dessus. Je n'arrive pas à attribuer la valeur 0 qui veut dire qu'on n'affiche pas le membre à l'id ou j'ai cliqué sur le bouton.

    voici le formulaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
    <head>
    *****<meta http-equiv="content-type" content="text/html; charset=utf-8" />
    *****<title>Affichage en colonne avec BD - solution 2</title>
    </head>
    *
    <body>
    *
    <table border=1> <h1> Athlètisme </h1>
    ****<thead><tr>
    ***********<th>ID</th>
    ***********<th>Nom</th>
    ***********<th>Prenom</th>
    ***********<th>Sexe</th>
    ***********<th>Classe</th>
    *************
    ************<th>Statut</th>
    *******</tr>
    ***</thead>
    *****
    *******
    <?php //Connection avec la BDD.
    *
    *
    ********mysql_connect("localhost", "root", "");
    ********mysql_select_db("test");
    *********
    ********$reponse = mysql_query("SELECT id, nom, prenom, date_de_naissance, sexe, classe, sport, statut FROM eleves WHERE statut= '1' AND sport= 'Athlètisme'");
    *********
    **********while($_POST = mysql_fetch_array($reponse))
    ************{
    ************?>
    *******
    ****<tbody>
    ******************
    ********************<td><?php echo $_POST['id'];?></td>
    ********************<td><?php echo $_POST['nom'];?></td>
    ********************<td><?php echo $_POST['prenom'];?></td>
    ********************<td><?php echo $_POST['sexe'];?></td>
    ********************<td><?php echo $_POST['classe'];?></td>
    *********************
    ********************<td>
    *********************
    ********************<a href="validation.php?id=<?php echo uniqid('id');?>">Page B</a>
    *********************
    *********************
    ****</tbody>
    *****
    *****<?php
    *************//fin de la boucle, le tableau contient toute la BDD
    ***********} mysql_close(); //deconnection de mysql
    ************?>
    et voici le traitement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <?php
    *
    *
    // Connexion à la base de données
    try
    {
    ****$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '');
    }
    catch(Exception $e)
    {
    ********die('Erreur : '.$e->getMessage());
    }
    *
    // Insertion du message à l'aide d'une requête préparée
    $id = $_GET['id'];
    $req = $bdd->prepare('UPDATE eleves SET statut = 0 WHERE id=$id');
    $req->execute(array());
    *
    *
    // Redirection
    *
    ?>

  2. #2
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Salut,

    qu'est ce que vient faire uniqueid() dans ton code ?
    Il devrait être remplacé par l'id du membre.

    Par ailleurs faire while($_POST = mysql_fetch_array($reponse)) est très mauvais. Le super tableau $_POST est réservé aux données issues des formulaires et à rien d'autre. Normalement, on le réserve qu'en lecture seule, il faut absolument éviter de le manipuler:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    while($row = mysql_fetch_array($reponse))
    {
    ?>
     
    <tbody>
     
    <td><?php echo $row['id'];?></td>
    <td><?php echo $row['nom'];?></td>
    <td><?php echo $row['prenom'];?></td>
    <td><?php echo $row['sexe'];?></td>
    <td><?php echo $row['classe'];?></td>
     
    <td>
     
    <a href="validation.php?id=<?php echo $row['id'];?>">Page B</a>
    Pense aussi à échapper tes données avec htmlspecialchars()

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2012
    Messages : 17
    Par défaut
    Ligne 45, tu as
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo uniqid('id');?>
    il faudrait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo $_POST['id'];?>
    uniqid() te permet de créer un identifiant unique et ne reprend donc pas l'id du membre !
    De plus, tu utilises les fonctions mysql_... d'un côté et PDO de l'autre. Ce n'est pas gênant en soit, mais pas très propre, je te conseille de tout passer en PDO (mysql_... arrive en fin de vie et sera rapidement supprimée des prochaines versions PHP)

  4. #4
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Cela donnerait quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    <?php
     
    mysql_connect("localhost", "root", "");
    mysql_select_db("test");
     
    $reponse = mysql_query("SELECT id, nom, prenom, date_de_naissance, sexe, classe, sport, statut FROM eleves WHERE statut= '1' AND sport= 'Athlètisme'");
    $rows    = array();
    $hsc     = function($p) { return htmlspecialchars($p, ENT_QUOTES, 'utf-8'); };
     
    while($row = mysql_fetch_array($reponse))
    {
        $rows[] = <<<html
    <td>{$hsc($row['id'])}</td>
    <td>{$hsc($row['nom'])}</td>
    <td>{$hsc($row['prenom'])}</td>
    <td>{$hsc($row['sexe'])}</td>
    <td>{$hsc($row['classe'])}</td>
    <td><a href="validation.php?id={$row['id']}">Page B</a></td>
    html;
    }
     
    ?>
    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
    <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <title>Affichage en colonne avec BD - solution 2</title>
    </head>
    <body>
        <table border=1>
            <h1> Athlètisme </h1>
            <thead>
                <tr>
                    <th>ID</th>
                    <th>Nom</th>
                    <th>Prenom</th>
                    <th>Sexe</th>
                    <th>Classe</th>
                    <th>Statut</th>
                </tr>
            </thead>
            <tbody>
                <?php echo implode('', $rows); ?>
            </tbody>
    Pour le traitement avec PDO, tu as une erreur dans le sql : les placeholder se repèrent avec cette syntaxe : :placeholder et non avec $placeholder.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    try
    {
        $bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '');
    }
    catch(Exception $e)
    {
        die('Erreur : '.$e->getMessage());
    }
     
    // Insertion du message à l'aide d'une requête préparée
    $id = (isset($_GET['id'])) ? (int)$_GET['id'] : 0;
    if ($id)
    {
        $req = $bdd->prepare('UPDATE eleves SET statut = 0 WHERE id = :id');    
        $req->execute(array(':id' => $id));
    }
    Tu dois te pencher sur la doc, c'est bien expliqué et des exemples y en a à foison

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2014
    Messages : 36
    Par défaut
    voilà ça marche cependant j'ai 2 tableau au lieu de 1. A quoi sert $row ?

    A chaque id il recréer un tableau et ajoute un autre id à chaque fois qu'il y en a

    style :


    Athlètisme

    Nom Prenom Sexe Classe Statut
    Dupuis Florian Masculin Terminale Page B
    Athlètisme

    Nom Prenom Sexe Classe Statut
    Dupuis Florian Masculin Terminale Page B Masculin Terminale Page B
    Athlètisme

    Nom Prenom Sexe Classe Statut
    Dupuis Florian Masculin Terminale Page B Masculin Terminale Page B Masculin Terminale Page B
    Athlètisme

    Nom Prenom Sexe Classe Statut
    Dupuis Florian Masculin Terminale Page B Masculin Terminale Page B Masculin Terminale Page B Masculin Terminale Page B

  6. #6
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Bah j'suis un âne, j'ai oublié de gérer les lignes dans le corps du tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $rows[] = <<<html
    <tr>    
        <td>{$hsc($row['id'])}</td>
        <td>{$hsc($row['nom'])}</td>
        <td>{$hsc($row['prenom'])}</td>
        <td>{$hsc($row['sexe'])}</td>
        <td>{$hsc($row['classe'])}</td>
        <td><a href="validation.php?id={$row['id']}">Page B</a></td>
    </tr>
    html;
    La variable $row sert à stocker chaque ligne d'enregistrement renvoyé par $reponse

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2014
    Messages : 36
    Par défaut
    j'ai reussi à tout mettre dans le même tableau mais j'ai plusieurs fois la même id dedans

    on dirai que pour intégrer une autre id dans le tableau il est obligé de refaire en boucle l'intégration des autres idée de 1 je passe a 2 de 2 à 3 etc...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur de paramètre dans mon formulaire
    Par cdevl32 dans le forum Langage
    Réponses: 10
    Dernier message: 25/08/2009, 10h13
  2. [MySQL] Erreur dans mon formulaire
    Par rane dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 19/07/2006, 14h06
  3. [langage]erreur dans mon script
    Par Fabouney dans le forum Langage
    Réponses: 11
    Dernier message: 30/06/2005, 14h58
  4. [Lien]erreur dans mon programme python
    Par durnambule dans le forum Général Python
    Réponses: 11
    Dernier message: 29/01/2004, 14h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo