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 :

Update dans 2 tables differentes [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Par défaut Update dans 2 tables differentes
    Slt à tous,
    j'essaie de faire un update dans deux tables differentes mais une seule requete update sur les deux fonctionne.

    table souscat
    ID ORDRE CAT SOUSCAT
    1 10 Alimentation Fruits
    2 0 Alimentation Legumes
    3 1 Decoration Cuisine
    4 2 Meuble Salon

    table produit
    ID CAT ORDRECAT SOUSCAT ORDRESOUSCAT DESI
    1 Alimentation 0 Fruits 0 pomme
    2 Alimentation 0 Legumes 0 patate
    3 Alimentation 0 Legumes 0 poireau
    4 Alimentation 0 Legumes 0 haricot
    5 Alimentation 0 Fruits 0 banane
    6 Decoration 0 Cuisine 0 cadre
    7 Meuble 0 Salon 0 Canape

    Mes requetes (recuperees d'un formulaire):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    foreach($_POST['id'] as $num => $id)
    {	  
    $sql = "UPDATE souscat SET ordre='".$_POST['ordre'][$num]."',cat='".$_POST['cat'][$num]."',nom='".$_POST['nom'][$num]."' WHERE id='$id' "; 
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 
    }
    foreach($_POST['nom'] as $num2 => $nom)
    {	  
    $sq2 = "UPDATE produit SET ordresouscat='".$_POST['ordre'][$num2]."' WHERE souscat='".$_POST['nom'][$num2]."' "; 
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 
     
    }
    Le soucis c'est que la premiere requete fonctionne parfaitement alors que la second ne fait pas la mise à jour.
    Pourtant en l'affichant via l'instruction echo $sq2; toutes les variable sont ok.

    la je seche, un petit coup de main serait le bienvenu.
    Merci
    @+

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Par défaut
    Bonjour,

    Tu cherches à mettre un moteur neuf sur une voiture dont le chassis est pourri, ce que Antoun t'a dit en termes voilés ici :
    http://www.developpez.net/forums/d64...table-classer/
    Tu devrais donc commencer par revoir la structure de ta BDD.

  3. #3
    Membre éclairé Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Par défaut
    ok
    mais cela ne me dit pas pourquoi le present code ne fonctionne pas.

    Je n'ai pas trop le choix pour les structures de base car c'est le vieux site d'un client auquel j'essaye d'apporter des solutions sans tous refaire.

    Voila pourquoi j'essaie de trouver d'autre solutions.

    Merci

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Par défaut
    Il souvent plus efficace, rapide et rentable de refaire plutôt que de bricoler une application bancale. Mais c'est ton problème.

    Pour le reste, pourquoi 2 boucles alors que les variables sont les mêmes ? De plus les variables numériques sont encadrées de guillemets, réservés, en général, aux chaines.

    Essaie avec ç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
    <?php 
      foreach($_POST['id'] as $num => $id)
      {	  
        $sql = 'UPDATE souscat 
                SET ordre = ' . $_POST['ordre'][$num] . ',
                    cat = ' . $_POST['cat'][$num] . ',
                    nom = \'' . $_POST['nom'][$num] . '\' 
                WHERE id = ' . $id; 
        mysql_query($sql) 
          or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 
     
        $sql = 'UPDATE produit 
                SET ordresouscat = ' . $_POST['ordre'][$num] . ' 
                WHERE souscat = \'' . $_POST['nom'][$num] . '\''; 
        mysql_query($sql) 
          or die('Erreur SQL !'.$sql.'<br>'.mysql_error());  
      }
    ?>

  5. #5
    Membre éclairé Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Par défaut
    Petit souci avec ton code
    j'ai une erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Erreur SQL !UPDATE souscat SET ordre = 11, cat = Alimentation, nom = 'Fruits' WHERE id = 1
    Unknown column 'Alimentation' in 'field list'

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Par défaut
    Je pensais que 'cat' était une valeur numérique.
    Remplace la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat = ' . $_POST['cat'][$num] . ',
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat = \'' . $_POST['cat'][$num] . '\',

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

Discussions similaires

  1. [Mysql] Grouper des données dans 2 tables différentes
    Par jey350 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 17/11/2006, 11h02
  2. Réponses: 3
    Dernier message: 06/11/2006, 08h14
  3. Réponses: 4
    Dernier message: 11/09/2006, 16h55
  4. [MySQL] deux meme nom de colonne dans 2 table differentes
    Par pierrot10 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 24/08/2006, 08h33
  5. Réponses: 6
    Dernier message: 12/05/2006, 15h22

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