Bonjour,

Je transforme mon site écrit en PHP4 avec Mysql pour le passer en PHP5.5 avec PDO

Dans l'ensemble, je progresse mais je rencontre un problème avec mysql_num_rows et surtout mysql_fetch_row que je n'arrive pas à réécrire en PDO

Voici l'ancien code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
<?
elseif ($nbsites>0){
	$query="SELECT compteur, title, url, description, mail, DATE_FORMAT(date_ins, '%d-%m-%Y') FROM annuaire_sites WHERE category='$id' AND valid=1 ORDER BY title ASC";
	$res_racine = @mysql_query($query,$db);
	if (mysql_num_rows($res_racine)!=0)
		{
		$nbracine=mysql_num_rows($res_racine);
		$nbpage=ceil($nbracine/10);
		if ($_GET['page']=="") {$page=1;}
		for ($i=0; $i<$nbracine; $i++)
			{
			$list_racine=mysql_fetch_row($res_racine);
			if ( ($i>=10*$page-10) and ($i<10*$page) )
        {
        echo "<table class='siteframe' width='100%'>\n";
        echo "<tr>\n";
        echo "<td valign='top'><a href='".$list_racine[2]."' class='site_links' target='_blank'><b>".$list_racine[1]."</b></a> - <span class='greytext'>".$list_racine[5]."</span><br /><p>".$list_racine[3]."</p><a href='".$list_racine[2]."' class='lien12' target='_blank'>".$list_racine[2]."</a></td>\n";
        echo "</tr>\n";
        echo "</table>\n";
        echo "<br />\n";
				}
			}
		}
  }
et voici le nouveau que j'ai réécrit :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
elseif ($nbsites>0){
    $res_racine = $bdd_base->prepare("SELECT COUNT(*) FROM annuaire_sites WHERE category='$id' AND valid=1 ORDER BY title ASC");
    $res_racine->execute();
    $nb_racine = $res_racine->fetchColumn();
    $res_racine->closeCursor();
 
	if ($nb_racine!=0)
		{
		$nbracine=$nb_racine;
		$nbpage=ceil($nbracine/10);
		if ($_GET['page']=="") {$page=1;}
		for ($i=0; $i<$nbracine; $i++)
		{
    $res_racine2 = $bdd_base->prepare("SELECT compteur, title, url, description, mail, DATE_FORMAT(date_ins, '%d-%m-%Y') FROM annuaire_sites WHERE category='$id' AND valid=1 ORDER BY title ASC");
    $res_racine2->execute();
 
//while ($list_racine = $res_racine2->fetch(PDO::FETCH_NUM)) {
 
    $list_racine = $res_racine2->fetch(PDO::FETCH_NUM);
		if ( ($i>=10*$page-10) and ($i<10*$page) )
		  {
			echo "<table class='siteframe' width='100%'>\n";
      echo "<tr>\n";
      echo "<td valign='top'><a href='".$list_racine[2]."' class='site_links' target='_blank'><b>".$list_racine[1]."</b></a> - <span class='greytext'>".$list_racine[5]."</span><br /><p>".$list_racine[3]."</p><a href='".$list_racine[2]."' class='lien12' target='_blank'>".$list_racine[2]."</a></td>\n";
			echo "</tr>\n";
      echo "</table>\n";
      echo "<br />\n";
      }
//} // pour la boucle while
			}
		}
  }
Aucune anomalie mais un problème d'affichage des données.

Sachant que la variable $nbracine vaut 6, cela m'affiche 6 fois la même ligne de données.

Si je rajoute la boucle while mise en commentaire, cela m'affiche 6 fois les 6 lignes de données contenues dans la base

Si quelqu'un peut me guider, je le(la) remercie
Bonne journée