begin process at 2012 05 31 07:18:14
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

MySQL

 > 

Probleme de recuperation de données mysql


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Probleme de recuperation de données mysql

lundi 22 septembre 2008 à 16:13:49 | Probleme de recuperation de données mysql

netdefense

Bonjour tout le monde,

Avec ce code, je crée un menu pour mon site de manière dynamique :

$sql = 'SELECT * FROM category';
$sth = $dbh->query($sql);
$result_category = $sth->fetchAll(PDO::FETCH_ASSOC);

foreach($result_category as $row1) {
    echo('<li class=\'toggleSubMenu\'><span>'.$row1['name'].'</span>');
    if($_GET['cat'] == $row1['id'])
        echo('<ul class=\'open_at_load\'>');
    else
        echo('<ul class=\'subMenu\'>');
    $sql2 = 'SELECT * FROM subcategory WHERE id_category='.$row1['id'];
    $sth = $dbh->query($sql2);
    $result_subcategory = $sth->fetchall(PDO::FETCH_ASSOC);
    print_r($result_subcategory);
    foreach($result_subcategory as $row2) {
        echo('<li><a href=\'index.php?cat='.$row1['id'].'&amp;subcat='.$row2['id'].'\' title='.$row2['name'].'>'.$row2['name'].'</a></li>');
    }
    echo('</ul>');
    echo('</li>');
}

Le problème c'est que pour le premier foreach tout se passe bien les categories se crée bien dynamiquement mais les sous categories elles ne se crée pas. Apparement le probleme viendrais a partir de cette ligne :

$result_subcategory = $sth->fetchall(PDO::FETCH_ASSOC);

car avec le print_r qui suit ca affiche "Array( )" donc tableau vide de données.

De plus en local le code marche alors que sur un serveur distant le code marche plus et je suis sur que le probleme ne viens pas de la base de donnée mysql puisque j'ai copié integralement la base de donnée crée en local sur le serveur distant.

Donc voilà si quelqu'un a une idée ca serait sympa :) En tout cas merci a tous ciao
lundi 22 septembre 2008 à 17:00:55 | Re : Probleme de recuperation de données mysql

mike1310

Peut-on voir ta fonction fecthall s'il te plait ?
lundi 22 septembre 2008 à 17:02:08 | Re : Probleme de recuperation de données mysql

mike1310

Oups, commentaire à oublié .... emmêlage de pinceau
lundi 22 septembre 2008 à 17:10:02 | Re : Probleme de recuperation de données mysql

mike1310

En fait c'est nomal c'est parce que tu fait un $sth->fetchall(PDO::FETCH_ASSOC); au lieu de faire un
$sth->fetchAll(PDO::FETCH_ASSOC); """ avec un "A" majuscule """
lundi 22 septembre 2008 à 19:45:58 | Re : Probleme de recuperation de données mysql

netdefense

Alors en effet j'avais pas vu cette erreur. Merci toutefois apparement ca ne regle pas le probleme. Par contre j'ai essayer un truc qui peut peut etre aider voilà le "nouveau" code :

<?php
$sql = 'SELECT * FROM category';
$sth1 = $dbh->query($sql);
$result_category = $sth1->fetchAll(PDO::FETCH_ASSOC);

foreach($result_category as $row1) {
    echo('<li class=\'toggleSubMenu\'><span>'.$row1['name'].'</span>');
    if($_GET['cat'] == $row1['id'])
        echo('<ul class=\'open_at_load\'>');
    else
        echo('<ul class=\'subMenu\'>');
    $sql2 = 'SELECT * FROM subcategory WHERE id_category='.$row1['id'];
    $sth2 = $dbh->query($sql2);
    $result_subcategory = $sth2->fetchAll(PDO::FETCH_ASSOC);
    foreach($result_subcategory as $row2) {
        echo('<li><a href=\'index.php?cat='.$row1['id'].'&amp;subcat='.$row2['id'].'\' title='.$row2['name'].'>'.$row2['name'].'</a></li>');
    }
    echo('</ul>');
    echo('</li>');
}

?>

Par rapport au premier code voilà ca qui a changé :

$sth1 = $dbh->query($sql);
$result_category = $sth1->fetchAll(PDO::FETCH_ASSOC);

