Spark Posté 25 Novembre 2007 Posté 25 Novembre 2007 (modifié) Bonjour, J'ai un souci insondable pour moi, peut être que vous ? J'ai une requête genre : $reponse = mysql_query('SELECT * FROM truc'); J'utilise une boucle pour afficher sans problème les données : while ($donnees = mysql_fetch_array($reponse)){ echo $donnees['truc1'];} Je veux réutiliser le résultat dans une fonction : $reponse = mysql_query('SELECT * FROM truc');echo showCalendar($periode_chosie,$reponse);while ($donnees = mysql_fetch_array($reponse)){ echo $donnees['truc1'];} En dans la fonction (exemple simplifié) je fais : function showCalendar($periode,$evenement){ while ($donnees = mysql_fetch_array($evenement)) { echo $donnees['truc1']; } return $leCalendrier;//$evenement==Resource id #5 O_o} Mais là j'ai rien qui s'affiche dans aucune des deux boucle O_o Au cas ou je ne suis pas claire si je fais ça ça fonctionne: function showCalendar($periode){ $reponse = mysql_query('SELECT * FROM truc'); while ($donnees = mysql_fetch_array($reponse)) { echo $donnees['truc1']; } return $leCalendrier;} Merci pour vos lumières Modifié 26 Novembre 2007 par captain_torche
Anonymus Posté 25 Novembre 2007 Posté 25 Novembre 2007 [joke] (en cours d'édition, j'attends la question pour fournir la réponse ) [/joke] Le raisonnement logique (à mon avis) aurait été de passer soit l'ensemble (requète + mysql_query) dans la fonction, comme le montre ton dernier exemple, mais éventuellement, tu pourrais passer la requète en paramètre, et laisser la fonction mysql_query dans la fonction showcalendar. Ca donnerait : $query = "SELECT * FROM truc";echo showcalendar($query);function showcalendar($requete){$r = mysql_query($requete);while($row = mysql_fetch_array($r)){ echo'plop'; }} Nico.
Spark Posté 25 Novembre 2007 Auteur Posté 25 Novembre 2007 (modifié) Ca revient à faire 2 fois la même requêtes aussi. Modifié 25 Novembre 2007 par Spark
Anonymus Posté 25 Novembre 2007 Posté 25 Novembre 2007 ? Non, pourquoi ? Tu appelles ta fonction plusieurs fois ? Alors la solution est par les tableaux > Tu stockes le résultat dans un tableau, et c'est celui-ci que tu appelles 2 fois
Spark Posté 25 Novembre 2007 Auteur Posté 25 Novembre 2007 (modifié) Ca revient à en faire 1 hors de la fonction et une dans la fonction. Je viens d'essayer de réunir ces 2 éléments dans la fonction (ce que je n'aime pas trop puisque je réunis 2 éléments graphique différent mais bon ce n'est pas très grave), 1 requêtes, 2 mysql_fetch_array, résultat rien de fonctionne, mais j'ai plus d'un problèmes, je continu à chercher. Quand à stocker les info dans un tableau c'est dès le départ ce que j'ai essayé de la faire mais sans succès (je suis pas doué ). Modifié 25 Novembre 2007 par Spark
Anonymus Posté 26 Novembre 2007 Posté 26 Novembre 2007 Postes nous le bon code, que l'on puisse t'aider. 1/ ta fonction, 2/ le code qui l'appelle. Nico.
Spark Posté 26 Novembre 2007 Auteur Posté 26 Novembre 2007 (modifié) Voici le code d'origine : http://www.sutekidane.net/blog/afficher-un...-et-en-css.html Repère la partie : // 1 est toujours vrai => on affiche un lien à chaque fois // A vous de faire les tests nécessaire si vous gérer un agenda par exemple if (1) { $class = " class=\"itemExistingItem\""; $afficheJour = "<a href=\"\">" . Date("j", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode))) . "</a>"; } else { $class = ""; } Cette parti du code est faite pour formater les jours du calendrier à notre guise. Je fais donc une requête pour récupérer les jours avec un évènement, dans le mois en cour : list($Y,$m) = split('-',$periode); mysql_query('SELECT id, groupe, detail, DATE_FORMAT(date, "%d") AS date2 FROM agenda WHERE DATE_FORMAT(date, "%m")='.$m.' AND DATE_FORMAT(date, "%Y")='.$Y)or die(mysql_error()); Puis à la place du 1er code cité plus haut Je mets : while ($donnees = mysql_fetch_array($reponse)) { // 1 est toujours vrai => on affiche un lien à chaque fois // A vous de faire les tests nécessaire si vous gérer un agenda par exemple if ($donnees['date2']==(Date("j", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode))))) { $class = " class=\"itemExistingItem\""; $afficheJour = "<a href=\"\">" . Date("j", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode))) . "</a>"; } else { $class = ""; } } Problème 1, si je ne mets pas la requête dans la boucle while ($pas < $nb_jour) ça ne fonctionne. Je ne peut pas la laisser dans la boucle sinon 30 requêtes ! Problème 2, je fais exactement la même requête pour fair un listing des évènement du moi hors de la fonction. Si je fais le listing dans la fonction (pour économiser 1 requête et divers redondance de code) j'utilise une 2ème fois la fonction mysql_fetch_array mais elle n'est pas prise en compte. Pour ajouter le listing dans la requête il faut que je remplace : $leCalendrier = ""; par: $leCalendrier = " <div id=\"calendrier\">\n <div id=\"calendrier1\">\n <h1 style=\"text-align: center; font-size: 11pt; margin: 0px auto 3px auto;\">Calendrier</h1>"; Et : $leCalendrier .= "\n\t</ul>\n"; // Retour de la chaine contenant le Calendrier return $leCalendrier; Par (quelque chose du genre) : $leCalendrier .= "\n\t</ul>\n"; $leCalendrier .= " </div>\n <div id=\"calendrier3\">\n"; $leCalendrier .= "<ul>\n"; while ($donnees = mysql_fetch_array($reponse)) { $leCalendrier .= "<li><span class=\"itemExistingItem\">".$donnees['date2']."</span> - ".$donnees['groupe']."</li>\n"; } $leCalendrier .= "</ul>\n"; $leCalendrier .=" </div>\n <div id=\"calendrier2\"></div>\n </div>"; // Retour de la chaine contenant le Calendrier return $leCalendrier; Et le code qui appel la fonction : <?php if (isset($_GET['periode'])) { $periode_chosie=$_GET['periode'];//je verrais plus tard pour optimiser la récupération des infos et la sécurité } else { $periode_chosie=date("Y-m"); }echo showCalendar($periode_chosie); ?> Modifié 26 Novembre 2007 par Spark
Spark Posté 26 Novembre 2007 Auteur Posté 26 Novembre 2007 Pour faire simple il me faudrait savoir comment mettre le résultat d'une requête dans un tableau Mais peut ont après dans un boucle utiliser les donnés de la même façon qu'avec un mysql_fetch_array ? C'est à dire avec le nom des champs comme nom de variable ?
Spark Posté 26 Novembre 2007 Auteur Posté 26 Novembre 2007 (modifié) Bon ba après en avoir chier en découvrant ce que je peux faire et ce que je ne peut pas faire j'ai finalement réussis à créer un tableau : while ($donnees = mysql_fetch_array($reponse)){ $mysql_array[] = array(id => $donnees['id'], groupe => $donnees['groupe'], detail => $donnees['detail'], date2 => $donnees['date2']);}foreach($mysql_array AS $donnees){ echo $donnees['id'];} Modifié 26 Novembre 2007 par Spark
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant