while dans un while

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : while dans un while

Re: while dans un while

par kopax » 12 avr. 2010, 02:59

Merci à toi, c'est la solution, temps d'édition 15 secondes et ça fonctionne :)

Re: while dans un while

par Nours312 » 12 avr. 2010, 01:50

Comme c'est une boucle, la 1er boucle trouve toute les marques des produits, si une marques apparait sur 5 produits, il va faire, dans la 2nd boucle, 5 fois la marque, avec les produits de la marque.
Logique en faite, mais je n'y avais pas pensé.
il faut que tu places un DISTINCT(fieldName) quelque part !!

@+

Re: while dans un while

par kopax » 12 avr. 2010, 00:43

Je n'ai toujours pas trouvé de solution à mon problème de doublon.

Svp help |*()

Peut on faire des variables à nom de variable variables

par kopax » 11 avr. 2010, 11:16

Je n'arrive pas à m'en sortir avec ta méthode, sans exemple concret je vois pas trop à quoi ça dois ressembler.
J'ai pensé à une autre solution peut-être un peu farfelue.

Peut on faire des variables à nom de variable variables?
Je m'explique :
$prefix = "prefix_";

while(
// On exécute une requête sql  la base de donnée
if(empty(${$prefix.$data['donnee']}))
  {
    ${$prefix.$data['donnee']} = $prefix.$data['donnee'];
    //Crée une variable php $prefix_1

    echo "La variable ".$prefix.$data['donnee']." viens d'être crée";
    // Affichera "La variable prefix_1 viens d'être crée"
  }
else
  {
    echo "La variable ".$prefix.$data['donnee']." existe déjà";
    // Affichera "La variable prefix_1 existe déjà"
  }
)
Ainsi je pourrai afficher la marque une seule fois et afficher les produits une fois.
Mais bon j'ai pas trouvé sur Google de threads qui parle de ça, hormis les variables dynamiques mais ça reste encore éloigné de ce que j'imagine.

Re: while dans un while

par kopax » 10 avr. 2010, 20:41

cool je vais encore apprendre des trucs, en plus je venais de lire le tuto sur les tableaux associatif, par contre j'ai déjà regardé du coté de foreach pour faire cette exercice, et j'ai pas trouvé d'exemple concret avec base de donnée, ça m'a pas aidé à comprendre, mais je vais voir ça.

Re: while dans un while

par Aureusms » 10 avr. 2010, 20:26

Moi je fais ainsi :
première boucle : mise des variables dans un tableau associatifs
Ensuite je fais une boucle foreach du tableau où je refais ma requète sql selon des conditions if.

Re: while dans un while

par kopax » 10 avr. 2010, 20:14

Merci bien,

j'avais pas pensé à faire comme ca,
grâce à toi j'ai trouvé l'erreur de syntaxe qui venais effectivement de la requête:

Voici la ligne modifié:

Code : Tout sélectionner

$sql_b = "SELECT * FROM $table_products WHERE products_cat='".$_POST["categories"]."' AND products_brand='".$data_a['products_brand']."' ORDER BY products_model ASC, products_id ASC";
Néemoins, et ca je n'y avais pas pensé,

Comme c'est une boucle, la 1er boucle trouve toute les marques des produits, si une marques apparait sur 5 produits, il va faire, dans la 2nd boucle, 5 fois la marque, avec les produits de la marque.
Logique en faite, mais je n'y avais pas pensé.

En image c'est plus claire :
Image

J'ai pas d'idée, il y aurai pas un tuto qui traine ou une âme gentil pour m'expliqué comment arrivé au resultat que je recherche.

Re: while dans un while

par Nours312 » 10 avr. 2010, 19:03

En claire la requêtes est la bonne, mais le résultat du ème while n'est toujours pas présent :/
ok ... tu l'as testé dans phpMyAdmin ?

dans ta seconde boucle, fais un print_r($data_b) pour voir ce qui se passe ...

Re: while dans un while

par kopax » 10 avr. 2010, 17:34

Effectivement, j'ai mis un peu d'ordre et j'ai fais un eco de ma requete sql_b, j'ai aussi apporté des modifications dans la secondes requetes qui n'était pas assez spécifique :
$sql_a = "SELECT * FROM $table_products WHERE products_cat=".$_POST["categories"]." ORDER BY products_brand ASC, products_id ASC"; 

$res_a = mysql_query($sql_a);
while($data_a = mysql_fetch_assoc($res_a))
{
	echo "<option>&nbsp;".$data_a["products_brand"]."</option>";

	$sql_b = "SELECT * FROM $table_products WHERE products_cat=".$_POST["categories"].", products_brand=".$data_a['products_brand']." ORDER BY products_model ASC, products_id ASC";

	echo "<option>$sql_b</option>";

	$res_b = mysql_query($sql_b);
	while($data_b = mysql_fetch_assoc($res_b))
	{
		echo "<option value='".$data_b["products_id"]."'>&nbsp;&nbsp;".$data_b["products_model"]."</option>";
	}
}
Voici ce que l'eco me donne :
SELECT * FROM products WHERE products_cat=1, products_brand=Bitz ORDER BY products_model ASC, products_id ASC
En claire la requêtes est la bonne, mais le résultat du ème while n'est toujours pas présent :/

Re: while dans un while

par Nours312 » 10 avr. 2010, 17:10

as tu affiché ta seconde requete !?

placée avant la déclaration de la variable qu'elle contient, elle ne peux fonctionner !! fais :

echo $sql_b ; pour mieux comprendre ^^

conçoit que si tu fait ::
$b = $a ;
$a = 1;
echo $b ;
ben tu n'aura pas le résultat souhaité ;)

while dans un while

par kopax » 10 avr. 2010, 16:16

Bonjour,

J'essai de faire un <select>, ou d'abord on irai chercher dans la base de donnée les marques, puis dans la même base de donnée affiché en dessous les produits de la même marque.

Pour le moment mon code ressemble à ca mais ca ne fonctionne pas :
$sql_a = "SELECT * FROM $table_products WHERE products_cat=".$_POST["categories"]." ORDER BY products_brand ASC, products_id ASC";
$sql_b = "SELECT * FROM $table_products WHERE products_brand=".$data_a['product_brand']." ORDER BY products_model ASC, products_id ASC";	
	
$res_a = mysql_query($sql_a);
while($data_a = mysql_fetch_assoc($res_a))
{
	echo "<option>&nbsp;".$data_a["products_brand"]."</option>";

	$res_b = mysql_query($sql_b);
	while($data_b = mysql_fetch_assoc($res_b))
	{
		echo "<option value='".$data_a["products_id"]."'>&nbsp;&nbsp;".$data_b["products_model"]."</option>";
	}
}
Je sais pas si une boucle dans une boucle ça fais un peu lourd point de vue des requêtes.
Si il y a des meilleurs idées qui reste pas trop compliqué je suis preneur.

Il n'y a pas de message d'erreur, mais la deuxième boucle ne fonctionne pas et je me retrouve avec un <select> contenant uniquement la liste des differentes marque sans les produits en dessous.

kopax