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 de plusieurs colonnes avec foreach [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 13
    Par défaut Mise à jour de plusieurs colonnes avec foreach
    Salut et bon dimanche à tous.

    Je suis en train d'essayer un script pour faire la mise à jour sur plusieurs enregistrement provenant d'une même table à travers un formulaire sur une seule action.

    Voici le code du form (quelques balises html en moins):

    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
    <form method="post" action="modif.php" enctype="multipart/form-data">
    <?php
    $link = mysql_connect($hostname, $username, $password);
    $sql="SELECT * FROM matable WHERE type='menu' " ;
    $a = mysql_db_query($database, $sql);
    while ($b=mysql_fetch_row($a)){
    $cpt++;
    ?>
    <input name="id" type="hidden" id="id" value="<? echo $b[0] ?>">
    <input name="nom" type="text" id="nom" value="<? echo $b[2] ?>">
    <input name="desc" type="text" id="desc" value="<? echo $b[4] ?>">
    <input name="prix" type="text" id="prix" value="<? echo $b[3] ?>">
     
    <? 
    } 
    ?>
    </form>
    Et le code du fichier d'update "modif.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
    17
    18
    <?php require("../connex.php"); ?>
     
    if (isset($_POST['id'])) {
    $id = $_POST['id'];
    $nom = $_POST['nom'];
    $prix=$_POST['prix'];
    $desc=$_POST['desc'];
     
    foreach ($_POST['id']  as $valeur) {
    $requete = "UPDATE matable SET nom='$nom[$valeur]', prix='$prix[$valeur]', desc='$desc[$valeur]' WHERE id = $valeur";
     $result = mysql_query($requete);
     }
    }
     
    $link = mysql_connect($hostname, $username, $password);
    $result = mysql_db_query($database, $requete);
    mysql_close($link); 
    ?>

    Mais voici le message d'erreur que me renvoie la requète:
    "Warning : invalid argument supplied for foreach() in ..."
    la ligne d'erreur étant celle-là:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach ($_POST['id']  as $valeur) {
    Si quelqu'un d'entre vous avait une solution, ça me dépannerait super!

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    il fait faire comme ce
    name="id[]"

    et tes id doivent etre unique en html

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 13
    Par défaut
    Merci stealth35 pour ta réponse.

    houlala, effectivement aucun message d'erreur n'est retourné par contre ça efface les enregistrements!

    Qu'est-ce que tu entends par id unique en html ?

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par budiartaaa Voir le message
    Merci stealth35 pour ta réponse.

    houlala, effectivement aucun message d'erreur n'est retourné par contre ça efface les enregistrements!

    Qu'est-ce que tu entends par id unique en html ?
    l'id doit etre unique, or la a chaque fois y'a id="id", id="nom"...
    sois tu fais id="id1" id2 id3, sois tu mets pas d'id

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 13
    Par défaut
    stealth35, merci encore d'avoir pris le temps de réfléchir sur mon post, mais je passe par une boucle pour retourner un tableau avec plusieurs lignes d'enregistrement.

    Lorsque j'envoi mon formulaire, je ne peux pas mettre un id unique.
    Sinon cela veut dire que je dois faire un update pour chaque ligne séparément. Or c'est pas le but de la manoeuvre.

    A moins qu'il ne soit pas possible de faire un update sur plusieurs lignes en même temps??? Il me semblait que c'était possible pourtant.

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par budiartaaa Voir le message
    stealth35, merci encore d'avoir pris le temps de réfléchir sur mon post, mais je passe par une boucle pour retourner un tableau avec plusieurs lignes d'enregistrement.

    Lorsque j'envoi mon formulaire, je ne peux pas mettre un id unique.
    Sinon cela veut dire que je dois faire un update pour chaque ligne séparément. Or c'est pas le but de la manoeuvre.

    A moins qu'il ne soit pas possible de faire un update sur plusieurs lignes en même temps??? Il me semblait que c'était possible pourtant.
    l'id et le name sont 2 choses différentes, tu peu mettre un truc bidon dans ton id mais assure toi qu'il sois unique pour chaque element html

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 02/06/2015, 02h28
  2. Mise à jour d'une colonne: update avec case
    Par MangoZaz dans le forum Langage SQL
    Réponses: 9
    Dernier message: 05/09/2014, 09h55
  3. Réponses: 2
    Dernier message: 21/09/2009, 14h20
  4. [MySQL] Mise à jours de plusieurs lignes avec mysql
    Par hakou08 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 10/04/2009, 20h10
  5. Mise à jour d'une table avec un fichier csv
    Par blackangel dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 26/05/2005, 14h46

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