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 :

[SQL] probleme requete sql


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 60
    Par défaut [SQL] probleme requete sql
    bonjour, j'ai un probleme, je n'arrive pas a utiliser qu'une seule foi ma requete pour afficher mes libelles. En effet ce code permet de recuperer des libelles de menu et de les afficher en deux colonnes. Je voudrais donc eviter d'executer la requete pour chaque colonne mais de l'executer qu'une seule fois au debut de mon code. On me demande d'utiliser des boucles for mais je n'y arrive pas.. aidez moi !!
    Voici mon code(avec 1seule requete):
    Code php : 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
     
    <?
    $req = "SELECT * FROM architecture ARC, translate_libelle TRA WHERE ARC.ID_Architecture = TRA.ID_Architecture AND ARC_Niveau = '2' AND ID_ArchitectModu = '' AND ARC.ID_Architecture like'A%'  AND ID_Language = 'FRA'  ORDER BY ARC_ORDRE ";
    $oConnexion->execute($req);
    $j= floor($oConnexion->nbRes);
    $i= floor($oConnexion->nbRes/2);
    while($oConnexion->moveNext() != -1)
    {
    $TempRecord = $oConnexion->get();
    $i++;
    if($i%2==0){
    ?><a href=file:///x:/wwwroot/Supersoniks/projet2.html class="bouton"><?= $TempRecord ["TRA_Libelle"]?></a>
    <?
    }
    }
    $ii=$oConnexion->nbRes;
    if($ii%2==1){
    ?><a href=file:///x:/wwwroot//projet2.html class="bouton"><?= $TempRecord ["TRA_Libelle"]?></a>
    <?
    }
    ?>
    </td>
    <td width=100% valign="top">
    <?
    while($oConnexion->moveNext() != -1)
    {
    $TempRecord = $oConnexion->get();
    $j++;
    if($j%2==0){
    ?><a href=file:///x:/wwwroot//projet2.html class="bouton"><?= $TempRecord ["TRA_Libelle"]?></a>
    <?
    }
    }
    ?>
    (ce code ne m'affiche que les libelle de la premiere colonne.)

  2. #2
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Ne poste pas plusieurs fois le meme problème! Tu vas te retrouver avec le même genre de réponses, il vaut mieux continuer de poster sur le premier message :
    http://www.developpez.net/forums/sho...d.php?t=350970

    Donc je vois que ton problème n'est toujours pas résolu et je ne suis pas certain que tu m'aies lu jusqu'au bout.
    J'ai l'impression que tu veux ca : 30 libellés, les 15 premiers a gauche, les 15 suivants a droite.

    Si c'est bien ce le cas tu dois faire ton code en plusieurs étapes :
    1/ Récupérer TOUS les libellés dans un tableau donc avec une boucle while sur la fonction moveNext() et tu mets, un a un, les libellés dans un tableau

    2/ Tu calcules le nombre de lignes que va avoir ton tableau HTML (nombre d'éléments / 2

    3/ tu construis un tableau HTML, et à chaque ligne tu affiches les libellés voulus : dans le cas de 30 libellés
    ligne 1 : libellé 1 libellé 16
    ligne 2 : libellé 2 libellé 17
    etc.
    ligne 15: libellé 15 libellé 30

    Tu dois penser à vérifier si tu as un nombre impair de libellés, si c'est le cas, le dernier de la colonne de gauche sera 16 (dans le cas de 31 libellés), donc le premier de la colonne de droite sera 17. Pour ca il suffit au début de ta boucle que tu vérifies si tu es bien dans ce cas la ou pas.

    J'espère que cette fois j'ai été plus clair.

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 60
    Par défaut
    bin sa j'ai bien compris tout fonctionne, le truc c'est juste que je dois exectuer ma requete a chaque colonne et je voudrais l'executer qu'une seule fois..mon collègue me demande d'utiliser des boucles for mais je ne comprend pas.tanpis.

  4. #4
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Mais pourquoi tu dois exécuter ta requete a chaque colonne? c'est ca que je comprends pas!!

    lis bien les étapes que je t'ai donné, tu ne fais qu'une seule requete!!

  5. #5
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 60
    Par défaut
    bin ecoute jsais pas voila mon code, j'arrive pas a virer le deuxieme $oConnexion->execute($req);
    Code php : 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
     
    <?
    $req = "SELECT * FROM architecture ARC, translate_libelle TRA WHERE ARC.ID_Architecture = TRA.ID_Architecture AND ARC_Niveau = '2' AND ID_ArchitectModu = '' AND ARC.ID_Architecture like'A%'  AND ID_Language = 'FRA'  ORDER BY ARC_ORDRE ";
    $oConnexion->execute($req);
    $j= floor($oConnexion->nbRes);
    $i= floor($oConnexion->nbRes/2);
    while($oConnexion->moveNext() != -1)
    {
    $TempRecord = $oConnexion->get();
    $i++;
    if($i%2==0){
    ?><a href=file:///x:/wwwroot/Supersoniks/projet2.html class="bouton"><?= $TempRecord ["TRA_Libelle"]?></a>
    <?
    }
    }
    $ii=$oConnexion->nbRes;
    if($ii%2==1){
    ?><a href=file:///x:/wwwroot/Supersoniks/projet2.html class="bouton"><?= $TempRecord ["TRA_Libelle"]?></a>
    <?
    }
    ?>
    </td>
    <td width=100% valign="top">
    <?
    $oConnexion->execute($req);
    while($oConnexion->moveNext() != -1)
    {
    $TempRecord = $oConnexion->get();
    $j++;
    if($j%2==0){?><a href=file:///x:/wwwroot/Supersoniks/projet2.html class="bouton"><?= $TempRecord ["TRA_Libelle"]?></a>
    <?
    }
    }
    ?>

  6. #6
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    ben dans ton code tu ne fais rien de ce que j'ai expliqué, donc je ne peux pas t'aider plus : tu ne récupères pas tous les résultats dans un tableau, tu n'affiches pas ligne par ligne etc.

    Tu n'as meme pas répondu a ma question qui est de savoir si tu veux afficher la moitié des libellés a gauche puis la deuxieme moitié a droite ou si tu veux afficher
    libellé 1, libellé 2
    libellé 3, libellé 4
    etc.

  7. #7
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 60
    Par défaut
    sa c'est automatique mes libellé s'affichent nickel avec ce code

  8. #8
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Stop, désolé mais je ne peux pas t'aider plus.
    Comme tu ne réponds pas a ma question ET que tu n'utilises pas la méthode d'un tableau temporaire, je ne peux pas te dire comment retirer ton deuxième appel à la requete (qui est effectivement superflu).

    Bon courage quand meme!

    koopajah

  9. #9
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 60
    Par défaut
    dézolé égalemnt jsuis vraiment pas très bon en php... merci de ton aide en tout cas c simpa.

  10. #10
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Bon essayes ce code :
    Code php : 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
    <?php
     
    $req = "SELECT * FROM architecture ARC, translate_libelle TRA WHERE ARC.ID_Architecture = TRA.ID_Architecture AND ARC_Niveau = '2' AND ID_ArchitectModu = '' AND ARC.ID_Architecture like'A%'  AND ID_Language = 'FRA'  ORDER BY ARC_ORDRE ";
    $oConnexion->execute($req);
    ?>
     
    <table>
    <?php
    // Pour  chaque libellé
    $i=0;
    while($oConnexion->moveNext() != -1)
    {
    	// je regarde si je suis sur la colonne de gauche ou de droite
    	if($i%2==0)
    	{
    		// colonne de gauche
    		?>
    		<tr>
    			<td>
    				<a href=file:///x:/wwwroot/Supersoniks/projet2.html class="bouton"><?= $TempRecord ["TRA_Libelle"]?></a>
    			</td>
    	<?php
    	} // sinon
    	else 
    	{
    		// colonne de droite
    		?>
    			<td>
    				<a href=file:///x:/wwwroot/Supersoniks/projet2.html class="bouton"><?= $TempRecord ["TRA_Libelle"]?></a>
    			</td>
    		</tr>
    	<?
    	}// fin else
    $i++;
    }// fin while
     
    // si j'ai un nombre impair de libellés j'ai ouvert une ligne mais je l'ai pas fermée
    // donc je teste
    if($i%2 == 1)
    {
    ?>
    	</tr>
    <?php
    }//fin if
    ?>
    </table>

    a mon avis il y a des bugs, mais l'idée est là, j'espère avoir assez commenté, dis moi si tu ne comprends pas

  11. #11
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 60
    Par défaut
    hmm j'ai essayé ton code, sa marche mais sa me balance mes boutons n'importe comment avec des espaces etc.., car en fait le code que j'ai mis au dessus est imbriqué dans un tableau a deux colonnes. Avec mon code l'affichage est nickel mais j'ai une requete en trop c'est tout. Jsuis dézolé jdois te souler mais jcomprend pas.
    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
     
    <td width =100% valign="top"><div class="entetegraphique"><h2>POLE GRAPHIQUE</h2></div>
    <table border="0"cellspacing="0" cellpadding="0" width=100%  bgcolor=#A9A9A9 height="180">
    <tr>
    <td width=100% valign="top">
    <?
    $req = "SELECT * FROM architecture ARC, translate_libelle TRA WHERE ARC.ID_Architecture = TRA.ID_Architecture AND ARC_Niveau = '2' AND ID_ArchitectModu = '' AND ARC.ID_Architecture like'A%'  AND ID_Language = 'FRA'  ORDER BY ARC_ORDRE ";
    $oConnexion->execute($req);
    $j= floor($oConnexion->nbRes);
    $i= floor($oConnexion->nbRes/2)	;
    while($oConnexion->moveNext() != -1)
    {
    $TempRecord = $oConnexion->get();
    $i++;
    if($i%2==0){
    ?><a href=file:///x:/wwwroot/Supersoniks/projet2.html class="bouton"><?= $TempRecord ["TRA_Libelle"]?></a>
    <?
    }
    }
    ?>
    </td>
    <td width=100% valign="top">
    <?
    $oConnexion->execute($req);
    while($oConnexion->moveNext() != -1)
    {
    $TempRecord = $oConnexion->get();
    $j++;
    if($j%2==0){
    ?><a href=file:///x:/wwwroot/Supersoniks/projet2.html class="bouton"><?= $TempRecord ["TRA_Libelle"]?></a>
    <?
    }
    }
    ?>
    </td>
    </tr>
    </table>
    </td>
    Mon collègue me dit que le code est ok sauf cette satanée requete en trop.

  12. #12
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    En meme temps tu me redonnes encore exactement le meme code, tu n'as pas adapté le mien pour essayer de le faire marcher, tu n'as toujours essayé de stocker les résultats de ta requete dans un tableau (ce qui est obligatoire si tiens absolument a garder ton code exactement comme il est).

    DONC :
    1/ tu modifies ton code et tu adaptes le mien (en remettant les valign et en mettant ton tableau en forme
    2/ tu fais UNE requete, tu récupères TOUS les résultats dans un tableau et ensuite seulement tu affiches ce qui te permet de faire ta technique seulement au lieu de faire moveNext()dans ta boucle d'affichage tu récupèreras l'élément du tableau.

    Je ne peux vraiment pas faire plus que ça, désolé.

  13. #13
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 60
    Par défaut
    merci de ton aide vraiment. J'ai reussis a regler mon probleme grâce a des boucles for :
    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
     
    <table border="0"cellspacing="0" cellpadding="0" width=100%  bgcolor=#A9A9A9 height="180">
    <tr>
    <td width=100% valign="top">
    <?
    $req = "SELECT * FROM architecture ARC, translate_libelle TRA WHERE ARC.ID_Architecture = TRA.ID_Architecture AND ARC_Niveau = '2' AND ID_ArchitectModu = '' AND ARC.ID_Architecture like'A%'  AND ID_Language = 'FRA'  ORDER BY ARC_ORDRE ";
    $oConnexion->execute($req);
    $loopG= floor($oConnexion->nbRes/2)	;
    $loopD= $oConnexion->nbRes-$loopG;
    for($i=0;$i < $loopG; $i++){
    $oConnexion->moveNext() != -1;
    $TempRecord = $oConnexion->get();
    ?><a href=file:///x:/wwwroot/Supersoniks/projet2.html class="bouton"><?= $TempRecord ["TRA_Libelle"]?></a>
    <?}?>
    </td>
    <td width=100% valign="top">
    <?
    for ($i=0;$i < $loopD; $i++){
    $oConnexion->moveNext() != -1;
    $TempRecord = $oConnexion->get();
    ?><a href=file:///x:/wwwroot/Supersoniks/projet2.html class="bouton"><?= $TempRecord ["TRA_Libelle"]?></a>
    <?}?>
    </td>
    </tr>
    </table>
    encore merci et dézolé de t'avoir autant galéré...

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

Discussions similaires

  1. [SQL] probleme requete sql
    Par super-java dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 19/10/2007, 13h55
  2. [SQL] Probleme requete sql (jointure)
    Par Pepito2030 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 22/09/2006, 18h15
  3. [SQL] Probleme requete SQL HELP
    Par sephirothmana dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 16/06/2006, 15h50
  4. probleme requete sql
    Par Shosho dans le forum Langage SQL
    Réponses: 12
    Dernier message: 03/05/2005, 09h25
  5. [requete SQL] Probleme requete UPDATE
    Par Shiryu44 dans le forum JDBC
    Réponses: 12
    Dernier message: 10/03/2005, 11h41

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