[Php] Mettre les resultas while en variable
Résolu
Profil bloqué
-
Profil bloqué -
Profil bloqué -
Bonjour tous le monde.
Je cherche a faire un truc peut être bourrin mais j'ai pas d'autre idée pour le faire;
J'ai des articles enregistrez dans des catégorie. chaque catégorie peut contenir une autre catégorie.
Admettons que j'ai la catégorie "Foie Gras" d'alias:"foiegras" qui contient d'autres catégories:"Foie Gras Entier" alias "foiegrasentier" et "Foie Gras Cru" alias "foiegrascru".
Les deux sous-catégories sont pour id_parent l'id de leur parent :p
Le but du script est d'afficher les articles de la catégorie Foie gras et des sous catégorie (il peut y avoir des sous-sous-sous-....-catégories, et la je ne sais pas encore comment faire)
J'applique donc une requête pour recherche dans la table catégorie l'id de la catégorie foie gras demander, puis une autre pour recherche les catégorie qui sont enfants de la catégorie Foie Gras et la, comme j'ai plusieurs données, j'utilise un while pour les sortir.
mais je dois les réutiliser pour la troisième requête qui vas cherche dans la table articles
mais comment appliquer les résultat d'un while dans l'écriture d'une requête?
j'ai essayer de l'installer dans la requête mais cela me donne une erreur j'ai essayer de mettre le while en valeur de variable mais la aussi, j'ai des erreurs.
Voila le code:
Merci de tout coeur si vous trouvez comment faire ce *** de code :p car je farfouille partout et enregistrer le résultat d'un while je parviens pas a la faire.
Sinon, si vous savez comment faire de la récursivité afin de regardez s'il y a des enfants pour chaque sous-catégorie trouver et ainsi pouvoir descendre jusqu'au bout, je vous en serait très reconnaissant.
Je cherche a faire un truc peut être bourrin mais j'ai pas d'autre idée pour le faire;
J'ai des articles enregistrez dans des catégorie. chaque catégorie peut contenir une autre catégorie.
Admettons que j'ai la catégorie "Foie Gras" d'alias:"foiegras" qui contient d'autres catégories:"Foie Gras Entier" alias "foiegrasentier" et "Foie Gras Cru" alias "foiegrascru".
Les deux sous-catégories sont pour id_parent l'id de leur parent :p
Le but du script est d'afficher les articles de la catégorie Foie gras et des sous catégorie (il peut y avoir des sous-sous-sous-....-catégories, et la je ne sais pas encore comment faire)
J'applique donc une requête pour recherche dans la table catégorie l'id de la catégorie foie gras demander, puis une autre pour recherche les catégorie qui sont enfants de la catégorie Foie Gras et la, comme j'ai plusieurs données, j'utilise un while pour les sortir.
mais je dois les réutiliser pour la troisième requête qui vas cherche dans la table articles
mais comment appliquer les résultat d'un while dans l'écriture d'une requête?
j'ai essayer de l'installer dans la requête mais cela me donne une erreur j'ai essayer de mettre le while en valeur de variable mais la aussi, j'ai des erreurs.
Voila le code:
<?php $cat=$_GET['alias_cat'];//recupere l'alias de la catégorie $sql_cat_sec='SELECT id FROM categorie WHERE alias="'.$cat.'"';//vas cherhcez l'id de la categorie demander $rep_cat_sec=mysql_query($sql_cat_sec); $don_cat_sec=mysql_fetch_array($rep_cat_sec); $sql_cat_sec2='SELECT alias FROM categorie WHERE id_parent="'.$don_cat_sec['id'].'"';//vas cherhcez les alias des categorie faisant partie de $cat grace a l'id de $cat et id_parent $rep_cat_sec2=mysql_query($sql_cat_sec2); //ATTENTION VOILA LES PROBLEMES: //J'ai tester les possibilite ci dessous mais n'y arrive pas. /*/--1--/*/$azert=while($don_cat_sec2=mysql_fetch_array($rep_cat_sec2)){' AND alias_cat="'.$don_cat_sec2['alias'].'"';}; $sql_acc='SELECT * FROM article WHERE alias_cat="'.$cat.'"'.$azert.' ORDER by ordre ASC'//mettre dans une variable le while afin d'enregistrez les resultats /*/--2--/*/$sql_acc='SELECT * FROM article WHERE alias_cat="'.$cat.'"'while($don_cat_sec2=mysql_fetch_array($rep_cat_sec2)){' AND alias_cat="'.$don_cat_sec2['alias'].'"';}' ORDER by ordre ASC';//mettre dans la requete sql le while /*/--3--/*/$sql_acc='SELECT * FROM article WHERE alias_cat="'.$cat.'"'.while($don_cat_sec2=mysql_fetch_array($rep_cat_sec2)){' AND alias_cat="'.$don_cat_sec2['alias'].'"';}.' ORDER by ordre ASC';//mettre dans la requete sql le while avec les '.' pour ajouter les infos. /*/--mettre le 1, 2 ou 3 ici avec la requete qui vas cherhcez les articles qui font partie de $cat et de c'est enfants./*/ $rep_acc=mysql_query($sql_acc); while($don_acc=mysql_fetch_array($rep_acc)){ ?> <div class="bloc"> <?php echo ' <b><u>'.$don_acc['name'].'</u></b><br /><br />'; if(empty($don_acc['creation']) && ($don_acc['author'])){}else{ echo ' Rédigé le '.$don_acc['creation'].' par <b>'.$don_acc['author'].'</b><br /><br />';} echo ' '.nl2br($don_acc['intro']).''; if(empty($don_acc['texte'])){}else{echo '<br /><br /><i><a href="">Lire la suite ...</a></i>';} if(empty($don_acc['modif'])){}else{echo '<br /><br /> <i>Modifié le '.$don_acc['modif'].'</i>';} ?> </div> <?php } ?>
Merci de tout coeur si vous trouvez comment faire ce *** de code :p car je farfouille partout et enregistrer le résultat d'un while je parviens pas a la faire.
Sinon, si vous savez comment faire de la récursivité afin de regardez s'il y a des enfants pour chaque sous-catégorie trouver et ainsi pouvoir descendre jusqu'au bout, je vous en serait très reconnaissant.
A voir également:
- [Php] Mettre les resultas while en variable
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Variable d'environnement temp - Forum Word
- Vba range avec variable ✓ - Forum VB / VBA
- Le fichier contient un programme écrit en python. le programme construit un mot secret mais il ne l'affiche pas. modifiez ce programme afin que à chaque itération de la boucle : la variable a augmente de 2 la variable b diminue de 1 ajoutez une instruction pour faire afficher le mot secret construit. quel est ce mot secret ? ✓ - Forum Python
9 réponses
Ce n'est pas le while qui te donne les alias, mais le mysql_fetch_array qui lui est une fonction PHP qui renvoie une donnée.
Tu n'as qu'à essayer de les mettre dans une liste du genre:
Tu n'as qu'à essayer de les mettre dans une liste du genre:
while($don_cat_sec2=mysql_fetch_array($rep_cat_sec2) { $alias[]=$don_cat_sec2['alias']; }
Bonjour,
while n'est pas une fonction PHP, c'est un mot clé comme if par exemple... while ne renvoie rien, tu ne peux donc pas faire:
$pc=while(...)
while n'est pas une fonction PHP, c'est un mot clé comme if par exemple... while ne renvoie rien, tu ne peux donc pas faire:
$pc=while(...)
OK. comme ca, j'arrive a avoir les retour. seulement, comment avoir automatiquement les $alias[] dans le sql qui augmentent de chiffres afin de devenir $alias[0] puis $alias[1] jusqu'à ce qu'il n'y ait plus d'alias a mettre?
car la j' dois entre manuellement combien je vais avoir de catégorie.
P.S: bien sur, je continue de cherchez a cote. Je pose la question ca permet de ne pas perdre de temps mais c'est pas de la demande de boulot tout fait :p
Pour infos, je suis en train de faire mon cms donc je demande pas a ce que l'on me le fasse :p
car la j' dois entre manuellement combien je vais avoir de catégorie.
P.S: bien sur, je continue de cherchez a cote. Je pose la question ca permet de ne pas perdre de temps mais c'est pas de la demande de boulot tout fait :p
Pour infos, je suis en train de faire mon cms donc je demande pas a ce que l'on me le fasse :p
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Comme ceci... (je prend une requête sql en exemple)
Imagines que tu as une liste de nom dans une liste $nom[], et que tu veux afficher le prénom, stocké dans une table "personne", de tous dans une page php, tu fais:
En somme, tu met ta requête dans une boucle... tu peux très bien imbriqué plusieurs boucles ensembles, exemple, tu peux très bien faire:
Imagines que tu as une liste de nom dans une liste $nom[], et que tu veux afficher le prénom, stocké dans une table "personne", de tous dans une page php, tu fais:
for($position=0;$position<sizeof($nom);$position++) { $nom_courant=$nom[$position]; $req="select prenom from personne where nom='".$nom_courant."'"; $res=mysql_query($req) or die(mysql_error()); $donnees=mysql_fetch_array($res); echo "prénom :".$donnees['prenom']; }
En somme, tu met ta requête dans une boucle... tu peux très bien imbriqué plusieurs boucles ensembles, exemple, tu peux très bien faire:
for($position=0;$position<sizeof($nom);$position++) { $nom_courant=$nom[$position]; $req="select prenom from personne where nom='".$nom_courant."'"; $res=mysql_query($req) or die(mysql_error()); while($donnees=mysql_fetch_array($res)) { .... } }
Oui mais ce système augmente drastiquement le nombre de requête a effectué. si j'ai 100 articles a afficher, cela vas faire 100 requêtes.
C'est pour cela que je voulais avoir une requête qui se modifie automatiquement avec les données récolter.
déjà 3 requêtes pour afficher une suite d'articles, c'est pas très optimiser on doit pouvoir faire mieux, si j'en rajoute a mort, c'est le serveur qui vas m'éjecter.
c'est pas possible d'entrée en variable le résultat d'une recherche qui sort par un while ou un for?
car la j'ai plus qu'a modifier ma requête pour faire des ajout. le pb, c'est que le while ou le for ne vont pas dans la requête il faut donc que j'enregistre les données qu'il me donne afin de les réinjecter.
Donc comment faire?
C'est pour cela que je voulais avoir une requête qui se modifie automatiquement avec les données récolter.
déjà 3 requêtes pour afficher une suite d'articles, c'est pas très optimiser on doit pouvoir faire mieux, si j'en rajoute a mort, c'est le serveur qui vas m'éjecter.
c'est pas possible d'entrée en variable le résultat d'une recherche qui sort par un while ou un for?
car la j'ai plus qu'a modifier ma requête pour faire des ajout. le pb, c'est que le while ou le for ne vont pas dans la requête il faut donc que j'enregistre les données qu'il me donne afin de les réinjecter.
Donc comment faire?
A tester:
Si tu as une liste $nom[]...
Alors, peut-être tu peux faire ceci:
$chaine="nom='";
while($pos<sizeof($nom))
{
nom_courant=$nom[$pos];
if($pos!=0)
$chaine=$chaine." AND nom=";
$chaine=$chaine.$nom_courant."'";
$pos++;
}
Tu devrais avoir une chaine qui ressemble à ça
"nom='patrick' AND nom='louis' AND nom='Marie'...."
Ensuite tu l'insère dans ta requête
req = "select prenom from personne where ".$chaine;
C'est un truc que je viens d'élaborer donc je n'ai aucune certitude que cela va fonctionner.
Si tu as une liste $nom[]...
Alors, peut-être tu peux faire ceci:
$chaine="nom='";
while($pos<sizeof($nom))
{
nom_courant=$nom[$pos];
if($pos!=0)
$chaine=$chaine." AND nom=";
$chaine=$chaine.$nom_courant."'";
$pos++;
}
Tu devrais avoir une chaine qui ressemble à ça
"nom='patrick' AND nom='louis' AND nom='Marie'...."
Ensuite tu l'insère dans ta requête
req = "select prenom from personne where ".$chaine;
C'est un truc que je viens d'élaborer donc je n'ai aucune certitude que cela va fonctionner.
oki. Je vais tester j'ai aussi un truc que j'ai trouver ailleurs:
a voir aussi
$req = mysql_query("SELECT nom FROM client;",$db); while ($info = mysql_fetch_array($req)) { $varT .= $info[nom] .", " ; }
a voir aussi
Bon, j'ai reussis avec le code
j'ai bien ce que je veux qui apparait en plus.
Merci de ton aide ( je vais aussi tester ton code afin de pouvoir passer de l'un a l'autre si nécessaire. mais il me semble que se sont les même.
$varT=''; while($don_cat_sec2=mysql_fetch_array($rep_cat_sec2)){ $varT.=' OR alias_cat="'.$don_cat_sec2['alias'].'"'." "; } $sql_acc='SELECT * FROM article WHERE alias_cat="'.$cat.'"'.$varT.' ORDER by ordre ASC';
j'ai bien ce que je veux qui apparait en plus.
Merci de ton aide ( je vais aussi tester ton code afin de pouvoir passer de l'un a l'autre si nécessaire. mais il me semble que se sont les même.