Page 1 sur 2

Problème de compteur!

Posté : 11 juin 2008, 18:40
par Toutoos
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]

Posté : 11 juin 2008, 18:55
par Sékiltoyai
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.

Posté : 11 juin 2008, 20:33
par animithra
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 !

Posté : 11 juin 2008, 21:06
par albat
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()); 

Posté : 12 juin 2008, 09:30
par Toutoos
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!

Posté : 12 juin 2008, 10:03
par animithra
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 ?).

Posté : 12 juin 2008, 11:25
par toutoos
<?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);

  }
?>

Posté : 12 juin 2008, 12:09
par animithra
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...)

Posté : 12 juin 2008, 13:00
par toutoos
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!

Posté : 12 juin 2008, 13:04
par toutoos
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!

Posté : 12 juin 2008, 13:18
par animithra
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...

Posté : 12 juin 2008, 13:34
par toutoos
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!

Posté : 12 juin 2008, 13:35
par toutoos
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?

Posté : 12 juin 2008, 14:51
par animithra
(arf, problème avec utilisation de la touche tabulation, post réédité après, dsl)

Posté : 12 juin 2008, 14:53
par animithra
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...