Vous n'êtes pas identifié(e).
Re,
Désolé je me suis trompé de requête^^ une fois n'est pas coutume (du moins il parait)
Alors les voici à nouveau
Merci pour ta réponse concernant les foreach
foreach ($baseRef as $BD){
3.
4. $nomBase=$BD['Bd_Native'];
5.
6. $adresseDebut=$BD['adresseWebDom_debut'];
7.
8. $adresseFin=$BD['adresseWebDom_fin'];
9.
10. printf('<li>%s</li>',"<center><"."<a href=\"$adresseDebut.$domaine.$adresseFin\">$nomBase</a>"."></center>");
11.
12. }
13.
14. unset($BD);
Alors, dans le code ci-dessus, vérifie bien si 'Bd_Native' et 'adrsseWebDom_debut' existent bien avec la même casse dans ta table bdd (au cas où). Car dans cet exemple ton print reste dans ton foreach donc les variables récupérées doivent obligatoirement s'afficher. Ce qu'il faut savoir c'est qu'à l'extérieur du foreach seul la dernière variable du foreach reste accessible et rémanente. Donc ton code se comporte comme si ta sortie affichage était demandée depuis l'extérieur du foreach, or ici il se trouve dedans, et ca me demande un peu plus de reflexion pour trouver le soucis.^^
Dernière modification par Jc (16-07-2013 18:20:49)
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
Essaye ceci et dit moi si ca fonctionne^^
Dernière modification par Jc (16-07-2013 18:21:04)
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
Tant fait pas pour les requetes, je vais les retester
Sinon pour le foreach que tu as cite, je mets en fait le print a l'exterieur du foreach, car si je le mets a l'interieur, tout s'affiche certes, mais seulement pour le 1er organisme et non pour tous les organismes tu vois, donc je le mets a l'exterieur et la cela d'affiche pour chaque organisme certes, mais seule la derniere valeur est affichee et non la liste. C'est un vrai cauchemard pour ces liens
Hors ligne
Essaye ceci et dit moi si ca fonctionne^^
foreach ($baseRef as $BD){
$nomBase=$BD['Bd_Native'];
$adresseDebut=$BD['adresseWebDom_debut'];
$adresseFin=$BD['adresseWebDom_fin'];
print "<a href=\"$adresseDebut.$domaine.$adresseFin\">$nomBase</a>";
}
unset($BD);
oui cela marche tres bien, c'est ce que j'avais fait au depart (et cela marche de la meme facon meme sans le unset). En revanche, ce foreach va s'afficher que pour le 1er organisme et non tous les autres, c'est pour ca que j'ai sorti le print du foreach et cherché a rentrer les valeurs du foreach dans une variable pour les afficher a l'exterieur de la boucle, c'est tres enervant.
Hors ligne
Merci t'es sympa avec moi
Alors avec ton foreach, tu n'as pas le choix, tu dois garder ton print à l'intérieur. En le laissant à l'interieur donc, le unset $DB; doit résoudre ton problème d'affichage sur les lectures suivant la première, et doit donc te générer une sortie à chaque enregistrement de ta boucle.
Tiens moi au courant
Dernière modification par Jc (13-05-2010 17:00:12)
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
Voici pour la 1ere requete super rapide:
Hors ligne
2eme requete tout aussi rapide ^^
Je devrais peut etre m'y mettre alors
Hors ligne
Merci t'es sympa avec moi
Alors avec ton foreach, tu n'as pas le choix, tu dois garder ton print à l'intérieur. En le laissant à l'interieur donc, le unset $DB; doit résoudre ton problème d'affichage sur les lectures suivant la première, et doit donc te générer une sortie à chaque enregistrement de ta boucle.
Tiens moi au courant
Helas non ca ne resoud pas le pb, comme je te l'avais explique, j'avais essaye de faire le print a l'interieur avec le unset comme tu m'as montre mais cela m'affiche les resultats que pour le 1er organisme, pas tous les autres
Je vais essayer d'y reflechir un peu plus.
Merci en tout cas, tu es syper sympa.
Hors ligne
Concernant les requêtes, ca me fait plaisir qu'elles resolvent le problème de lenteur qu'avait la première, mais je ne m'attendais pas à tant d'écart, je trouve ça même abusé.. mais bon tant mieux pour toi. Si les 2 nouvelles sont autant performantes, choisi la 3e car elle t'offre un tri sur tes résultats^^.
Concernant le unset, faut mettre des parenthèses que j'avais oublié, mais ca tu as du déjà le faire sinon tu aurait eu une erreur d'execution.
Par contre j'ai commencé à faire des tests de mon coté et j'ai pas ce problème pour le moment. Je vois ca de près et je te tiens au courant.
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
Concernant les requêtes, ca me fait plaisir qu'elles resolvent le problème de lenteur qu'avait la première, mais je ne m'attendais pas à tant d'écart, je trouve ça même abusé.. mais bon tant mieux pour toi. Si les 2 nouvelles sont autant performantes, choisi la 3e car elle t'offre un tri sur tes résultats^^.
Concernant le unset, faut mettre des parenthèses que j'avais oublié, mais ca tu as du déjà le faire sinon tu aurait eu une erreur d'execution.
Par contre j'ai commencé à faire des tests de mon coté et j'ai pas ce problème pour le moment. Je vois ca de près et je te tiens au courant.
Et bien deja imagine qu'avec tous les foreach que j'avais dans mon code, ca prenait meme pas 2 sec, c'etait tres rapide aussi alors c'est vrai qu'avoir une requete unifiee qui soit plus rapide que des requetes separees, c'est tres interessant a exploiter, cela vient des index que tu as mis sur ta requete je pense, cela a augmente considerablement la vitesse de la requete; dans la requete unifiee que j'avais faite moi, je n'avais mis aucun index, ce qui explique surement la lenteur d'execution.
Oui j'ai vu l'erreur et en effet j'ai rajoute les parentheses pour le unset ($BD).
Merci encore pour tout.
Hors ligne
Re,
Comme tu vois j'ai fait vite^^ et je pense avoir trouvé l'origine du problème de ton foreach.
Je vais prendre un exemple clair pour bien visualiser comment ton foreach fonctionne.
Prenons le tableau suivant :
// Ce que tu fais toi dans tes foreach corresponds à ceci :
foreach ($row as $DB){
$my_string_2 = $DB[1];
$my_string_3 = $DB[2];
$my_string_4 = $DB[3];
print " $my_string_1.$my_string_2.$my_string_3";
}
// d'ailleurs excuse moi au passage mais que tu mettes finalement le print à l'interieur ou a l'exterieur concernant ton problème ca ne change rien même si l'affichage de ton print change dans l'un ou l'autre cas.
// Ce qu'il faut savoir:
// Dans notre exemple le tableau $row possède 5 indexes et ta boucle foreach va parcourir le tableau à chaque itération et c'est là ou réside ton problème c'est que ton code ne prends pas en compte cela. Pour avoir le bon affichage voici un exemple du code que l'on peut appliquer :
$i=0;
foreach ($row as $DB){
$i++;
if ($i==1){$my_string_1=$DB[0];}
if ($i==2){$my_string_2=$DB[0];}
if ($i==3){$my_string_3=$DB[0];}
if ($i==4){$my_string_4=$DB[0];}
if ($i==5){$my_string_5=$DB[0];}
}
print " $my_string_1.$my_string_2.$my_string_3";
// Ici ton print contiendra les bonnes valeurs^^
// ne pas oublier cependant :
unset($DB);
Et voila
PS: Si tu ne veux plus entendre parler des foreach, utilise mon traitement PHP
Dernière modification par Jc (16-07-2013 18:21:37)
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
cela ne marche toujours pas helas:( cette fois ci, seule la 1ere valeur est renvoyee, c'est tres byzarre. Je vais peut etre essaye ta methode car la je suis depassee lol.
Hors ligne
Retire ton foreach et remplace le par ça
ca devrait suffire.
Dernière modification par Jc (16-07-2013 18:21:50)
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
la il m'ecrit pour la solution que tu me proposes:
Je suis vraiment frustree car je n'arrive pas a trouver de solution lol.
Hors ligne
Re,
Désolé^^ à force de me concentrer sur le foreach j'avais oublié que ton $BaseRef n'était pas un tableau mais un PDOstatement.
Est-ce que les champs Bd_Native, adresseWebDom_debut, adresseWebDom_fin sont dans l'ordre de ta requête et est-ce que ce sont les seuls champs appelés par ta requête?
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
Si la réponse est oui alors tu peux faire cela :
Dernière modification par Jc (16-07-2013 18:22:00)
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
Jc, en regardant ma BD de plus pres, je me suis rendue compte que dans tous les cas, cette requete ne va renvoyer qu' un seul resultat a chaque fois (le test que j'avais fait en renvoyait plusieurs mais c'etait juste un test pour voir si jamais j'ai plusieurs enregistrements, ce que cela donnerait et si toutes les valeurs seraient renvoyees). Donc le pb est resolu pour ce foreach
Me reste a resoudre le pb du second foreach pour le $adresseOrg que j'ai poste precedemment. Celui la est plus difficile car c'est une requete inclue dans un foreach et le $adresseOrg renvoye est toujours le meme.
Hors ligne
Il me semble que si tu as fait
1.$res = $req_Dom_Gen->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP);
2.$res1 = $req_Dom_Gen1->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP);
il me semble que tu ne l'as pas fait pour ta requête qui récup $adresseOrg.
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
Si la réponse est oui alors tu peux faire cela :
foreach ($baseRef as $index => $BD){
if ($index==0){$nomBase=$BD['Bd_Native'];}
if ($index==1){$adresseDebut=$BD['adresseWebDom_debut'];}
if ($index==2){$adresseFin=$BD['adresseWebDom_fin'];}
}
printf('<li>%s</li>',"<center><"."<a href=\"$adresseDebut.$domaine.$adresseFin\">$nomBase</a>"."></center>");
unset($index,$BD);
Je vais adapter ca dans le second ca qui me bloquait et je te dis si cela marche, si tu as encore un peu de temps biensur car je ne voudrais pas te deranger trop longtemps.
Merci pour tout en tout ca.
Hors ligne
Il me semble que si tu as fait
postume a écrit :1.$res = $req_Dom_Gen->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP);
2.$res1 = $req_Dom_Gen1->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP);il me semble que tu ne l'as pas fait pour ta requête qui récup $adresseOrg.
oups non en effet, je l'ai pas fait :S
je fais ca dans la boucle du foreach tu penses? car le $k qui correspond a l'organisme est dans le foreach et j'en ai besoin pour la requete qui recupere $adresseOrg (c'est peut etre meme pour ca que je n'ai pa pense a le faire :S)
Hors ligne
(edit) non faut le faire entre ton appel ->query() et le foreach qui suit.
Dernière modification par Jc (13-05-2010 19:00:05)
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
D'accord, je teste ca.
Merci bien Jc.
Hors ligne
Lorque je sors la requete du foreach, il n'y a plus aucune resultat qui s'affiche au niveau des liens $adresseOrg. Je continue a chercher et je reviens si je trouve une solution.
Hors ligne
C'est bien ca que tu as testé?
Dernière modification par Jc (16-07-2013 18:22:24)
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
oui j'ai fait quelque chose comme ca et cela n'a pas marche; j'ai aussi teste ton code ci dessus et la rien ne s'affiche non plus au niveau des adresses. Ce code va me rendre dingue. Je continue mes tests et des que je trouve une solution (on croise les doigts) je la poste.
Ah la la :S
Hors ligne