Changer?

Messages postés
7
Date d'inscription
samedi 13 août 2016
Dernière intervention
4 décembre 2016
-
Bonjour,
qui peut m'aider à modifier ce code pour eviter ce msg d'erreur:

Warning: mysql_num_fields() expects parameter 1 to be resource, object given in C:\wamp\www\formulaire\afficher_plsrs tbl\afficherResultat.php on line 8

et aussi:
Warning: mysql_fetch_row() expects parameter 1 to be resource, object given in C:\wamp\www\formulaire\afficher_plsrs tbl\afficherResultat.php on line 10

code:
<?php
//affichage partiel des results d'une reqte
//creation d'un tbleau html avec autant de colonnes que d'attributs
//on affiche $pNbLignes lignes à partir de la ligne indiquée par $pPosition
function afficherResultat($pResultat,$pPosition,$pNbLignes){
 echo "<table border='1'>";
 $compteurLignes=1;
 mysql_num_fields($pResultat);
 $nbAttributs=mysql_num_fields($pResultat);
 while ($tableAttributs=mysql_fetch_row($pResultat)){
  //avant la 1ere ligne on affiche
  //on affiche l'entete du tableau html avec le nom des attributs
  if($compteurLignes==1){
   echo "<tr>";
   //affichage des noms d'attributs
   for($i=0;$i<$nbAttributs;$i++)
    echo "<th>".mysql_field_name($pResultat,$i)."</th>\n";
  }
  //pour chaque ligne comprise entre la 1ere($pPosition) et la derniere($pPosition+$pNbLignes-1)
  //on affiche les valeurs de chaque attributs
if($compteurLignes >= $pPosition 
and $compteurLignes <= $pPosition+$pNbLignes-1){
 echo "<tr>";
 for($i=0;$i<$nbAttributs;$i++){
  //le champ est vide
  if(empty($tableAttributs[$i])) $tableAttributs[$i]="";
  echo "<td>".$tableAttributs[$i]."</td>";
 }
 echo "</tr>\n";
}
//incremente le compteur
$compteurLignes++;
//inutile de continuer si tout est affiché
if($compteurLignes >= $pPosition+$pNbLignes-1) break;
 }
 echo "</table>\n";
}
?>
Afficher la suite 

Votre réponse

2 réponses

Messages postés
23628
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2018
0
Merci
Bonjour,

Pour commencer.... attention tu utilises l'ancienne extension mysql considérée comme Obsolète.
Je t'invite fortement à passer à Mysqli ou (je préfère...) PDO.
http://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top
http://www.commentcamarche.net/faq/44117-connexion-a-une-base-avec-pdo-mysqli
http://www.commentcamarche.net/faq/27489-pdo-une-autre-facon-d-acceder-a-vos-bases-de-donnees


Ensuite.... nous ne savons rien de ta variable $pResultat. Le souci vient vraisemblablement de là....

Commenter la réponse de jordane45
0
Merci
merci
le probleme est que je travaille ici par l'API mysql et non pas avec mysqli recemment recommandé par php.net...

mais le probleme est comment adapter mes codes avec la nouvelle approche car j'ai essayé de changer tous les mysql en mysqli et j'ai pas arrivé à une solution(toujours il y a des msg d'erreur...etc).

voilà le code qui appelle cette fonction que j'ai publié là-dessus pouvez vous m'aider et merci: (affichageMultipages.php)

<!Doctype html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""
http://www.w3.org/TR/xhtml1/DTD/xhtml-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html" charset="utf-8" />
<title>affichage multipages</title>

</head>
<body>
<?php
require("fonctionBDD.php");
require("constantes.php");
require("afficherResultat.php");
define ("NB_LIGNES",5);
$connexion=mysql_connect(SERVEUR,NOM_SERVEUR,MOT_PASSE,NOM_BASE);
//on initialise la position
if(isSet($_GET["position"])) $position=$_GET['position'];
else $position=1;
//on cree le formulaire de saisie de requete
echo "<form action='affichageMultipages.php' method='post'>\n";
echo "<textarea name='requete' cols='50' rows='4'>";
//si on reçoit une requete en POST ou en GET
if(isSet($_REQUEST['requete'])) $requete=urldecode($_REQUEST['requete']);
else $requete="SELECT * FROM utilisateurs ORDER BY nom";
//affiche la requete ds le chmps textarea
echo $requete;
echo "</textarea>\n";
echo "<br/>";
echo "<input name='submit' type='submit' value='Executer' />\n";
echo "</form>\n";

//on excute la reqte
$resultat=mysql_query($connexion,$requete);
//on affich le tabl html avec Nb lignes à partir de la ligne $position
afficherResultat($resultat,$position,NB_LIGNES);
//on calcule les positions avt et apres
$positionAvant=$position-NB_LIGNES;
$positionApres=$position+NB_LIGNES;
$requeteCode=urlEncode($requete);
//s'il ya des lignes avant la 1ere affichée
if($positionAvant >0)
echo "<a href='affichageMultipages.php?position=$positionAvant&requete=$requeteCode' rel="nofollow" target="_blank"><<page précédente</a>\n";
//s'il ya des lignes apres la derniere affichee
if($positionApres<= mysql_num_rows($resultat))
echo "<a href='affichageMultipages.php?position=$positionApres&requete=$requeteCode' rel="nofollow" target="_blank">page suivante>></a>\n";
?>
</body>
</html>
jordane45
Messages postés
23628
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2018
-

j'ai essayé de changer tous les mysql en mysqli et j'ai pas arrivé à une solution(toujours il y a des msg d'erreur...etc).

Il ne suffit pas de mettre un "i" à la fin pour que ça marche.....
Tu dois adapter le code de tes fonctions.....
Pour ça il te suffit de lire la doc des différentes fonctions pour savoir comment les écrire.....

par exemple, pour la connexion :
http://www.w3schools.com/php/func_mysqli_connect.asp

Puis pour faire une requête
http://php.net/manual/fr/mysqli.query.php
ou un exemple plus complet :
http://www.w3schools.com/php/func_mysqli_query.asp

...
je te laisse faire ces modifications avant de revenir nous voir avec ton code si ça ne fonctionne toujours pas.
> jordane45
Messages postés
23628
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2018
-
merci bcp je vais essayer
Commenter la réponse de develop_adn

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.