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 multiple depuis un tableau


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 multiple depuis un tableau
    Bonjour,

    J'ai cherché un peu sur le net, mais je n'ai pas trouvé de solution concrète.
    J'ai une page qui affiche par une boucle plusieurs lignes de données d'une table dans une formulaire. Je veux ensuite enregistrer toutes les modifications apportées.
    Pour le moment, j'ai un update classique, et donc, seule la dernière ligne est mise à jour Pas les précédentes.
    J'aimerais donc savoir comment mettre à jour toutes les lignes de la table.

    Merci d'avance pour votre aide.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2008
    Messages : 294
    Par défaut
    Bonjour,

    Serait-il possible de voir ton code?
    Et en faisant une boucle while sa ne fonctionnerai pas?

  3. #3
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,
    En mettant les id des enregistrements dans un hidden et les autres champs dans un input ou select ayant les mêmes name en tableau dans chaque ligne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    while($row=mysql_fetch_array($result))
    {
        echo '<input type="hiden" value="'.$row[0]'" name="id[]"/>';
        echo '<input type="text" value="'.$row[1]'" name="champ[]"/>';
    }
    et dans le mise à jour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    foreach($_POST['id'] as $key=> $value)
    {
      $query="UPDATE table SET colonne1='".$_POST['champ'][$key]."' WHERE $cle='".$value."'";
    ...
    }

  4. #4
    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
    Merci pour ces réponses rapides, mais je ne vois pas comment procéder exactement

    Je ne connais pas foreach, comment l'intégrer dans mon code ?

    Voici mon code qui affiche les formulaire pour compléter/modifier
    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    <form id="form1" name="form1" method="post" action="update.php">
    <button type="submit" value="envoyer" />
      <table width="100%" class="resultats">
        <tr>
          <th width="17%" class="resultats" scope="col">Nom</th>
          <th width="14%" scope="col">Prénom</th>
          <th width="7%" scope="col">Classe</th>
          <th width="13%" scope="col">Date de naissance</th>
          <th width="7%" scope="col">Inscription</th>
          <th width="18%" scope="col">N° élève</th>
          <th width="24%" scope="col">Remarques</th>
        </tr>
        <?php
    // Connexion
    require_once('login.php');
     
    // Variables
    $nom = $_POST['nom'];
    $prenom = $_POST['prenom'];
    $classe = $_POST['classe'];
     
    // On se connecte à la base
    $connexion = mysql_connect("$host_bdd", "$user_bdd", "$pass_bdd");
    mysql_select_db("$bdd");
     
    // On effectue la recherche de l'élève
    mysql_query("SET NAMES UTF8"); 
    $sql = "SELECT * FROM eleves WHERE nom LIKE '".$nom."%' AND prenom LIKE '".$prenom."%' AND classe LIKE '".$classe."%'";
    $requete = mysql_query($sql,$connexion);
    mysql_close();
     
     
    // On affiche les résultats
    while ($resultats = mysql_fetch_array($requete))
    {
     
    if ($resultats['nom'] == NULL)
    {
    echo "Erreur";
    }
     
    else
    {
    ?>
        <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 name="inscrit" type="checkbox" id="inscrit" value="1" <?php if ($resultats['inscrit']=="1") {echo "checked=\"checked\"";} ?> />
          </label>
          <input name="id" type="hidden" id="id" value="<?php echo $resultats['id'] ?>" /></td>
          <td><label>
            <input name="no_eleve" type="text" class="no_eleve" id="no_eleve" value="<?php echo $resultats['no_eleve'] ?>" size="13" maxlength="7" />
          </label></td>
          <td><label>
            <textarea name="remarques" cols="45" rows="5" class="remarques_results" id="remarques"><?php echo stripslashes($resultats['remarques']) ?></textarea>
          </label></td>
        </tr>
    <?php
    }
    } //on ferme while
    ?>
      </table>
     
     
    </form>
    Et ensuite, dans update.php, je fais un simple UPDATE.

  5. #5
    Membre expérimenté
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2008
    Messages : 294
    Par défaut
    Il faut que changes le nom de tes champs en y ajoutant l'id, comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input name="<?php 'inscrit_'.$resultats['id'] ?>" type="checkbox" id="inscrit" value="1" <?php if ($resultats['inscrit']=="1") {echo "checked=\"checked\"";} ?> />
    Et ensuite tu fais une boucle dans laquelle tu met à jour tous les élèves, en reprenant les nom de tes champs.

  6. #6
    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
    Ok, mais ensuite, comment je procède ?
    Je met quoi dans l'expression de la boucle ? Et comment peut on récupérer les variables vu que leur identifiant POST ne fait que changer à cause de l'id ?

    Merci d'avance.

  7. #7
    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
    c'est expliqué comment récupérer les valeurs avec le code là :

    Citation Envoyé par andry.aime Voir le message
    Bonjour,
    En mettant les id des enregistrements dans un hidden et les autres champs dans un input ou select ayant les mêmes name en tableau dans chaque ligne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    while($row=mysql_fetch_array($result))
    {
        echo '<input type="hidden" value="'.$row[0]'" name="id[]"/>';
        echo '<input type="text" value="'.$row[1]'" name="champ[]"/>';
    }
    et dans le mise à jour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    foreach($_POST['id'] as $key=> $value)
    {
      $query="UPDATE table SET colonne1='".$_POST['champ'][$key]."' WHERE $cle='".$value."'";
    ...
    }

  8. #8
    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
    Oui mais je ne comprends pas bien la démarche à effectuer...

  9. #9
    Membre expérimenté
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2008
    Messages : 294
    Par défaut
    Et bien avec ma méthode il te suffit de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    while ($resultats = mysql_fetch_array($requete))
    {
    mysql_query('update eleves set inscrit='.$_POST['inscrit_'.$resultats['id']]....);
     
    }
    ou requete et la meme requete que toute a l'heure.

Discussions similaires

  1. Mise à jour datagridview depuis différentes fenêtres
    Par Machine Head dans le forum Windows Forms
    Réponses: 8
    Dernier message: 29/07/2009, 10h40
  2. [DOM] IE vs FF : mise à jour dynamique d'un tableau
    Par vichenze dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 13/06/2008, 10h14
  3. Pb de mise à jour à partir d'un tableau Calc
    Par ft290 dans le forum Requêtes
    Réponses: 9
    Dernier message: 21/04/2008, 19h56
  4. Mise à jour table depuis autre table
    Par dual77 dans le forum Requêtes
    Réponses: 9
    Dernier message: 04/01/2007, 21h01
  5. [VB.NET 2.0] Mise à jour contrôle depuis xml
    Par nicolb dans le forum ASP.NET
    Réponses: 2
    Dernier message: 20/04/2006, 09h21

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