8792 sujets

Développement web côté serveur, CMS

bonjour, je suis tout à fait ignorant en php, et j'ai hérité d'un code dont bien évidemment je ne suis pas le concepteur et qui marche à moitié, le voici :

<?


$temp = "";


$bloc= "";
//--------------------
//Hack by Gantz [Start] v1.0 & utopiaste
$bloc .= "&nbsp;<br><MARQUEE behavior= \"scroll\" align= \"center\" direction= \"up\" height=\"150\" scrollamount= \"2\" scrolldelay= \"80\" onmouseover='this.stop()' onmouseout='this.start()'>";
//Hack [End]
//--------------------


$req=mysql_query("SELECT * FROM `article` ORDER BY `date` DESC LIMIT 0, $result_blocs->parametre2");
while ($ligne = mysql_fetch_object($req)) {
 $requete=mysql_query("SELECT COUNT(id) FROM `commentaires` WHERE `ref`=\"$ligne->id\"");
 $nb = mysql_fetch_row($requete);
 $nb = $nb[0] ;
 
$result = mysql_query("SELECT COUNT(id) FROM `commentaires` WHERE `ref`=$ligne->id");
    $nb2 = mysql_fetch_row($result);
    $nb2 = $nb2[0] ;


  if ($nb2/20 != intval($nb2/20))
  {
    $page = intval($nb2/20+1);
  }
   else
  {
   $page = intval($nb2/20);
  }
  if ($page=="0")
  {
  $page=1;
  }


$bloc = $bloc."<img src=themes/$theme/images/articles/puce.gif>&nbsp;&nbsp;<a href=index.php?mod=articles&ac=commentaires&id=$ligne->id&debut=".($page * 20 - 20).">$ligne->titre</a><BR>($nb réponses)<br><br>" ;
}





//--------------------
//Hack by Gantz [Start] v1.0 & utopiaste
$bloc .= "</MARQUEE><HR><center><a href=index.php?mod=articles>Aller voir les articles</a></center>" ;
//Hack [End]
//--------------------


Bloc ($result_blocs->parametre1,$bloc) ;


?>


donc le probléme : la requête pour aller chercher les commentaires ne fonctionne pas, leur nombre reste quoi que l'on fasse à zéro.

pour plus de clarté, voici le site en question , et le bloc concerné ce trouve sur votre gauche, c'est un menu défilant.

merci pour votre aide, si vous avez besion d'informations complétaires pour réoudre ce probléme, dites-le moi.
Modifié par poilue (26 May 2006 - 18:45)
ce code bien que un peu "laid" semble marcher mais il faudrait qu'on sache ce que renvoie certaine var.

du style les $result_blocs->parametre2 et $result_blocs->parametre1

si $result_blocs->parametre2 ne renvoie rien c'est là le bug.

au pire remplace $result_blocs->parametre2 par la valeur du nombre d'aticle que tu affiches.
la variable 1 me permet de changer le nom du bloc
la variable 2 me permet de modifier le nombre d'articles à afficher dans le menu défilant.

et sinon, si je veux afficher 10 articles, je fais comment pour inscrire cela dans le code php à la place "$result_blocs->parametre2" ?

merci pour ton aide.
SELECT * FROM `article` ORDER BY `date` DESC LIMIT 0

Mes cours de SQL sont loin, mais est-ce que LIMIT 0 ne va pas renvoyer 0 lignes ?

Sinon, question bête : la connexion avec la base de données est déjà établie, hein ?
merci gectou

mpop : oui lma connexion à la base de données est bien établie puisque la requête pour les articles fonctionnent trés bien, ceux sont les commentaires qui n'apparaisent pas, donc le problème se situerait à ce niveau du code :

$requete=mysql_query("SELECT COUNT(id) FROM `commentaires` WHERE `ref`=\"$ligne->id\"");

 $nb = mysql_fetch_row($requete);

 $nb = $nb[0] ;

 

$result = mysql_query("SELECT COUNT(id) FROM `commentaires` WHERE `ref`=$ligne->id");

    $nb2 = mysql_fetch_row($result);

    $nb2 = $nb2[0] ;
mpop

LIMIT pemret de sélectionné une étendue (une plage) de donnée

ce note LIMIT x,y ou x est l'indice de l'ordre de sortie de la requête) et y le nombre de valeur à prendre en compte ç partire de cette indice.

LIMIT 2,10
affichera les donnés de la requête de la deuxième à la douzième.

Voila Smiley cligne

donc si la variable $result_blocs->parametre2 est nulle cela renvoie un LIMIT "erroné" qui ne fait rien afficher.
bon, j'ai fait des petits changements sur le code :

$sql = "SELECT * FROM `article` ORDER BY `date` DESC LIMIT 0, ".$result_blocs->parametre2;
echo $sql;
$req=mysql_query($sql);
while ($ligne = mysql_fetch_object($req)) 

{
$sql = "SELECT COUNT(id) FROM `commentaires` WHERE `ref`=\"$ligne->id\"";
echo $sql;
$req=mysql_query($sql);
 $nb = mysql_fetch_row($requete);
 $nb = $nb[0] ;
 
$sql = "SELECT COUNT(id) FROM `commentaires` WHERE `ref`=$ligne->id";
echo $sql;
$req=mysql_query($sql);
    $nb2 = mysql_fetch_row($result);
    $nb2 = $nb2[0] ;


et à présent les erreurs s'affichent sur le site :

SELECT * FROM `article` ORDER BY `date` DESC LIMIT 0, 15SELECT COUNT(id) FROM `commentaires` WHERE `ref`="94"SELECT COUNT(id) FROM `commentaires` WHERE `ref`=94
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /home/zipe/www/modules/articles/bloc.php on line 30
SELECT COUNT(id) FROM `commentaires` WHERE `ref`=""SELECT COUNT(id) FROM `commentaires` WHERE `ref`=
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /home/zipe/www/modules/articles/bloc.php on line 30

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /home/zipe/www/modules/articles/bloc.php on line 18
au vue des erreurs cette portions n'est pas très parlante...

car si je lit bien
$result_blocs->parametre2

vaudrait :
15SELECT COUNT(id) FROM `commentaires` WHERE `ref`="94"SELECT COUNT(id) FROM `commentaires` WHERE `ref`=94

ce qui est un peu gros quand même///
Smiley eek Smiley biggol
le php/sql rend fou....

gectou, si je te donne un statut d'administrateur sur mon site, tu peux m'aider plus concrétement !
je n'ai pas le temps de faire admin sur un n-ième site Smiley cligne

peut-être plus tard mais je pense qu'il vaus mieux que tu apprenne à te servir de tes outils Smiley cligne
bon, j'ai résolu un probléme, j'ai changé le

"mysql_fetch_object($req)"

par

"mysql_fetch_object($requete)"

les warning ont ainsi disparu de mon écran, mais chose bizarre, les articles ne s'affichent pas et ce bout de code reste affiché :

SELECT * FROM `article` ORDER BY `date` DESC LIMIT 0, 15


pourquoi ne va-t-il pas chercher les articles ?
Modifié par poilue (29 May 2006 - 15:55)