erreur dans la fonction parent_noeud_cat

13 messages dans ce sujet

Posté(e) · Signaler ce message

Bonjour,

J'ai un

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\modeles\default\template.php on line 411
[/codebox]

La fonction est :

[codebox]// Fonction récursive pour rechercher si $noeud fait partie de l'arborescence d'un noeud donné
// Utilisé par construit_menu afin d'ouvrir les DIV necesssaires dans l'arborescence
function parent_noeud_cat($noeud_cat,$aktul_cat,&$actif_cat){

// Si c'est pas la racine
if($aktul_cat != 0 && $noeud_cat != 0){
// Recherche le parent du noeud à tester
$sql=mysql_query("SELECT id, parent_id FROM peel_categories WHERE id = $aktul_cat");
// récupère le résultat
$cat=mysql_fetch_array($sql);
// Appel récursif jusqu'à la racine
parent_noeud_cat($noeud_cat,$cat['parent_id'],$actif_cat);
// Si le noeud testé est le noeud recherché
if($cat['parent_id']==$noeud_cat){
// Met le drapeau à 1
$actif_cat=1;
}
}
}

Quelqu'un aurait une petite idée ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

aurais tu apporté des modifications ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Non aucune,

j'ai juste voulu utiliser l'affichage des catégories en page d'accueil, que je n'utilisais pas jusque là.

J'ai donc ajouté l'appel à la fonction print_categorie() dans la page index.php car il n'y était pas.

Dès lors l'image des catégories d'affiche bien en page d'accueil. Lorsque je clique sur l'image de l'une d'entre elles, cela engendre l'affichage de la page achat/index.php, avec les articles de la catégorie.

Mais dans cette page, j'ai l'erreur en question dans l'arbre des catégories en colonne de gauche. Mais l'arbre est tout de même correctement affiché.

De plus je viens de constater que j'ai une seconde erreur de ce type en base de page :

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\achat\index.php on line 142
[/codebox]

Les lignes en question sont :

[codebox]//Boutons précédent et suivant
if($start)
{print("<a class=petit href=\"achat/index.php?catid=".$catid."&start=".($start-$nb)."\">Page pr&eacute;c&eacute;dente</a>");}

$result=mysql_query("SELECT COUNT(*) FROM peel_produits p, peel_produits_categories pc WHERE p.id = pc.produit_id AND pc.categorie_id = $catid AND p.etat = 1");

$row=mysql_fetch_row($result);

if($row[0]>($start+$nb))
{
if($start)
{print(" / ");}
print("<a class=petit href=\"achat/index.php?catid=".$catid."&start=".($start+$nb)."\">Page suivante</a>");
}

La ligne 142 est le $row=mysql_fetch_row($result);

Voila toute l'histoire... :)

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

$result=mysql_query("SELECT COUNT(*) FROM peel_produits p, peel_produits_categories pc WHERE p.id = pc.produit_id AND pc.categorie_id = '".intval($catid)."' AND p.etat = 1");

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

il s'agit de la fonction parent_noeud_cat ou print_categorie()

tes posts parlent des 2

Il s'agit bien de la fonction parent_noeud_cat qui est en erreur. La fonction print_categorie, j'en ai juste ajouté l'appel dans index.php et c'est depuis cela que l'autre plante...

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

essai cela

$result=mysql_query("SELECT COUNT(*) FROM peel_produits p, peel_produits_categories pc WHERE p.id = pc.produit_id AND pc.categorie_id = '".intval($catid)."' AND p.etat = 1");

et la fonction print_categorie n'était pas appellée juqu'à présent ?

si cela ne fonctionne pas avec ce code met ici ta fonction print_categorie

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Hé hé, cela a bien résolu l'un des deux problèmes, celui de l'erreur en bas de page sur la page achat/index.php.

