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 :

Boucle dans une requête [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 40
    Par défaut Boucle dans une requête
    BOnjour à tous

    j'ai un petit souci dans une requete je ne sait pas comment faire pour que ma variable $id change en fonction de ma boucle qui est plus bas.while ($donnees=mysql_fetch_array($resultat)) ......

    merci bcp
    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
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//FR" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
    <title>xml</title> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
    </head>
    <body>
     
    <?php require_once('connectionbdd.php'); 
     
    function Display($Value) {
        return htmlspecialchars(addslashes($Value));
      }
    //$cat = $_GET['categorie'];
    $parent = 4;
     
     
    $connection = mysql_connect($hostname_connectionbdd, $username_connectionbdd, $password_connectionbdd) or die("host : connexion impossible.");
    mysql_select_db($database_connectionbdd, $connection) or die("Base de donnée non trouvé.");
    $query = "SELECT * FROM articles WHERE idparent_articles = $parent AND idcat_articles = $id" ;
    $result = mysql_query($query, $connection) or die("Impossible d'interroger la base de données");
    $num = mysql_num_rows($result);
     
     
    $resultat = @mysql_query($query);
    $i = 0;
    $id = "";
     
    // on parcourt le résultat de la requête
    while ($donnees=mysql_fetch_array($resultat)){
    // et on concatène les résultats dans une variable listeResultats
    $id = urlencode(utf8_encode($donnees['idcat_articles']));
     
    $i++;
     
     
    if ($num != 0) {
    $file= fopen($id."_"."gallery.xml", "w");
     
    $_xml ="<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n";
     
    $_xml .="<simpleviewerGallery 
    maxImageWidth = '350' 
    maxImageHeight = '350' 
    textColor = '0x000000' 
    frameColor = '0x000000' 
    frameWidth = '0' 
    stagePadding = '40' 
    thumbnailColumns = '3' 
    thumbnailRows = '2' 
    navPosition = 'top'
    navPadding = '30'
    title = '$rub1'
    enableRightClickOpen = 'false' 
    backgroundImagePath = ''
    vAlign = 'top'
    hAlign = 'left'
    imagePath = /images/' 
    thumbPath = '/images/'>\r\n";
     
     
    while ($r = mysql_fetch_array($result)) {
     
        $_xml .= '<image>
    	<filename>'.utf8_encode($r['images_articles']).'</filename>
    	<caption>'.utf8_encode($r['comment_articles']).'</caption>';
        $_xml .= "</image>\r\n";
     
    }
    }
     
    $_xml .="</export>";
    if ($num != 0) {
     
    fwrite($file, $_xml);
    fclose($file); 
    }
     
    else
     
    echo "Pas d'articles pour l'instant dans cette rubrique." ; 
    }
    echo $id;
    ?>
     
    </body>
     
    </html>

  2. #2
    Membre expérimenté Avatar de BlackSmith
    Inscrit en
    Mars 2008
    Messages
    181
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mars 2008
    Messages : 181
    Par défaut
    Si j'ai bien compris ce que tu veux faire, tu veux afficher tout les articles d'une categorie.

    Tu peut donc simplifier ta requete sql comme ceci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM articles WHERE idparent_articles = $parent
    Et apres tu parcours simplement le résultat.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 40
    Par défaut
    oui cela reviendrait à cela le souci c'est qu'en faisant comme ca, il ne me crée q'un seul xml contenant tout les articles. Alors que je souhaite crée un xml par en rapport avec le idcat_articles.
    exemple.

    13_gallery.xml --> listant tout les articles de la catégorie 13
    16_gallery.xml --> listant tout les articles de la catégorie 16

    Si je fait comme tu dit je me retrouve seulement avec
    16_gallery.xml --> contenant les articles 13 et 16

    j'aimerai donc pouvoir que ma requete aille une fois cherché SELECT * FROM articles WHERE idparent_articles = $parent AND idcat_articles = $id (13)
    puis SELECT * FROM articles WHERE idparent_articles = $parent AND idcat_articles = $id (16) ...ainsi de suite.

    Cette à dire de reprendre le $id de la boucle while situé après la requete.

    j'espère etre clair merci beaucoup

  4. #4
    Membre expérimenté Avatar de BlackSmith
    Inscrit en
    Mars 2008
    Messages
    181
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mars 2008
    Messages : 181
    Par défaut
    Sinon tu peut selectionner toute les categorie et pour chaque catégorie tu récupère la liste des articles qui la compose.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 40
    Par défaut
    Citation Envoyé par BlackSmith Voir le message
    Sinon tu peut selectionner toute les categorie et pour chaque catégorie tu récupère la liste des articles qui la compose.

    je vois pas trop comment faire avec array?

  6. #6
    Membre expérimenté Avatar de BlackSmith
    Inscrit en
    Mars 2008
    Messages
    181
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mars 2008
    Messages : 181
    Par défaut
    Et avec deux requete SQL !

    Tu peut faire comme ceci

    1- SELECT * FROM categorie
    2 - tu boucle sur tout les élements et pour chaque element tu fais
    2.1 - SELECT * FROM produit where idCAT = $id

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 40
    Par défaut
    Citation Envoyé par BlackSmith Voir le message
    Et avec deux requete SQL !

    Tu peut faire comme ceci

    1- SELECT * FROM categorie
    2 - tu boucle sur tout les élements et pour chaque element tu fais
    2.1 - SELECT * FROM produit where idCAT = $id
    ok je crois avoir compris ! je teste ca dans l'après midi et je revient vers toi merci encore

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 40
    Par défaut
    super ca avance bien! mon fichier 16_gallery.xml et 13_gallery.xml sont bien crée le contenu de 16 et bien celui qu'il faut juste le 13_gallery contient bien les données xml mais aucun articles n'est affiché dedans.
    le code actuel et celui ci
    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
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//FR" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
    <title>xml</title> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
    </head>
    <body>
     
    <?php require_once('connectionbdd.php'); 
     
    function Display($Value) {
        return htmlspecialchars(addslashes($Value));
      }
    //$cat = $_GET['categorie'];
    $parent = 4;
    $id = 16;
     
    $connection = mysql_connect($hostname_connectionbdd, $username_connectionbdd, $password_connectionbdd) or die("host : connexion impossible.");
    mysql_select_db($database_connectionbdd, $connection) or die("Base de donnée non trouvé.");
     
     
    $query2 = "SELECT * FROM categorie WHERE link_categorie = $parent" ;
    $result2 = mysql_query($query2, $connection) or die("Impossible d'interroger la base de données");
    $num2 = mysql_num_rows($result2);
     
    $j = 0;
    $id2 = "";
    $resultat2 = @mysql_query($query2);
     
     
    while ($donnees2=mysql_fetch_array($resultat2)){
     
    $id2 = urlencode(utf8_encode($donnees2['id_categorie']));
     
    $j++;
     
     
    $query = "SELECT * FROM articles WHERE idparent_articles = $parent AND idcat_articles = $id2" ;
    $result = mysql_query($query, $connection) or die("Impossible d'interroger la base de données");
    $num = mysql_num_rows($result);
     
     
    $resultat = @mysql_query($query);
    $i = 0;
    $id = "";
     
    // on parcourt le résultat de la requête
    while ($donnees=mysql_fetch_array($resultat)){
    // et on concatène les résultats dans une variable listeResultats
    $id = urlencode(utf8_encode($donnees['idcat_articles']));
     
    $i++;
     
     
    if ($num != 0) {
    $file= fopen($id."_"."gallery.xml", "w");
     
    $_xml ="<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n";
     
    $_xml .="<simpleviewerGallery 
    maxImageWidth = '350' 
    maxImageHeight = '350' 
    textColor = '0x000000' 
    frameColor = '0x000000' 
    frameWidth = '0' 
    stagePadding = '40' 
    thumbnailColumns = '3' 
    thumbnailRows = '2' 
    navPosition = 'top'
    navPadding = '30'
    title = '$rub1'
    enableRightClickOpen = 'false' 
    backgroundImagePath = ''
    vAlign = 'top'
    hAlign = 'left'
    imagePath = /images/' 
    thumbPath = /images/'>\r\n";
     
     
    while ($r = mysql_fetch_array($result)) {
     
        $_xml .= '<image>
    	<filename>'.utf8_encode($r['images_articles']).'</filename>
    	<caption>'.utf8_encode($r['comment_articles']).'</caption>';
        $_xml .= "</image>\r\n";
     
    }
    }
     
    $_xml .="</export>";
    if ($num != 0) {
     
    fwrite($file, $_xml);
    fclose($file); 
    }
     
    else
     
    echo "Pas d'articles pour l'instant dans cette rubrique." ; 
    }
     
    };
    echo $id2;
    ?>
     
    </body>
     
    </html>
    merci

  9. #9
    Membre émérite Avatar de cadoudal56
    Profil pro
    Inscrit en
    Février 2005
    Messages
    694
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 694
    Par défaut
    Hello,

    Si tu as les infos pour la cat 16 et pas pour la 13, la premiere chose a verifier c'est que tu as bien des infos pour la cat 13 en allant regarder directement dans la BDD avec phpmyadmin...

    @+
    cadou

  10. #10
    Membre expérimenté Avatar de BlackSmith
    Inscrit en
    Mars 2008
    Messages
    181
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mars 2008
    Messages : 181
    Par défaut
    J'ai modifié un peu ton code, il devrait mieux marcher maintenant
    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
    $connection = mysql_connect($hostname_connectionbdd, $username_connectionbdd, $password_connectionbdd) or die("host : connexion impossible.");
    mysql_select_db($database_connectionbdd, $connection) or die("Base de donnée non trouvé.");
     
    $query2 = "SELECT * FROM categorie WHERE link_categorie = $parent" ;
    $result2 = mysql_query($query2, $connection) or die("Impossible d'interroger la base de données");
    $num2 = mysql_num_rows($result2);
     
    while ($donnees2 = mysql_fetch_array($result2)){
    	$idCat = urlencode(utf8_encode($donnees2['id_categorie']));
     
    	$query = "SELECT * FROM articles WHERE idparent_articles = $parent AND idcat_articles = $idCat" ;
    	$result = mysql_query($query, $connection) or die("Impossible d'interroger la base de données");
    	$num = mysql_num_rows($result);
     
    	if ($num != 0) {
    		$file= fopen($id."_"."gallery.xml", "w");
    		$_xml ="<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n";
    		$_xml .="<simpleviewerGallery maxImageWidth = '350' maxImageHeight = '350' textColor = '0x000000' frameColor = '0x000000' frameWidth = '0' stagePadding = '40' 
    										thumbnailColumns = '3' thumbnailRows = '2' navPosition = 'top' navPadding = '30' title = '$rub1' enableRightClickOpen = 'false' 
    										backgroundImagePath = '' vAlign = 'top' hAlign = 'left' imagePath = /images/' thumbPath = /images/'>\r\n";
    		// on parcourt le résultat de la requête
    		while ($r = mysql_fetch_array($result)){
    			// et on concatène les résultats dans une variable listeResultats
    			$_xml .= '<image>
    				<filename>'.utf8_encode($r['images_articles']).'</filename>
    				<caption>'.utf8_encode($r['comment_articles']).'</caption>';
    			$_xml .= "</image>\r\n";
    		}
     
    		$_xml .="</export>";
    		if ($num != 0) {
    			fwrite($file, $_xml);
    			fclose($file); 
    		}
    		else
    			echo "Pas d'articles pour l'instant dans cette rubrique." ; 
    	} 
    }

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 40
    Par défaut
    merci à tous tout et nickel
    effectivement le souci sur le 13_gallery.xml etait le seul à avoir plusieurs articles , mauvaise écriture du code sans doute.

    j'ai juste modifié cela dans ton code remodeler:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $file= fopen($idCat."_"."gallery.xml", "w");
    et tout est ok !

    merci encore bonne journée

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

Discussions similaires

  1. [MySQL] Boucle dans une requête
    Par spawns dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 18/01/2011, 16h48
  2. [AC-2000] Créer une boucle dans une requête
    Par tibogaet dans le forum VBA Access
    Réponses: 4
    Dernier message: 27/10/2010, 16h45
  3. Boucle dans une requête SQL
    Par od.dev dans le forum Langage SQL
    Réponses: 4
    Dernier message: 14/06/2010, 19h13
  4. [mySQL5] Faire une sorte de "boucle" dans une requête
    Par mdr_cedrick dans le forum Requêtes
    Réponses: 5
    Dernier message: 01/07/2009, 17h40
  5. Creer une boucle dans une requête ???
    Par fdloisel dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 26/10/2004, 14h05

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