Problème de compteur!

Toutoos
Invité n'ayant pas de compte PHPfrance

11 juin 2008, 18:40

Bonjour,

Je suis en trin de développer la dernière version ( V6.4.2) du moteur ou plutot annuaire des toutoos! Le problème est que le morceau de script le plus simple ne fonctionne pas!!!

Code : Tout sélectionner

$recherchetotal = "SELECT * FROM `annuaire`"; $resulttt = @mysql_query($recherchetotal); $nbtotal = @mysql_num_rows($resulttt);
Je peux si vous le désirez vous offrir la page entière mais que si vous me le demandez!

Merci de toruver le petit problème!
[/code]

ViPHP
ViPHP | 5924 Messages

11 juin 2008, 18:55

Toi tu mets tout ce qui est en ton pouvoir pour ne pas réussir à débugguer. Deux indices :
- Le @ masque les erreurs.
- La fonction mysql_error() permet d'afficher la dernière erreur SQL.

Eléphant du PHP | 174 Messages

11 juin 2008, 20:33

Bonsoir.

Comme te l'a déjà dit Sékiltoyai commence par enlever les @.

Ensuite, pour coder de manière correcte et ne pas chercher ses problèmes torp longtemps rajouter des or die() est une méthode pratique.

Enfin, comme ta requête est basique, teste là sous mysql directement.
Si elle fonctionne c'est que tu n'es pas connecté à la base, si elle ne fonctionne pas c'est que la table n'existe pas.

Bonne soirée et bonne progra !
"Il vaut mieux avoir du luxe dans ses sentiments que sur ses habits, je ne crains, moi, le mépris de personne" Honoré De Balzac.
"On s'étonne trop de ce que l'on voit rarement et trop peu de ce que l'on voit chaque jour" Mme de Genlis
"L'absence diminue les médiocres passions et augmente les grandes comme le vent éteint les bougies et allume le feu" La RocheFoucauld
"People have hope because they can't see Death standing behind them" (anonymous)
"Of all the things I've lost, I miss my brain the most" (from a fanfic)

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

11 juin 2008, 21:06

Sans oublier que le SELECT * est à proscrire.

donc :
$recherchetotal  = "SELECT nom, prenom FROM annuaire";
$resulttt        = mysql_query($recherchetotal) or die(mysql_error());
$nbtotal         = mysql_num_rows($resulttt) or die(mysql_error()); 

Toutoos
Invité n'ayant pas de compte PHPfrance

12 juin 2008, 09:30

Justement la table existe car sur cette table j'ai toutes une série de requète qui fonctionne mais je ne comprend pas car c'est juste celle la! J'ai déja tester sans les @ avant de poster sur le forum ya pas moyens puis je ne vois pas pourquoi préciser dans quel champs éffectuer une requète car je fais un compteur! Une clé unique est installée donc il n'y a pas de doublon!

La je ne vous cache pas que je ne comrned pas mon érreur!

Quand je test le script avec or die(); il ne détecte aucune érreur!

Eléphant du PHP | 174 Messages

12 juin 2008, 10:03

Alors donne nous le code complet de ta page.

