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 :

Problème requête imbriquée


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Inscrit en
    Mai 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mai 2007
    Messages : 262
    Points : 172
    Points
    172
    Par défaut Problème requête imbriquée
    Bonjour,

    Je débute dans ce domaine et j'ai un soucis qui je l'espère sera facile pour vous à résoudre :

    J'ai 2 tables dans ma BDD :

    catégorie => id_categorie et nom_categorie
    contenu => id_contenu id_categorie et texte_contenu

    Je souhaite faire une partie admin qui permettra de gérer les contenus en fonction de la catégorie choisie (dans un menu déroulant lié à ma base).

    Si j'ai besoin d'ajouter un contenu, il va devoir récupérer l'identifiant catégorie de la table categorie pour le remplacer dans la tabke contenu par le bon et insérer ensuite les champs voulus...

    J'ai peut être pas été trop claire...

    Voici un bout de mon code :

    Partie 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
    <html>
    <body>
    <form name="form1" method="post" action="lister3.php">
    <p>Ajouter un contenu dans une cat&eacute;gorie : </p>
    <p>
      <select name="Nom_Categorie"> 
        <option value=""></option>
    <?php
    $db = mysql_connect('localhost', 'root', '')  or die('Erreur de connexion '.mysql_error());
    // sélection de la base  
        mysql_select_db('surfonline',$db)  or die('Erreur de selection '.mysql_error()); 
        // on écrit la requête sql 
    $query = 'SELECT Nom_Categorie FROM categories';
    $result = mysql_query ($query) or die ("Impossible d'exécuter la requete<br>$query<br>" );
     while ( $row = mysql_fetch_row($result) )
      {
          echo"        <option value=\"$row[0]\">$row[0]</option><br>";
    	  }
    	  mysql_free_result($result);
    	  ?>
      </select> 
      Cat&eacute;gorie
    </p>
     
      <p>  
        <textarea name="contenu"></textarea>
      Contenu</p>
      <p>
        <input type="submit" name="Submit" value="Envoyer">
      </p>
    </form>
    <p>&nbsp; </p>
     
    </body>
    </html>
    Partie traitement des données :

    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
    <?php
    $contenu=$_POST['contenu'];
    $result=$_POST['Nom_Categorie'];
     
    mysql_connect('localhost','root','');
    mysql_select_db('surfonline');
    $sql2="SELECT id_Categorie FROM categories WHERE Nom_Categorie='$result'";
    $request2= mysql_query($sql2);
    $sql="INSERT INTO contenus (id_Contenus, id_Categorie, Texte_Contenu) VALUES ('','$request2','$contenu')";
    $request= mysql_query($sql);
    echo $request2;
     
     
     
    echo "vos infos sont ajoutées";
    echo $request;
    ?>
    Le code traitement des données est peut etre un peu brouillon car je travaille dessus en ce moment...

    Merci d'avance pour votre aide !!!

  2. #2
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Et le problème est ?
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  3. #3
    Membre habitué
    Inscrit en
    Mai 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mai 2007
    Messages : 262
    Points : 172
    Points
    172
    Par défaut
    Le pb c'est qu'il m'insère bien les champs comme je veux mais il ne pren pas en compte l'id_categorie qu'il devrait insérer :

    imaginons ca :

    table categorie :
    id_categorie = 1 et nom_categorie = accueil.

    table contenu :
    id_contenu id_categorie texte_contenu

    Dans mon admin, je sélectionne accueil dans mon menu déroulant, puis j'ajoute le nouveau texte et j'envoie.

    Il ne me remplit pas le champs id_categorie qui se trouve dans ma deuxième table et qu'il est censé récupérer dans la table categorie...

    Moi je veux ca :

    table categorie :
    id_categorie = 1 et nom_categorie = accueil.

    table contenu :
    id_contenu = 2 id_categorie = 1 texte_contenu = blabla

    Tu vois ??
    Mon pb est là impossible de récupérer cette valeur...

    Merci pour l'aide !

  4. #4
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Ton $request2 que tu mets dans ta requête d'insertion correspond à une ressource résultat du mysql_query qui récupère les données de ta catégorie, tu as oublié de traiter cette ressource avec mysql_fetch_row ou mysql_fetch_array pour récupérer effectivement la valeur (c'est ce qui est fait dans le premier script d'ailleurs).
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  5. #5
    Membre habitué
    Inscrit en
    Mai 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mai 2007
    Messages : 262
    Points : 172
    Points
    172
    Par défaut
    Ce sont des scripts que j'ai récupéré sur Internet, je débute seulement dans php mysql.

    Pourrai tu rapidement m'expliquer la bonne démarche à suivre pour faire ce que je veux faire ???

    Merci d'avance.

    P.S : j'avais un peu compris que le résultat de la requete n'était pas traité mais je ne savais pas du tout comment faire...

  6. #6
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Bah c'est ce qui est fait dans le premier script avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $row = mysql_fetch_row($result)



    Récupérer du code ça peut être pas mal mais il faut le comprendre sinon aucune utilité (et en fouinant un peu sur le net c'est pas trop compliqué normalement...)

    http://fr2.php.net/manual/fr/function.mysql-query.php
    http://fr2.php.net/manual/fr/functio...-fetch-row.php
    http://fr2.php.net/manual/fr/functio...etch-array.php

    Et un tuto avec les bases de la manipulation MySQL avec PHP qui est bien fait :
    http://eusebius.developpez.com/phpmysql-base/
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  7. #7
    Membre habitué
    Inscrit en
    Mai 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mai 2007
    Messages : 262
    Points : 172
    Points
    172
    Par défaut
    Merci je vais tester ca mais encore merci pour les explications...

    Si j'ai bien compris, mon code devrait plutot ressembler à ca :

    =>
    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
    <?php
    $contenu=$_POST['contenu'];
    $categorie=$_POST['Nom_Categorie'];
     
    $db = mysql_connect('localhost', 'root', '')  or die('Erreur de connexion '.mysql_error());
    // sélection de la base  
        mysql_select_db('surfonline',$db)  or die('Erreur de selection '.mysql_error()); 
        // on écrit la requête sql 
    $query = 'SELECT id_Categorie FROM categories WHERE Nom_Categorie='$categorie'';
    $result = mysql_query ($query) or die ("Impossible d'exécuter la requete<br>$query<br>" );
     while ( $row = mysql_fetch_row($result) )
      {
          echo"        <option value=\"$row[0]\">$row[0]</option><br>";
    	  }
    	  mysql_free_result($result);
     
    $query2 = 'INSERT INTO contenus (id_Contenus, id_Categorie, Texte_Contenu) VALUES ('','$result','$contenu');
    $result2 = mysql_query ($query2) or die ("Impossible d'exécuter la requete<br>$query<br>" );
     while ( $row = mysql_fetch_row($result2) )
      {
          echo"        <option value=\"$row[0]\">$row[0]</option><br>";
    	  }
    	  mysql_free_result($result2);	  
    	  ?>
    Car quand je tape ce code, il me dit qu'il y a une erreur au niveau des requetes...

    Je galère vraiment et j'ai du mal à saisir l'idée du tableau avec mysql_fetch_row...

    Merci bcp pour ton aide...

  8. #8
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Si tu lis attentivement le tuto tu vas vite comprendre le fonctionnement... (paragraphe IV-B en particulier + l'exemple paragraphe VII)
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

Discussions similaires

  1. Problème requête imbriquée?
    Par mad_martigan dans le forum Langage SQL
    Réponses: 4
    Dernier message: 12/02/2009, 10h58
  2. Problème requête imbriquée
    Par Alexandre` dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 17/03/2008, 10h51
  3. Problème requêtes imbriquées
    Par jean-paul lepetit dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 20/03/2007, 10h32
  4. Problème Requête Imbriquée
    Par PaulPersonne820 dans le forum Hibernate
    Réponses: 1
    Dernier message: 31/01/2007, 22h40
  5. Problème Requête imbriquée
    Par EddieN dans le forum Langage SQL
    Réponses: 5
    Dernier message: 11/10/2006, 07h52

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