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

PHP & Base de données Discussion :

Mise à jour plusieurs lignes


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 43
    Par défaut Mise à jour plusieurs lignes
    Bonjour,

    Voilà, j'ai un problème. Je m'explique.
    J'ai une page recherche.php qui contient un formulaire de recherche d'élèves. L'utilisateur rentre un nom afin de chercher l'élève (avec LIKE). Il arrive sur la page des résultats : resultats.php. Cette page contient donc tous les résultats de sa recherche. Il peut y avoir qu'un seul résultat (un élève) ou plusieurs, s'il a rentré juste les premières lettres.

    Dans le cas où il a plusieurs résultats :
    Il a donc plusieurs lignes d'enregistrements devant ses yeux. Là, il peut compléter des données pour l'élève. Illustration :


    Il complète donc les données et lance l'enregistrement vers la bdd. Il arrive alors sur la page enregistrement.php qui contient le UPDATE. Mais là, le UPDATE reçoit plusieurs données en POST pour les mêmes variables. Il ne peut donc mettre à jour les données.

    Comment puis-je procéder ?
    Merci d'avance.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    index chaque champ avec l'id de l'eleve :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo '<input type="checkbox" name="eleve[' . $id . '][grippe]" />
    <textarea name="eleve[' . $id . '][commentaire]"></textarea>';
    Tu recuperes donc ainsi les données bien rangées :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    foreach ($_POST['eleve'] as $id=>$champs) {
    isset($champs['grippe']) { echo 'eleve grippé'; }
    echo $champs['commentaire'];
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 43
    Par défaut
    J'ai bien compris la méthode, mais comment l'inclure dans mon code ?
    Dans mon cas : la checkbox se nomme photo, le champ texte se nomme cheque et le textarea remarques.
    Comme tout cela ne reste qu'un système de mise à jour de données, les données enregistrées, si elles le sont, sont affichées. Voici donc le code pour resultats.php :

    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
        <tr>
          <td class="resultats"><?php echo $resultats['nom'] ?></td>
          <td><?php echo $resultats['prenom'] ?></td>
          <td><?php echo $resultats['classe'] ?></td>
          <td><?php echo $resultats['naissance'] ?></td>
          <td><label>
            <input <?php if ($resultats['photo']=="on") {echo "checked=\"checked\"";} ?> name="photo" type="checkbox" id="photo" />
          </label>
          <input name="id" type="hidden" id="id" value="<?php echo $resultats['id'] ?>" /></td>
          <td><label>
            <input name="cheque" type="text" id="cheque" value="<?php echo $resultats['cheque'] ?>" maxlength="7" />
          </label></td>
          <td><label>
            <textarea name="remarques" id="remarques" cols="45" rows="5"><?php echo $resultats['remarques'] ?></textarea>
          </label></td>
        </tr>
    Et puis pour la page enregistrement.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE eleves VALUES photo=" . $photo . ", cheque=" . $cheque . ", remarques=" . $remarques . " WHERE id=".$id."

  4. #4
    Membre Expert Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Par défaut
    Citation Envoyé par robinmaret Voir le message
    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
        <tr>
          <td class="resultats"><?php echo $resultats['nom'] ?></td>
          <td><?php echo $resultats['prenom'] ?></td>
          <td><?php echo $resultats['classe'] ?></td>
          <td><?php echo $resultats['naissance'] ?></td>
          <td><label>
            <input <?php if ($resultats['photo']=="on") {echo "checked=\"checked\"";} ?> name="photo" type="checkbox" id="photo" />
          </label>
          <input name="id" type="hidden" id="id" value="<?php echo $resultats['id'] ?>" /></td>
          <td><label>
            <input name="cheque" type="text" id="cheque" value="<?php echo $resultats['cheque'] ?>" maxlength="7" />
          </label></td>
          <td><label>
            <textarea name="remarques" id="remarques" cols="45" rows="5"><?php echo $resultats['remarques'] ?></textarea>
          </label></td>
        </tr>
    dans ce code tu dois modifier le nom des champs comme te l'as indiqué sabotage

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 43
    Par défaut
    De cette manière donc :

    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
      <tr>
          <td class="resultats"><?php echo $resultats['nom'] ?></td>
          <td><?php echo $resultats['prenom'] ?></td>
          <td><?php echo $resultats['classe'] ?></td>
          <td><?php echo $resultats['naissance'] ?></td>
          <td><label>
            <input <?php if ($resultats['photo']=="on") {echo "checked=\"checked\"";} ?> name="eleve[' . $id . '][photo]" type="checkbox" id="photo" />
          </label>
          <label>
            <input name="eleve[' . $id . '][cheque]" type="text" id="cheque" value="<?php echo $resultats['cheque'] ?>" maxlength="7" />
          </label></td>
          <td><label>
            <textarea name="eleve[' . $id . '][remarques]" id="remarques" cols="45" rows="5"><?php echo $resultats['remarques'] ?></textarea>
          </label></td>
        </tr>
    Ok, pour ça, pas de problème j'ai l'impression. Mais la suite, je ne pige pas tout à fait le truc. Comment le serveur va savoir qu'il y a plusieurs requêtes UPDATE ?

  6. #6
    Membre Expert Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Par défaut
    tu as oublié le "echo" dans ton code pour afficher la variable $i

    Citation Envoyé par robinmaret Voir le message
    Comment le serveur va savoir qu'il y a plusieurs requêtes UPDATE ?
    tu verras dans $_POST que tu auras plusieurs lignes et donc dans une boucle tu pourras faire les mises à jour les unes après les autres

Discussions similaires

  1. Mettre à jour plusieurs lignes d'une table
    Par beegees dans le forum Langage
    Réponses: 5
    Dernier message: 15/10/2008, 18h09
  2. [Procédure Stockée] mettre à jour plusieurs lignes
    Par PoichOU dans le forum Langage SQL
    Réponses: 15
    Dernier message: 16/05/2007, 16h18
  3. Procédure mettre à jour plusieurs lignes
    Par JEFF56 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 29/05/2006, 10h53
  4. Mettre a jour plusieurs lignes d'une table
    Par Tartenpion dans le forum Langage SQL
    Réponses: 4
    Dernier message: 17/12/2005, 18h50
  5. Procedure Stocké et mise à jour de ligne
    Par Andry dans le forum SQL
    Réponses: 2
    Dernier message: 26/11/2004, 10h22

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