Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 09/03/2010, 12h33   #1
Invité de passage
 
Inscription : mars 2010
Messages : 20
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 20
Points : 3
Points : 3
Par défaut PB de sous categories qui n'apparaissent pas

Bonjour a tous, et tout d'abord merci pour cette mine d'information et a tous ceux qui aides sur ce forum, j'espere un jour en faire partie sans raconter de conneries

bon bin voila, cela fait deux jours maintenant que je rame pour trouver la solution a ce probleme, en fait il s'agit de categories avec des sous categories, le but du code ci dessous
est que l'orsque un utilisateur clique sur une categorie, les sous categories correspondantes a cette categorie aparaissent juste en dessous.
Je vous ai copié toute la DIV histoire de rien oublier, le warning mysql est a propose de cette ligne:

Code :
1
2
3
4
5
6
7
8
9
10
11
while ($catBrowse1=mysql_fetch_array($getCats1)) {
 
//et donc de cette query selon moi:
 $getCats1 = mysql_query("SELECT `c`.`id`, `c`.`name`, `c`.`parent`, `c`.`items_counter`, `c`.`hover_title`, 
											  COUNT(`p`.`id`) AS `nbsubcats` 
											  FROM `fotos_categories` AS `c` 
											  LEFT JOIN `fotos_categories` AS `p` ON `p`.`parent`=`c`.`id` OR (`p`.`parent`=0 AND `c`.`id`=`p`.`id`)
											  WHERE `c`.`parent`=`$catBrowse[id]` AND `c`.`userid`=0 
											  GROUP BY `c`.`id` 
											  ORDER BY `c`.`theorder`, `c`.`name`") or die(mysql_error());
                      }
voila j'espere qu'une ame charitable pourra se pencher sur mon problème


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<div id="exp1102170166">
               <table width="100%" border="0" cellspacing="0" cellpadding="4" class="bordercat" >
                  <?
            $getCats = mysql_query("SELECT `c`.`id`, `c`.`name`, `c`.`parent`, `c`.`items_counter`, `c`.`hover_title`, 
								   COUNT(`p`.`id`) AS `nbsubcats` 
								   FROM `fotos_categories` AS `c` 
								   LEFT JOIN `fotos_categories` AS `p` ON `p`.`parent`=`c`.`id` OR (`p`.`parent`=0 AND `c`.`id`=`p`.`id`) 
								   WHERE `c`.`parent`=0 AND `c`.`userid`=0 
								   GROUP BY `c`.`id`
								   ORDER BY `c`.`theorder`, `c`.`name`") or die(mysql_error());
            while ($catBrowse=mysql_fetch_array($getCats)) {
              ##$nbSubCats = getSqlNumber("SELECT id FROM fotos_categories WHERE parent='".$catBrowse['id']."'");
 
              if ($catBrowse['nbsubcats']>0) $catLink=$path.processLink('categories', array('category' => $c_lang[$catBrowse['id']], 'parent' => $catBrowse['id']/*, 'show' => 'subcats'*/));
              else $catLink=$path.processLink('categories', array('category' => $c_lang[$catBrowse['id']], 'parent' => $catBrowse['id'])); ?>
                  <tr>
                     <td class="contentfont" bgcolor="#eadfcf">
                     <img src="themes/<?=$setts['My_theme'];?>/img/arrow.gif" hspace="3" align="absmiddle" style='cursor:hand;' onclick='div = document.getElementById("subcats<?=$catBrowse['id'];?>"); if(div.style.display=="none") {div.style.display = "block"; } else {div.style.display = "none";}'>
                     <a href="<?=$catLink;?>" <? echo ($catBrowse['hover_title']!="") ? "title=\"".$catBrowse['hover_title']."\"":""; ?>><? echo $c_lang[$catBrowse['id']];?>
                        <? if (eregi('Y', $setts['enable_cat_counters'])) echo ($catBrowse['items_counter']!=0) ? "(<strong>".$catBrowse['items_counter']."</strong>)":"(".$catBrowse['items_counter'].")";?>
                       </a>
                     <div id='subcats<?=$catBrowse['id'];?>' class="contentfont" style="display: block;<?/*if(strpos($_SERVER["REQUEST_URI"],"categories.php")!==false&&$_REQUEST['parent']==$catBrowse['id']) echo 'block'; else echo 'none';*/?>">
<?
                    if ($_GET['parent']){
                      $c_id = $_GET['parent'];
                    } elseif ($_GET['category']){
                      $c_id = $_GET['category'];
                    }
                    $r1 = mysql_query("SELECT `parent` 
									  FROM `fotos_categories` 
									  WHERE `id`='$c_id'") or die(mysql_error());
					list ($par) = mysql_fetch_array($r1);
 
                    if ($par ==  $catBrowse[id] || $_REQUEST['parent']==$catBrowse['id'] || $_GET['category'] == $catBrowse['id']){
                      $getCats1 = mysql_query("SELECT `c`.`id`, `c`.`name`, `c`.`parent`, `c`.`items_counter`, `c`.`hover_title`, 
											  COUNT(`p`.`id`) AS `nbsubcats` 
											  FROM `fotos_categories` AS `c` 
											  LEFT JOIN `fotos_categories` AS `p` ON `p`.`parent`=`c`.`id` OR (`p`.`parent`=0 AND `c`.`id`=`p`.`id`)
											  WHERE `c`.`parent`=`$catBrowse[id]` AND `c`.`userid`=0 
											  GROUP BY `c`.`id` 
											  ORDER BY `c`.`theorder`, `c`.`name`") or die(mysql_error());
                      }
                     while ($catBrowse1=mysql_fetch_array($getCats1)) {
                       ##$nbSubCats = getSqlNumber("SELECT id FROM fotos_categories WHERE parent='".$catBrowse['id']."'");
 
                       if ($catBrowse1['nbsubcats']>0) $catLink1=$path.processLink('categories', array('category' => $c_lang[$catBrowse1['id']], 'parent' => $catBrowse1['id']));
                       else $catLink1=$path.processLink('categories', array('category' => $c_lang[$catBrowse1['id']], 'parent' => $catBrowse1['id'])); ?>
                     &nbsp;
                      <img src="themes/<?=$setts['My_theme'];?>/img/arrow.gif" hspace="3" align="absmiddle" style="margin: 5px;">
 
                      <a href="<?=$catLink1;?>" <? echo ($catBrowse1['hover_title']!="") ? "title=\"".$catBrowse1['hover_title']."\"":""; ?>><? echo $c_lang[$catBrowse1['id']];?>
                         <? if (eregi('Y', $setts['enable_cat_counters'])) echo ($catBrowse1['items_counter']!=0) ? "(<strong>".$catBrowse1['items_counter']."</strong>)":"(".$catBrowse1['items_counter'].")";?>
                      </a><br />
                     <? } ?>
 
                     </div>
Je remercie par avance ceux qui auront la patience de lire tout ce ******
lelandais1

Dernière modification par lelandais1 ; 09/03/2010 à 22h28.
lelandais1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2010, 13h17   #2
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 4 774
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 4 774
Points : 6 723
Points : 6 723
Bonjour et Bienvenue sur Developpez .
Tu dois mettre la boucle while dans le clause if car si les conditions ne sont pas vraie, la requête n'est pas executé ainsi $getCats1 n'est pas une ressource valide.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if ($par ==  $catBrowse[id] || $_REQUEST['parent']==$catBrowse['id'] || $_GET['category'] == $catBrowse['id']){
                      $getCats1 = mysql_query("SELECT `c`.`id`, `c`.`name`, `c`.`parent`, `c`.`items_counter`, `c`.`hover_title`, 
											  COUNT(`p`.`id`) AS `nbsubcats` 
											  FROM `fotos_categories` AS `c` 
											  LEFT JOIN `fotos_categories` AS `p` ON `p`.`parent`=`c`.`id` OR (`p`.`parent`=0 AND `c`.`id`=`p`.`id`)
											  WHERE `c`.`parent`=`$catBrowse[id]` AND `c`.`userid`=0 
											  GROUP BY `c`.`id` 
											  ORDER BY `c`.`theorder`, `c`.`name`") or die(mysql_error());
while ($catBrowse1=mysql_fetch_array($getCats1))
{
.............
}
 
 
}
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2010, 13h27   #3
Invité de passage
 
Inscription : mars 2010
Messages : 20
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 20
Points : 3
Points : 3
je reve!!!!

ca me parait évident tout d'un coup

merci énormément !

je check ca.
lelandais1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2010, 14h05   #4
Invité de passage
 
Inscription : mars 2010
Messages : 20
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 20
Points : 3
Points : 3
bon grace a vous cela ne me donne plus cette erreur merci encore!

voila ce que j'ai fait:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if ($par ==  $catBrowse[id] || $_REQUEST['parent']==$catBrowse['id'] || $_GET['category'] == $catBrowse['id']){
                      $getCats1 = mysql_query("SELECT `c`.`id`, `c`.`name`, `c`.`parent`, `c`.`items_counter`, `c`.`hover_title`, 
											  COUNT(`p`.`id`) AS `nbsubcats` 
											  FROM `fotos_categories` AS `c` 
											  LEFT JOIN `fotos_categories` AS `p` ON `p`.`parent`=`c`.`id` OR (`p`.`parent`=0 AND `c`.`id`=`p`.`id`)
											  WHERE `c`.`parent`=`$catBrowse[id]` AND `c`.`userid`=0 
											  GROUP BY `c`.`id` 
											  ORDER BY `c`.`theorder`, `c`.`name`") or die(mysql_error());
                     while ($catBrowse1=mysql_fetch_array($getCats1))
                     {
                       ##$nbSubCats = getSqlNumber("SELECT id FROM fotos_categories WHERE parent='".$catBrowse['id']."'");
 
                       if ($catBrowse1['nbsubcats']>0) $catLink1=$path.processLink('categories', array('category' => $c_lang[$catBrowse1['id']], 'parent' => $catBrowse1['id']));
                       else $catLink1=$path.processLink('categories', array('category' => $c_lang[$catBrowse1['id']], 'parent' => $catBrowse1['id']));
					   }
maintenant j'ai un nouveau problème

puisqu'une erreur est renvoyé quand je clique sur une catégorie et que les sous catégories devraient s'afficher : Unknown column '215' in 'where clause'

normal puisque 215 n'est pas une colonne
c'est la ID dans la colonne ID de la categorie principale
et c'est donc aussi la valeur dans la colonne parent pour la sous catégorie


vous l'aurez compris je n'ai pas pondu ce code et en suis totalement incapable
vous sauriez ce qui cloche dans ma where clause??

lelandais1
lelandais1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2010, 15h45   #5
Invité de passage
 
Inscription : mars 2010
Messages : 20
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 20
Points : 3
Points : 3
y aurait vraiment personne pour me donner un petit coup de pouce supplémentaire?

lelandais1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2010, 22h37   #6
Invité de passage
 
Inscription : mars 2010
Messages : 20
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 20
Points : 3
Points : 3
j'ai changé le titre puisque le problème n'est plus le même...

le code reste le même par contre, mais je ne sais pas si cela vous suffit pour y comprendre quelque chose.

en fait quand un click sur une catégorie, les sous catégorie sont censés apparaitre juste en dessous et pour l'instant ca ne marche pas

je remet la partie du code complète censé faire apparaitre ces sous catégories au cas ou :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
if ($_GET['parent']){
                      $c_id = $_GET['parent'];
                    } elseif ($_GET['category']){
                      $c_id = $_GET['category'];
                    }
                    $r1 = mysql_query("select parent from fotos_categories WHERE id='.$c_id'");
                    list ($par) = mysql_fetch_array($r1);
 
                    if ($par ==  $catBrowse[id] || $_REQUEST['parent']==$catBrowse['id'] || $_GET['category'] == $catBrowse['id']){
                      $getCats1 = mysql_query("select c.id, c.name, c.parent, c.items_counter, c.hover_title, count(p.id) AS nbsubcats from
                       fotos_categories as c left join fotos_categories as p on
                       p.parent=c.id or (p.parent=0 and c.id=p.id) where c.parent=$catBrowse[id] and c.userid=0 GROUP BY c.id ORDER BY c.theorder, c.name") or die(mysql_error());
 
                     while ($catBrowse1=mysql_fetch_array($getCats1)) {
                       ##$nbSubCats = getSqlNumber("SELECT id FROM fotos_categories WHERE parent='".$catBrowse['id']."'");
 
                       if ($catBrowse1['nbsubcats']>0) $catLink1=$path.processLink('categories', array('category' => $c_lang[$catBrowse1['id']], 'parent' => $catBrowse1['id']));
                       else $catLink1=$path.processLink('categories', array('category' => $c_lang[$catBrowse1['id']], 'parent' => $catBrowse1['id']));
                       }
					   ?>
                     &nbsp;
                      <img src="themes/<?=$setts['My_theme'];?>/img/arrow.gif" hspace="3" align="absmiddle" style="margin: 5px;">
 
                      <a href="<?=$catLink1;?>" <? echo ($catBrowse1['hover_title']!="") ? "title=\"".$catBrowse1['hover_title']."\"":""; ?>><? echo $c_lang[$catBrowse1['id']];?>
                         <? if (eregi('Y', $setts['enable_cat_counters'])) echo ($catBrowse1['items_counter']!=0) ? "(<strong>".$catBrowse1['items_counter']."</strong>)":"(".$catBrowse1['items_counter'].")";?>
pour l'instant la situation a un peu évolué sur les 3 sous catégories actuelles qui devraient apparaitre seulement : >> () apparait?
a la place de () le nom devrait apparaitre et a coté le nombre d'items dans la sous catégorie normalement.

enfin bon bin voila j'ai tout dit...si une âme charitable qui a un peu de temps passe par la, bah ca me rendra vraiment service
lelandais1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 11h57.


 
 
 
 
Partenaires

Hébergement Web