Si ta requête fonctionne correctement sous mysql (ou phpMyadmin) c'est certainement que tu n'es pas connecté à la base (n'y aurait-il pas un mysql_close qui traîne ou un lien mort vers un fichier de connexion ?).
"Il vaut mieux avoir du luxe dans ses sentiments que sur ses habits, je ne crains, moi, le mépris de personne" Honoré De Balzac.
"On s'étonne trop de ce que l'on voit rarement et trop peu de ce que l'on voit chaque jour" Mme de Genlis
"L'absence diminue les médiocres passions et augmente les grandes comme le vent éteint les bougies et allume le feu" La RocheFoucauld
"People have hope because they can't see Death standing behind them" (anonymous)
"Of all the things I've lost, I miss my brain the most" (from a fanfic)

toutoos
Invité n'ayant pas de compte PHPfrance

12 juin 2008, 11:25

<?php
  //////////////////////////////////////
  //  Sélection du type de recherche  //
  //////////////////////////////////////

  if ( empty($_GET['moteur']) ) {
    $moteur = 'Simple';
  }
  else {
    $moteur = $_GET['moteur'];
  }

  ///////////////////////////////////////////////////
  // Si c'est bien une recherche qui a été lancée  //
  ///////////////////////////////////////////////////

  if ( $moteur == 'Simple' OR $moteur == 'Avance' ) {
    $recherche  = $_GET['mc'];
    $categorie  = $_GET['ktg'];

  ////////////////////////////////////////////////
  //  On limite le nombre d'affichage par page  //
  ////////////////////////////////////////////////
  
    if ( empty($_GET['nb']) ) {
      $limit = "10";
    }
    else {
      $limit = $_GET['nb'];
    }
  
  /////////////////////////////////////////////
  //  On récupère la valeur de l'algorithme  //
  /////////////////////////////////////////////

    if ( empty($_GET['alg']) ) {
      $algorithme = "OR";
    }
    else {
      $algorithme = $_GET['alg'];
    }

  ////////////////////////////////////
  //  On récupère le champs de tri  //
  ////////////////////////////////////

    if ( empty($_GET['or']) ) {
      $ordre = 'date';
    }
    else {
      $ordre = $_GET['or'];
    }

  ///////////////////////////////////////////////////
  //  On prépare le système de comptage des pages  //
  ///////////////////////////////////////////////////

    if ( empty ($_GET['limite']) ) {
      $limite = 0;
      $limitec = 1;
    } 
    else {
      $limite = $_GET['limite'];
      $limitec = $limite + 1;
    }
  
  ////////////////////////////////////////////////////////
  //  On prépare le comparateur pour les nouveau sites  //
  ////////////////////////////////////////////////////////

    $time = time();
    $semaine = 60*60*24*7;
    $date = $time - $semaine;
  
    $recherchenb     = "SELECT * FROM `annuaire`";
    $rechercheresult = "SELECT * FROM `annuaire`";

  ///////////////////////////////////////////
  //  Si on est dans une recherche simple  //
  ///////////////////////////////////////////

    if ( $_GET['post'] ) {

      if ( $moteur == 'Simple' ) {
        if ( $recherche AND $categorie ) {
          $page_error = '2';
        }
        else if ( $recherche ) {
          $recherchenb     .= " WHERE `titre` like '%".$recherche."%' ".$algorithme." `description` like '%".$recherche."%'";
        }
        else if ( $categorie ) {
          $recherchenb     .= " WHERE `categorie` like '%".$categorie."%'";
        }
        $resultnb = @mysql_query($recherchenb);     
  
        $nbresult = @mysql_num_rows($resultnb);
  
        if ( $recherche AND !$categorie ) {
          $rechercheresult .= " WHERE `titre` like '%".$recherche."%' ".$algorithme." `description` like '%".$recherche."%'";
        }
        else if ( $categorie AND !$recherche ) {
          $rechercheresult .= " WHERE `categorie` like '%".$categorie."%'";
        }
        $rechercheresult .= " ORDER BY `".$ordre."` DESC LIMIT ".$limite.",".$limit;
        $result   = @mysql_query($rechercheresult); 
      }
  
      if ( $moteur == 'Avance' ) {
        if ( $recherche AND $categorie ) {
          $recherchenb     .= " WHERE `titre` like '%".$recherche."%' ".$algorithme." `description` like '%".$recherche."%' ".$algorithme." `categorie` like '%".$categorie."%'";
        }
        else if ( $recherche AND !$acategorie ) {
          $recherchenb     .= " WHERE `titre` like '%".$recherche."%' ".$algorithme." `description` like '%".$recherche."%'";
        }
        else if ( $categorie AND !$recherche ) {
          $recherchenb     .= " WHERE `categorie` like '%".$categorie."%'";
        }
        $resultnb = @mysql_query($recherchenb);     
  
        $nbresult = @mysql_num_rows($resultnb);
  
        if ( $recherche AND $categorie ) {
          $rechercheresult     .= " WHERE `titre` like '%".$recherche."%' ".$algorithme." `description` like '%".$recherche."%' ".$algorithme." `categorie` like '%".$categorie."%'";
        }
        else if ( $recherche AND !$acategorie ) {
          $rechercheresult     .= " WHERE `titre` like '%".$recherche."%' ".$algorithme." `description` like '%".$recherche."%'";
        }
        else if ( $categorie AND !$recherche ) {
          $rechercheresult     .= " WHERE `categorie` like '%".$categorie."%'";
        }
        $rechercheresult .= " ORDER BY `".$ordre."` DESC LIMIT ".$limite.",".$limit;
        $result   = @mysql_query($rechercheresult); 
      }
    }
    else {
      $recherchenb .= " ORDER BY rand() LIMIT 5";
      $resultnb     = @mysql_query($recherchenb);     
      $nbresult     = @mysql_num_rows($resultnb);

      $rechercheresult = $recherchenb;
      $result          = @mysql_query($rechercheresult);     
    }

    $recherchetotal  = "SELECT * FROM `annuaire`";
    $resulttt        = mysql_query($recherchetotal);
    $nbtotal         = mysql_num_rows($resulttt);

  }
?>

Eléphant du PHP | 174 Messages

12 juin 2008, 12:09

Euh, plusieurs questions :

1) à quoi te sert cette requête à ce moment du script ? (parce que ça me paraît pas évident)