et

$sth2 = $dbh->query($sql2);
$result_subcategory = $sth2->fetchAll(PDO::FETCH_ASSOC);

j'ai mis sth1 et sth2 pour les differencier bien que je ne vois pas d'interet a proprement parler mais en faisant ceci le 2ieme foreach du code marche pour le premier passage du 1ier foreach mais ce 2ieme foreach ne marche pas pour les boucles suivantes du 1ier foreach. Je ne comprend vraiment pas ce qui se passe


J'ai essayer de formulé au mieux mon probleme j'espere que ca pourra vous mettre sur une piste

Netdefense
lundi 22 septembre 2008 à 22:50:52 | Re : Probleme de recuperation de données mysql

netdefense

Réponse acceptée !
Bon j'ai trouvé la solution.

Voilà le code final :

<?php
$sql = 'SELECT * FROM category';
$sth = $dbh->query($sql);
$result_category = $sth->fetchAll(PDO::FETCH_ASSOC);

foreach($result_category as $row1) {
    unset($sth);
    echo('<li class=\'toggleSubMenu\'><span>'.$row1['name'].'</span>');
    if($_GET['cat'] == $row1['id'])
        echo('<ul class=\'open_at_load\'>');
    else
        echo('<ul class=\'subMenu\'>');
    $sql2 = 'SELECT * FROM subcategory WHERE id_category='.$row1['id'];
    $sth = $dbh->query($sql2);
    $result_subcategory = $sth->fetchAll(PDO::FETCH_ASSOC);
    foreach($result_subcategory as $row2) {
        echo('<li><a href=\'index.php?cat='.$row1['id'].'&amp;subcat='.$row2['id'].'\' title='.$row2['name'].'>'.$row2['name'].'</a></li>');
    }
    echo('</ul>');
    echo('</li>');
}

?>

En fait il faut détruire la variable $sth a chaque boucle avec unset($sth)

Netdefense


Cette discussion est classée dans : probleme, echo, result, sth, subcategory


Répondre à ce message

Sujets en rapport avec ce message

Php Javascript [ par arsenik20 ] ?> function Deplacer(l1,l2) { if (l1.options.selectedIndex>=0) { o=new Option(l1.options[l1.options.selectedIndex].text,l1.options[l1.options.selec probleme de code ou d affichage????????? [ par steph0077 ] voila j ai un leger probleme avec ce script qui ne m affiche pas les donnees comme je le desire..............les langues qui doivent s afficher ne le Probleme avec une liste <SELECT> </SELECT> [ par softflower ] J'ai un enorme probleme, dans une de mes pages php je fais intervenir une liste que je rempli avec des info se trouvant sur une base de données. La l Problème affichage de la commentaires [ par dyto ] bonjour les zéros, mon probleme c que je fai un tuto, et il y 2 champs, et kon on les remplies, il l'ajoute dans la bdd et l'affiche dans en haut, com probleme php3 [ par flovri ] j'ai ecritrequire("passe/conf.php3");$db_link = mysql_connect($sql_serveur,$sql_user,$sql_passwd);$requete=mysql_db_query($sql_bdd,"select * from memb probleme avec mysql [ par nico606 ] Slt g de gros probleme avec mon forum d'abors y a ca $a="SELECT * FROM genletter_membres";$b=mysql_query($a); Problem if a==a [ par smitchel ] J'explique vite fé mon probleme j'ai fé ce code et je voudrai,kan je vé sur b.php je voudré que les lien ver b.php?=ab.php?=bb.php?=cb.php?=eaparaisse Probleme "onmouseout" [ par softflower ] Voila je viens de faire un petit menu déroulant qui se rempli à partir d'une base de donnée. voila l'adresse du site : http://nicolas.dory.free.fr/ probleme de tri [ par aquewel ] salut a tous !voila j'ai un fichier .txt qui contient des dates (format AAAA-M-D)le nom du fichier correspond a l'id de ma ficheen faite, je voudrais Listes déroulantes dépendantes [ par Dede35 ] Bonjour, 1èrement, je dis un grd merci à ceux ki répondron à ce message et un super grd merci à hicksman pour son aide. Mon pb: J'ai +ieurs listes dér


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,702 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales