Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
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 16/07/2011, 08h04   #1
Membre à l'essai
 
Homme francis la grassa
Webmaster
Inscription : avril 2007
Messages : 56
Détails du profil
Informations personnelles :
Nom : Homme francis la grassa
Âge : 49
Localisation : France, Drôme (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster

Informations forums :
Inscription : avril 2007
Messages : 56
Points : 20
Points : 20
Par défaut boucle for ?

bonjour à tous,

j'essaie de comprendre comment marche la boucle for mais je ne suis même pas sûr de savoir si c'est elle qui correspond à mes attentes ?
j'affiche actuellement une liste dont voici l'image :

et voilà le code :
Code :
1
2
3
4
5
6
7
8
		<?php
			$resultat=mysql_query("SELECT nom, pays, flag, numconstructeur FROM constructeur, pays WHERE pays.libelle=constructeur.pays ORDER BY pays");
			$cons=$ligne['numconstructeur'];
			while($ligne=mysql_fetch_row($resultat))
			{
			echo "<div align=\"left\" ><img src=./images/".$ligne[2]." width=\"20\" border=\"1\">&nbsp;<a href=\"./index.php?page=listecons&ncons=".$ligne[3]."\">".$ligne[0]."</a></div>";
			}
		?>
mon souhait est de n'afficher qu'un drapeau (flag) par pays et non de répéter l'image à chaque fois. je présume que la boucle for est faite pour ça mais je ne sais pas comment l'utiliser !
comment déclarer le tableau en particulier ? (la table pays contient 3 champs, l'id, le nom et le drapeau. l'id du pays est elle reliée au constructeur)
comment imbriquer le code avec le while ?
ou alors, y'a t il une autre methode simple ?

merci d'avance

francis
spokito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2011, 08h34   #2
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Bonjour,
pour commencer, je corrigerais ton code comme suit : (Apostrophes ou guillemets : lesquels choisir ?)
Code :
1
2
3
4
5
6
7
8
9
<?php
	$resultat = mysql_query("SELECT nom, pays, flag, numconstructeur FROM constructeur, pays WHERE pays.libelle = constructeur.pays ORDER BY pays ASC, numconstructeur ASC;");
	$cons = $ligne['numconstructeur'];
	while ($ligne = mysql_fetch_row($resultat))
	{
?>		<div style="text-align:left;"><img src="./images/<?php echo $ligne[2]; ?>" width="20" border="1" alt="" />&nbsp;<a href="./index.php?page=listecons&ncons=<?php echo $ligne[3]; ?>"><?php echo $ligne[0]; ?></a></div>
<?php
	}
?>
Voici une méthode pour ce que tu demandes : (bien que je trouve très bien de mettre le drapeau à chaque ligne)
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
<?php
	// affichage drapeau
$result_flag = mysql_query("SELECT DISTINCT flag FROM pays, constructeur WHERE (pays.libelle = 
constructeur.pays) ORDER BY pays ASC;");
while ($flg = mysql_fetch_row($result_flag))
{
?>
	<div style="clear:both;">
		<div style="float:left; width:25px;"><img src="./images/<?php echo $ligne[2]; ?>" width="20" border="1" alt="" /></div>
		<div style="float:left;">
<?php
	// listes des resultats pour ce pays
	$resultat = mysql_query("SELECT nom, numconstructeur FROM constructeur, pays (WHERE pays.libelle = constructeur.pays AND pays.flag = '".$flg['flag']."' ORDER BY pays ASC, numconstructeur ASC;");
	$cons = $ligne['numconstructeur'];
	while ($ligne = mysql_fetch_row($resultat))
	{
?>		<p><a href="./index.php?page=listecons&ncons=<?php echo $ligne['numconstructeur']; ?>"><?php echo $ligne['nom']; ?></a></p>
<?php
	}
?>
		</div>
	</div>
<?php
}
?>
Une autre méthode (qui suppose que tu as une "image vide flag_vide.png" de la taille d'un drapeau) :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
	$resultat = mysql_query("SELECT nom, pays, flag, numconstructeur FROM constructeur, pays WHERE pays.libelle = constructeur.pays ORDER BY pays ASC, numconstructeur ASC;");
	$cons = $ligne['numconstructeur'];
	$cur_flag = '';
	while ($ligne = mysql_fetch_row($resultat))
	{
		if ($cur_flag == '' || $cur_flag != $ligne['flag']) // 1er drapeau ou drapeau suivant : on l'affiche
		{
			$cur_flag = $ligne['flag'];
			$aff_flag = '<img src="./images/'.$ligne['flag'].'" width="20" border="1" alt="" />&nbsp;';
		} else { // meme drapeau : on ne l'affiche pas (drapeau "vide" a la place)
			$aff_flag = '<img src="./images/flag_vide.png" width="20" border="0" alt="" />&nbsp;';
		}
?>		<div style="text-align:left;"><?php echo $aff_flag; ?><a href="./index.php?page=listecons&ncons=<?php echo $ligne['numconstructeur']; ?>"><?php echo $ligne['nom']; ?></a></div>
<?php
	}
?>
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2011, 09h38   #3
Membre à l'essai
 
Homme francis la grassa
Webmaster
Inscription : avril 2007
Messages : 56
Détails du profil
Informations personnelles :
Nom : Homme francis la grassa
Âge : 49
Localisation : France, Drôme (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster

Informations forums :
Inscription : avril 2007
Messages : 56
Points : 20
Points : 20
Citation:
Envoyé par jreaux62 Voir le message
Bonjour,
pour commencer, je corrigerais ton code comme suit : (Apostrophes ou guillemets : lesquels choisir ?)
merci "superdalmatien" je vais regarder tout ça de pres ! je pense qu'avec un seul drapeau et le nom je pourrais faire une mise en page plus sympa . surement en imbriquant une image de fond par pays.
merci pour ta rapidité

ps: ' ou " ...... merci pour le lien , je t'avoue que j'essaie avec un puis l'autre si ça marche pas ! je suis un programmeur du dimanche...et encore...pas tout les dimanches !
spokito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2011, 10h04   #4
Membre à l'essai
 
Homme francis la grassa
Webmaster
Inscription : avril 2007
Messages : 56
Détails du profil
Informations personnelles :
Nom : Homme francis la grassa
Âge : 49
Localisation : France, Drôme (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster

Informations forums :
Inscription : avril 2007
Messages : 56
Points : 20
Points : 20
pour la première solution j'ai une erreur sur la requête en ligne 15 qui se répète
Code :
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in C:\xampplite\htdocs\test\test.php on line 15
l'image du drapeau ne s'affiche pas non plus malgré le remplacement du $ligne[2] en $ligne[0] .
je vais tester le deuxième, j'ai une image au cas ou
@++

je viens de tester la deuxième formule, je n'ai aucun affichage hormis un grand trait blanc vertical (les images manquantes)

ps: le ";" apres le ASC dans la requête est à enlever ?
spokito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2011, 12h47   #5
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
1er script :
1/ remplace (ligne 9) $ligne[2] par $flg['flag'] (il faut adapter à la requête !) :
Code :
		<div style="float:left; width:25px;"><img src="./images/<?php echo $flg['flag']; ?>" width="20" border="1" alt="" /></div>
et ligne 13, "(" mal placé et ")" manquant :
Code :
	$resultat = mysql_query("SELECT nom, numconstructeur FROM constructeur, pays WHERE (pays.libelle = constructeur.pays AND pays.flag = '".$flg['flag']."') ORDER BY pays ASC, numconstructeur ASC;");
2/ supprime la ligne 14 (inutile, et surtout mal placée) :
Code :
	$cons = $ligne['numconstructeur'];
3/remplace (partout) : mysql_fetch_row par mysql_fetch_array
4/ le ; à la de la requête n'est pas obligatoire, mais il marque et "vérrouille" la fin de la requête (empêchant tout ajout "parasite" éventuel)
5/ au lieu de $ligne[0], $ligne[2] ... utilise les noms des champs : $ligne['nom'], $ligne['blabla'] ...
c'est plus clair et plus facile à lire et à débuguer.
6/ pour les requêtes : tu peux ajouter "or die ..." pour aider au débuguage :
Code :
1
2
3
4
5
6
7
8
9
10
11
<?php	// ...
	$requete = "SELECT nom, numconstructeur FROM constructeur, pays ".
		" WHERE (pays.libelle = constructeur.pays AND pays.flag = '".$flg['flag']."') ".
		" ORDER BY pays ASC, numconstructeur ASC;";
	$resultat = mysql_query($requete) or die('Erreur SQL :<br />'.$requete.'<br />'.mysql_error());
	while ($ligne = mysql_fetch_array($resultat))
	{
		// ...
	}
	mysql_free_result($resultat);
?>
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2011, 14h06   #6
Membre à l'essai
 
Homme francis la grassa
Webmaster
Inscription : avril 2007
Messages : 56
Détails du profil
Informations personnelles :
Nom : Homme francis la grassa
Âge : 49
Localisation : France, Drôme (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster

Informations forums :
Inscription : avril 2007
Messages : 56
Points : 20
Points : 20
Citation:
Envoyé par jreaux62 Voir le message
1er script :
merci pour toute ces bonnes remarques. désolé j'avais pas vu le $flg, comme je fais que du basique j'ai tendance à penser que tout les résultat sont toujours des $ligne !
j'ai testé et ça marche, je vais pouvoir l'adapter à ce que je voudrais faire ....je pense
en attendant j'ai regardé tes cours de redimensionnement d'image. bravo c'est super instructif. je vais potasser ça, ça devrait m'être trés utile .
encore merci pour ton aide !

et si tu permet, j'aimerais bien que tu donne une petite friandise à candy de ma part, elle est vraiment très belle et elle a l'air d'une chienne très agréable à vivre
spokito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2011, 15h31   #7
Membre à l'essai
 
Homme francis la grassa
Webmaster
Inscription : avril 2007
Messages : 56
Détails du profil
Informations personnelles :
Nom : Homme francis la grassa
Âge : 49
Localisation : France, Drôme (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster

Informations forums :
Inscription : avril 2007
Messages : 56
Points : 20
Points : 20
pour info voilà ce que ça donne

c'est pas folichon, mais ça va me permettre plus facilement de faire des "tiroirs"
la liste est vraiment trop longue.
encore merci
spokito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2011, 15h45   #8
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
t'as pas PDO ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2011, 16h22   #9
Membre à l'essai
 
Homme francis la grassa
Webmaster
Inscription : avril 2007
Messages : 56
Détails du profil
Informations personnelles :
Nom : Homme francis la grassa
Âge : 49
Localisation : France, Drôme (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster

Informations forums :
Inscription : avril 2007
Messages : 56
Points : 20
Points : 20
Citation:
Envoyé par stealth35 Voir le message
t'as pas PDO ?
salut, cékoissa ?
spokito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2011, 16h29   #10
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
PDO : PHP Data Objects

"L'extension PHP Data Objects (PDO) définit une excellente interface pour accéder à une base de données depuis PHP
[....]
PDO est fournit avec PHP 5.1 et est disponible en tant qu'extension PECL pour PHP 5.0 ; PDO requiert les nouvelles fonctionnalités OO fournies par PHP 5 et donc, ne fonctionne pas avec les versions antérieures de PHP. "
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2011, 16h33   #11
Membre à l'essai
 
Homme francis la grassa
Webmaster
Inscription : avril 2007
Messages : 56
Détails du profil
Informations personnelles :
Nom : Homme francis la grassa
Âge : 49
Localisation : France, Drôme (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster

Informations forums :
Inscription : avril 2007
Messages : 56
Points : 20
Points : 20
quel peut être l'interet pour moi exactement ?
quelque chose de particuliers concernant les tiroirs ? je pensais qu'on faisant ça avec du javascript
spokito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2011, 16h39   #12
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Non, ca n'a rien à voir ...

C'est juste une "nouvelle" façon ("orientée objet") de se connecter à une BdD en php.
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2011, 17h28   #13
Membre à l'essai
 
Homme francis la grassa
Webmaster
Inscription : avril 2007
Messages : 56
Détails du profil
Informations personnelles :
Nom : Homme francis la grassa
Âge : 49
Localisation : France, Drôme (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster

Informations forums :
Inscription : avril 2007
Messages : 56
Points : 20
Points : 20
Citation:
Envoyé par jreaux62 Voir le message
Non, ca n'a rien à voir ...

C'est juste une "nouvelle" façon ("orientée objet") de se connecter à une BdD en php.
ah ok, je viens de verifier mon hebergeur et la reponse est oui, donc je pourrais activée la fonction si besoin.
spokito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2011, 17h37   #14
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
Citation:
Envoyé par spokito Voir le message
ah ok, je viens de verifier mon hebergeur et la reponse est oui, donc je pourrais activée la fonction si besoin.
tu peux faire du FETCH_GROUP (fais une recherche avec pdo fetch_group).
__________________
http://blog.stealth35.com/
stealth35 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 22h11.


 
 
 
 
Partenaires

Hébergement Web