Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/06/2007, 16h02   #1
Invité régulier
 
Étudiant
Inscription : mars 2007
Messages : 60
Détails du profil
Informations personnelles :
Âge : 24

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2007
Messages : 60
Points : 7
Points : 7
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 :
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.)
tondeuz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 16h16   #2
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
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.
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 16h25   #3
Invité régulier
 
Étudiant
Inscription : mars 2007
Messages : 60
Détails du profil
Informations personnelles :
Âge : 24

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2007
Messages : 60
Points : 7
Points : 7
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.
tondeuz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 16h29   #4
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
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!!
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 16h43   #5
Invité régulier
 
Étudiant
Inscription : mars 2007
Messages : 60
Détails du profil
Informations personnelles :
Âge : 24

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2007
Messages : 60
Points : 7
Points : 7
bin ecoute jsais pas voila mon code, j'arrive pas a virer le deuxieme $oConnexion->execute($req);
Code php :
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>
<?
}
}
?>
tondeuz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 17h13   #6
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
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.
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 17h17   #7
Invité régulier
 
Étudiant
Inscription : mars 2007
Messages : 60
Détails du profil
Informations personnelles :
Âge : 24

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2007
Messages : 60
Points : 7
Points : 7
sa c'est automatique mes libellé s'affichent nickel avec ce code
tondeuz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 17h21   #8
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
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
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 17h22   #9
Invité régulier
 
Étudiant
Inscription : mars 2007
Messages : 60
Détails du profil
Informations personnelles :
Âge : 24

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2007
Messages : 60
Points : 7
Points : 7
dézolé égalemnt jsuis vraiment pas très bon en php... merci de ton aide en tout cas c simpa.
tondeuz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 17h29   #10
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Bon essayes ce code :
Code php :
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
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2007, 10h34   #11
Invité régulier
 
Étudiant
Inscription : mars 2007
Messages : 60
Détails du profil
Informations personnelles :
Âge : 24

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2007
Messages : 60
Points : 7
Points : 7
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 :
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.
tondeuz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2007, 11h02   #12
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
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é.
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2007, 11h26   #13
Invité régulier
 
Étudiant
Inscription : mars 2007
Messages : 60
Détails du profil
Informations personnelles :
Âge : 24

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2007
Messages : 60
Points : 7
Points : 7
merci de ton aide vraiment. J'ai reussis a regler mon probleme grâce a des boucles for :
Code :
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é...
tondeuz est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h42.


 
 
 
 
Partenaires

Hébergement Web