Il reste celle du menu catégorie (l'arbre dont je parle dans le premier post.

Il s'agit bien de la fonction noeud_parent_cat() de template.php :

function parent_noeud_cat($noeud_cat,$aktul_cat,&$actif_cat){

// Si c'est pas la racine
if($aktul_cat != 0 && $noeud_cat != 0){
// Recherche le parent du noeud &agrave; tester
$sql=mysql_query("SELECT id, parent_id FROM peel_categories WHERE id = $aktul_cat");
// r&eacute;cup&egrave;re le r&eacute;sultat
$cat=mysql_fetch_array($sql);
// Appel r&eacute;cursif jusqu'&agrave; la racine
parent_noeud_cat($noeud_cat,$cat['parent_id'],$actif_cat);
// Si le noeud test&eacute; est le noeud recherch&eacute;
if($cat['parent_id']==$noeud_cat){
// Met le drapeau &agrave; 1
$actif_cat=1;
}
}
}[/codebox]

Cette fonction est appelée par la fonction construit_menu_arborescent_cat qui elle a toujours été appelée, même avant que je n'affiche les catégories en page d'accueil. Seulement cette fonction possède des paramètres :

function construit_menu_arborescent_cat(&$sortie_cat, &$selectionne_cat, $parent_cat=0, $indent_cat=-1)

Et elle même passe des paramètre à parent_noeud_cat :

parent_noeud_cat($cat['id'],$catid, $actif_cat=0);

La fonction construit_menu_arborescent est :

[codebox]function construit_menu_arborescent_cat(&$sortie_cat, &$selectionne_cat, $parent_cat=0, $indent_cat=-1)
{
global $wwwroot, $catid;
$indent_cat +=1;
if(is_array($catid)) $catid=0;
// Recherche de tous les noeuds ayant $parent comme noeud parent
$qid = mysql_query("SELECT id, parent_id, nb, nom_".$_SESSION['langue']." FROM peel_categories WHERE parent_id = $parent_cat AND etat = '1' ORDER BY position");
// Si la requete a abouti
if($qid){
// Pour toutes les entr&eacute;es
while($cat = mysql_fetch_array($qid)){
// Boucle pour ajouter l'indentation (une image vide)
// Pour aller plus loin on peut g&eacute;rer des lignes de suite
for($i=0;$i<$indent_cat;$i++){
$sortie_cat .= "<img src='$wwwroot/images/mnu_empty.gif' border=0>";
}
// Recherche d'enfant pour d&eacute;terminer l'aspect de l'icone (feuille ou dossier)
$fils_cat = mysql_query("SELECT id, parent_id, nom_".$_SESSION['langue']." FROM peel_categories WHERE parent_id = ".$cat['id']." AND etat = '1' ORDER BY position");
$div_cat = mysql_num_rows($fils_cat);
// Si il y a des enfants
if ($div_cat) {
// Ajout de l'icone du dossier
$sortie_cat .= "<img src='$wwwroot/images/triangle_haut_orange.gif' border=0>&nbsp;";
// Ajout du lien (identique &agrave; construit menu)
$sortie_cat .= "<a class=menuleft href=$wwwroot/achat/index.php?catid=" . $cat['id'] .">";
// Test si le noeud est le noeud actif (id), si oui, ajoute du gras (plus visuel)
if($cat['id']==$catid) $sortie_cat .= "<b>";
// Ajoute le nom de la cat&eacute;gorie et d&eacute;bute un calque DIV ayant pour ID l'Id de la cat&eacute;gorie
$sortie_cat .= stripslashes($cat['nom_'.$_SESSION['langue'].'']);

// if (!empty($cat['nb'])) {$sortie_cat .= " (".$cat['nb'].") "; }

$sortie_cat .= "</a></b><br /><DIV id=".$cat['id'];
// Recherche si le noeud fait partie de l'arborescence du noeud actif
parent_noeud_cat($cat['id'],$catid, $actif_cat=0);
// Si Oui,
if(($cat['id'] == $catid) || ($actif_cat == 1)){
// Rends le calque visible
$sortie_cat.= " style=\"display:yes\">\n";
}
else{
// Sinon, rends le calque invisible
// $sortie_cat.= " style=\"display:none\">\n"; sam : affichage direct des sous menus
$sortie_cat.= " style=\"display:yes\">\n";
}
}
// Sinon, c'est un document
else{
// Ajoute l'image du document
$sortie_cat .= "<img src='$wwwroot/images/puces_texte_footer.gif' border=0>&nbsp;";
// Ajoute le lien (identique &agrave; construit_menu)
$sortie_cat .= "<a class=menuleft href=$wwwroot/achat/index.php?catid=" . $cat['id'] .">";
// Si c'est la feuille active, la met en gras
if($cat['id']==$catid) $sortie_cat .= "<b>";
// Ajoute le nom
$sortie_cat .= stripslashes($cat['nom_'.$_SESSION['langue'].'']);

// if (!empty($cat['nb'])) {$sortie_cat .= " (".$cat['nb'].") "; }

$sortie_cat .= "</a></b><br />";
}
// Si c'est un noeud (cat&eacute;gorie)
if($div_cat){
// Appel r&eacute;cursif pour ajout des enfants
construit_menu_arborescent_cat($sortie_cat, $selectionne_cat, $cat['id'], $indent_cat);
// Ferme le calque
$sortie_cat.="</div>";
}
}
}
}

Elle est appelée dans haut.php comme ceci :

<!-- CATALOGUE PRODUIT -->	
<table border="0" cellspacing="0" cellpadding="0" width="220" style="border-top:0px solid #EEEEEE;border-left:0px solid #EEEEEE;border-right:0px solid #EEEEEE;padding-top:16px;padding-left:5px;padding-right:5px;padding-bottom:16px;">
<tr><td class="normal2" width="220">
<?php
echo "<div class=\"entete\"><img src=\"$wwwroot/images/fleche.gif\">&nbsp;".CATALOG."</div>";

if (!isset($_GET['catid'])) { $catid = 0; } else {$catid = $_GET['catid']; }

$frm['parent'] = array($catid);

construit_menu_arborescent_cat($categorie_options, $frm['parent']);

echo "<div style=\"padding:4px\">".$categorie_options."</div>";

?>
</td></tr>
</table>
<!-- FIN PRODUIT -->[/codebox]

Je soupçonne qu'un paramètre soit correct dans le cas où on affiche l'arborescence en page d'accueil, mais pas lorsque qu'on entre dans une catégorie...

En fait je pense que cette fonction n'était pas appelée jusqu'à présent car je n'utilisais pas l'affichage des catégories en page d'accueil.

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

est ce que je peux ta fonction print_categorie()

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

La voici :

function print_categorie() {

/* Affiche la liste des cat&eacute;gories qui sont sp&eacute;ciales */

global $wwwroot, $repertoire_modele;

$qid = mysql_query("SELECT id, nom_".$_SESSION['langue'].", image FROM peel_categories WHERE etat = '1' AND on_special = '1'") or DIE('Une erreur de connexion &agrave; la base s est produite ' . __LINE__ . '.<p>' . MYSQL_ERROR());

if (mysql_num_rows($qid) > 0) {

$nb_cellules = mysql_num_rows($qid);

$nb_colonnes = 2;

echo "<table align=\"center\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" width=\"100%\">";

echo "<tr><td colspan=".$nb_colonnes." class=\"entete\">".CATALOG."</td></tr>";

$j = 0;

while ($cat = mysql_fetch_array($qid))

{

if ( $j % $nb_colonnes == 0 ) {

echo "<tr valign=top>";

}

if($j % $nb_colonnes !=0 OR $j % $nb_colonnes == 0 ) {

// on affiche une cellule

echo "<td class=petit width=50%>";

echo "<table align=\"center\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" width=\"100%\">";

echo "<tr><td align=\"center\"><a class=\"label\" href=\"achat/index.php?catid=".$cat['id'].">".stripslashes($cat['nom_'.$_SESSION['langue'].''])."</a></td></tr>";

echo "<tr><td align=\"center\" valign=\"middle\">";

if (!empty($cat['image'])) {

echo "<div align=\"center\"><img src=\"administrer/upload/".$cat['image']."\" title=\"".stripslashes($cat['nom_'.$_SESSION['langue'].''])."\" /></div>";

} else {

echo "<div align=center><img src=\"$wwwroot/images/photo-non-disponible.gif\"></div>";

}

echo "</td></tr>";

echo "</td></tr></table>";

}

echo "</td>";

$j++;

if ( $j % $nb_colonnes == 0 OR $j == $nb_cellules ) {

echo "</tr>";

}

}

echo "</table>";

}

}

et cette ligne me semble curieuse :

echo "<tr><td align=\"center\"><a class=\"label\" href=\"achat/index.php?catid=".$cat['id'].">".stripslashes($cat['nom_'.$_SESSION['langue'].''])."</a></td></tr>";

Car dans ma barre d'adresse j'ai ceci :

http://127.0.0.1/achat/index.php?catid=11&...<td%20align=

Et à mon avis, c'est pô normal :)

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

remplace le ligne qui te semble curiueuse par

echo "<tr><td align=\"center\"><a class=\"label\" href=\"achat/index.php?catid=".$cat['id']."\">".html_entity_decode($cat['nom_'.$_SESSION['langue'].''])."</a></td></tr>";

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Yesssss

ou presque :s

Effectivement, l'erreur n'est plus là et l'url dans la barre de titre a retrouvé un aspect normal.

Reste désormais que la photo n'est plus cliquable. En revanche, il m'affiche maintenant au dessus de la photo le nom de la catégorie qui lui est cliquable.... lol

ca devient comique :)

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

alors comme cela :

if (!empty($cat['image'])) {

echo "<div align=\"center\"><a href=\"achat/index.php?catid=".$cat['id']."\"><img src=\"administrer/upload/".$cat['image']."\" alt=\"".stripslashes($cat['nom_'.$_SESSION['langue'].''])."\" border=\"0\" /></a></div>";

} else {

echo "<div align=center><img src=\"$wwwroot/images/photo-non-disponible.gif\" alt=\"\" /></div>";

}

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Une fois de plus PAulanna tu es un AS !!!!!

Merci beaucoup.

Et merci à Will, même s'il n'était pas là sur ce coup là, je suis sur que s'il avait été là, il sera intervenu aussi !!!

Je me promets de contribuer dès que je peux :P

:)

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !


Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.


Connectez-vous maintenant

Twitter Advisto ecommerce

Facebook PEEL Shopping