2) qu'est-ce qui te permet de dire qu'elle ne fonctionne pas ? (tu n'as aucun traitement avec...)
"Il vaut mieux avoir du luxe dans ses sentiments que sur ses habits, je ne crains, moi, le mépris de personne" Honoré De Balzac.
"On s'étonne trop de ce que l'on voit rarement et trop peu de ce que l'on voit chaque jour" Mme de Genlis
"L'absence diminue les médiocres passions et augmente les grandes comme le vent éteint les bougies et allume le feu" La RocheFoucauld
"People have hope because they can't see Death standing behind them" (anonymous)
"Of all the things I've lost, I miss my brain the most" (from a fanfic)

toutoos
Invité n'ayant pas de compte PHPfrance

12 juin 2008, 13:00

Se script est la préparation a l'affichage du moteur de recherche. En faite il déclare et teste toutes les variables une a une.

Dans une autre page ou une ionclusion de la page est effectuée je fais fonctionner tous les script et met toutes les variables en application!

toutoos
Invité n'ayant pas de compte PHPfrance

12 juin 2008, 13:04

vous voulez peut être voir le script en action?

http;//toutoos.fre.fr

Le script du compteur est en action au moment ou il y a écrit : "Le conteur ne fonctionne pas" a coté des onglets!

Eléphant du PHP | 174 Messages

12 juin 2008, 13:18

Se script est la préparation a l'affichage du moteur de recherche. En faite il déclare et teste toutes les variables une a une.
Pour moi ce script fait office de recherche puisque tu envoies des requetes au serveur SQL...

Dans tous les cas, et pour éviter les problèmes de traitement, il serait logique de te connecter au serveur SQL dans ce document php et de clore la connexion à la fin.

De plus, et si tu l'utilises dans diverses pages, pourquoi ne pas en faire une fonction ?

Sinon (et je suis vraiment désolée mais le script ne me parle vraiment pas) si tu as le temps, donne moi l'algorithme de ce que tu as voulu faire, ça m'éclairerai peut être un peu...
"Il vaut mieux avoir du luxe dans ses sentiments que sur ses habits, je ne crains, moi, le mépris de personne" Honoré De Balzac.
"On s'étonne trop de ce que l'on voit rarement et trop peu de ce que l'on voit chaque jour" Mme de Genlis
"L'absence diminue les médiocres passions et augmente les grandes comme le vent éteint les bougies et allume le feu" La RocheFoucauld
"People have hope because they can't see Death standing behind them" (anonymous)
"Of all the things I've lost, I miss my brain the most" (from a fanfic)

toutoos
Invité n'ayant pas de compte PHPfrance

12 juin 2008, 13:34

Non je ne m'en sert que sur cette page la mais le problème est que l'upload des pages trop grosse sur free ne fonctionne pas correctement! donc j'ai mis se script sur une autre page!

La connection a la base de donnée se fait avant car aant d'inclure le fichier j'ai mi mon bout de code de connection!

ensuite a la fin de la page j'ai mis la fermeture de la connection a la base de donnée! mais le problème est vraiment spécifik au bout de code donnée au début!

toutoos
Invité n'ayant pas de compte PHPfrance

12 juin 2008, 13:35

je viens de pencer que je n'ai pas répondu a ta question mais l'algorithme je ne voi pas se ke tu entend par la!

La version papier du script?

Eléphant du PHP | 174 Messages

12 juin 2008, 14:51

(arf, problème avec utilisation de la touche tabulation, post réédité après, dsl)
Modifié en dernier par animithra le 12 juin 2008, 14:54, modifié 1 fois.
"Il vaut mieux avoir du luxe dans ses sentiments que sur ses habits, je ne crains, moi, le mépris de personne" Honoré De Balzac.
"On s'étonne trop de ce que l'on voit rarement et trop peu de ce que l'on voit chaque jour" Mme de Genlis
"L'absence diminue les médiocres passions et augmente les grandes comme le vent éteint les bougies et allume le feu" La RocheFoucauld
"People have hope because they can't see Death standing behind them" (anonymous)
"Of all the things I've lost, I miss my brain the most" (from a fanfic)

Eléphant du PHP | 174 Messages

12 juin 2008, 14:53

la version universelle du script (sans langage de programmation) du genre :

VARIABLE
liste des variables et de leur type

DEBUT

ce que fait le programme

FIN
mais le problème est vraiment spécifik au bout de code donnée au début!
le problème c'est qu'on ne peut pas identifier ton problème.
ta requête est ok (cf le début puisque c'est la même que tu refais 3 fois, d'ailleurs faudrait voir à faire un peu de refactoring), tu es connecté à sql.

le problème doit être en aval, au moment où tu utilises ta variable.

tu nous dis qu'il y a un problème mais tu ne nous dit pas en quoi il consiste...
"Il vaut mieux avoir du luxe dans ses sentiments que sur ses habits, je ne crains, moi, le mépris de personne" Honoré De Balzac.
"On s'étonne trop de ce que l'on voit rarement et trop peu de ce que l'on voit chaque jour" Mme de Genlis
"L'absence diminue les médiocres passions et augmente les grandes comme le vent éteint les bougies et allume le feu" La RocheFoucauld
"People have hope because they can't see Death standing behind them" (anonymous)
"Of all the things I've lost, I miss my brain the most" (from a fanfic)