IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Compter les enregistrements d'une table php 5.1.3 mysql 5.0


Sujet :

PHP & Base de données

  1. #1
    Membre actif

    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 24
    Points : 283
    Points
    283
    Par défaut Compter les enregistrements d'une table php 5.1.3 mysql 5.0
    Bonsoir,

    Je viens de migrer de PHP4 en PHP 5.1.3 et mon script fonctione mal et je ne trouve pas assez de réponses correctes.

    le script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $result1 = mysql_query("SELECT * FROM `$var` where nom like '%.jpg' or nom like '%.JPG' order by date ASC LIMIT $limite , $nombre",$conn);
    $num_results = mysql_num_rows($result1);
    // echo $num_results;
    while ($row = mysql_fetch_object($result1))
    {
    Je récupère l'erreur :
    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in
    ainsi que :
    Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in
    Je sais que ces 2 fonctions ne passent plus en v 5.1.3 mais je n'ai pas trouvé de réponse
    Avez-vous une idée de remplacement ?
    Merci et bonne soirée
    YD

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ces deux fonctions sont toujours valables.
    Elles sont simplement signalées obsolètes à partir de PHP 5.4.

    Il faut que tu regardes les erreurs sql, ta requête ne fonctionne pas.

    Un point de différence dans ton saut de version est peut être que tu n'as plus accès aux variables de formulaire par leur "name"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <input name="toto" type="text">
    // $_POST['toto'] recupère la valeur et non plus $toto

  3. #3
    Membre actif

    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 24
    Points : 283
    Points
    283
    Par défaut
    Bonjour,

    Je suis chez FREE et ces varuables viennent toujours depuis des années d'un include 'global.php' plus haut dans le script

    Ce script ouvre une table, compte les enregistrement (nom de photos) , divise ce nombre par 20 pour avoir le nombre de page affichées à afficher pour montrer les vignettes de ces photos

    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
     
    <?
    $var = "camillexxxx";
    $var1 = "2013";
    $path = "/".$var."/";
    $titre = "Photos de la famille en  " ;
    $titre1 = "Vidéos de la famille en  " ;
    if ((getenv("HTTP_HOST") == "localhost") or (getenv("HTTP_HOST") == "perso.xxxxxx.fr")){
    	//variables globales localhost
    	$host = "localhost";
    	$base = $var;
    	$login = "root";
    	$pass = "";
    	$url = "http://localhost/xxxxxx-free/".$var."/index.php";
    	$url_video = "http://localhost/xxxxx-free/".$var."/videos/index.php";
      $nom_site="http://localhost/xxxx-free/".$var."/";
     
    	$HTTP = "localhost";
    } else {
    	//variables globales Free
    	$host = "sql.free.fr";
    	$base = "xxxxxx";
    	$login = "xxxxxx";
    	$pass = "xxxxx";
    	$url = "http://xxxxxx.free.fr/".$var."/index.php";
    	$url_video = "http://xxxxxx.free.fr/".$var."/videos/index.php";
    	$nom_site="http://xxxxxx.free.fr/".$var."/";
    }
    	$lphoto = "/".$var."/photos/";
    	$lvideo = "/".$var."/videos/";
    ?>
    pour le script :
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
     
    <?php
    include ("globale-camille-xxx.inc.php");
    include ("fonction-camille-xxxx.inc.php");
    include ("redim_image.inc.php");
    $conn = connecte();
     
    foreach( $_REQUEST as $a => $b)
    {
    	$$a = $b;
    }
    $ligne = 1;
    $nombre = 40;
     
    // si limite n'existe pas on l'initialise à Zéro
    if (!isset($limite)) $limite = 0;
    // on cherche le nom de la page.
     
    // $path_parts = pathinfo($PHP_SELF);
    // $page = $path_parts["basename"];
    $page="index.php";
    $total=0;
    //je vais chercher le nombre total de reponses
    $resultx = mysql_query("SELECT * FROM `$var` where nom like '%.jpg' or nom like '%.JPG' order by date ASC",$conn);
     
    //$row = mysql_fetch_row($resultx);
    $total = mysql_num_rows($resultx);
    //echo $total;
     
    while ($row = mysql_fetch_object($resultx))
    {
     
    	$id_foto = $row->id_foto;
    	$foto = $row->nom;
    	$nom = $foto;
    	$fotos="photos/".$foto;
    	// echo $row;
    	$Ratio = image_ratio($fotos);
    	IF ($Ratio<1)
    	{
    		$width="75";
    	}else{
    		$width="100";
    	}
    	$height="";
    	flush(); // Envoie le buffer
    	$new_width=$width;
    	$new_height=$height;
    	image_redim("photos/".$foto,"photos/tphotos/".$foto,$width,$height,100);
    	echo "<td align=center>";
     
    	$imge = image_taille("photos/".$foto);
    	// echo $imge[0],"/",$imge[1];
     
    	$vrai_width=$imge[0];
    	$vrai_height=$imge[1];
     
      //	echo "<a title='$foto' href=\"vu_foto.php?foto=$foto&id=$id_foto&nom=$nom&new_height=$new_height&vrai_width=$vrai_width&vrai_height=$vrai_height&ratio=$Ratio&nombre=$nombre&page=$page&total=$total&limite=$limite\">";
      //  echo "<img border=\"0\" src=\"photos/tphotos/".$foto." \"></a></td></tr> ";
    ?>
    <!--  <a href="photos/<? echo $foto; ?>" class="highslide" onmouseover="return hs.expand(this)"; onmouseout="return hs.discardElement(this)"> -->
      <a href="photos/<? echo $foto; ?>" class="highslide" onclick="return hs.expand(this)">
      <img border="0" src="photos/tphotos/<? echo $foto; ?>" alt="Highslide JS" title="Click pour agrandir" ></a>
    <?php
    	$ligne = -$ligne;
    }
     
    mysql_free_result($resultx);
     
    if($total> $nombre)
    {
      // affichage des liens vers les pages
    	$font="Verdana";
    	$size=1;
     
    	affichePagesAchat($nombre,$page,$total,$font,$size,$limite);
    }
     
    ?>
    <p><center>
    <font face="Verdana" color="#0000FF" size="1"><a href="index.php" title="Retour au début">Retour début</a></font></b></i></p>
    <p><center>
    <font face="Verdana" color="#0000FF" size="1"><a href="<? echo $url_video ; ?>" title="Voir les vidéos">Voir les vidéos</a></font></b></i></p>
    Voila,
    Merci pour la réponse
    Cordialement

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ma réponse est toujours valable : il faut regarder les erreurs SQL, ta requête ne fonctionne pas et cela vient probablement d'une mauvaise récupération des variables, on voit ici que $limite vient apparemment d'un lien, on devrait donc avoir $_GET['limite'] (il faudrait également se prémunir des injections SQL).

  5. #5
    Membre actif

    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 24
    Points : 283
    Points
    283
    Par défaut
    bonjour,

    pour les $_GET[] j'avais résolu par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    foreach( $_REQUEST as $a => $b)
    {
    	$$a = $b;
    }
    Mais qu'est-ce qui fait que cela ne fonctionne plus en php 5 (j'ai déja modifié la fonction myssql_db_query par mysql_query, et surtout, comment me premunir d'une injection sql, bien que le site soit un site de photos familial et qu'une copie est sur mes ordis persos
    merci et,
    cordialement

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ce que tu fais, existe déjà à travers la fonction extract().
    Mais il est déconseillé de procéder ainsi car tu permets l'injection de n'importe quelle variable dans ton code.

    Pour les injections SQL, si tu vas vers l'avenir, il faut utiliser PDO et des requêtes préparées.
    Si tu restes sur l'extension mysql_, il faut utiliser intval() sur tes numériques et mysql_real_escape_string() sur tes chaines.

  7. #7
    Membre actif

    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 24
    Points : 283
    Points
    283
    Par défaut
    Merci Vincent pour vos réponses constructives
    Je vais sérieusement creuser dans ces directions

    Cordialement
    YD

Discussions similaires

  1. [MySQL] Requete en Php: Ne lit pas tous les enregistrements d'une table
    Par smooncef dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 08/08/2008, 10h16
  2. Réponses: 2
    Dernier message: 01/08/2007, 19h45
  3. Afficher tous les enregistrements d'une table
    Par bertrand_declerck dans le forum QuickReport
    Réponses: 2
    Dernier message: 08/07/2005, 08h35
  4. Compter les lignes d une <TABLE>
    Par Invité(e) dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 21/01/2005, 14h43
  5. [VB.NET] Compter les enregistrements d'une requete
    Par leSeb dans le forum Windows Forms
    Réponses: 2
    Dernier message: 21/10/2004, 18h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo