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

Langage PHP Discussion :

moteur de recherche / affichage lorsqu'un résultat est nul


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 57
    Points : 28
    Points
    28
    Par défaut moteur de recherche / affichage lorsqu'un résultat est nul
    Bonjour,

    J'ai réalisé un moteur de recherche interne qui fonctionne merveilleusement bien. Je voudrais l'améliorer, et notamment lorsque la recherche ne donne rien. Lorsque je lance la requête, j'ai un écran blanc. J'aimerais donc qu'un message du genre "La recherche n'a donné aucun résultat".

    J'ai bien essayé de mettre une condition pour ce faire, mais toujours cet écran blanc, je sèche...

    Voici mon 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
    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
    <?php
    mysql_select_db(""); // Sélection de la base 
     
            // Connexion à la BDD ici !
    $textfieldsql = mysql_real_escape_string($_POST['textfield']);
            // Récupération des données type de commerce
            if (isset($_POST['type']) && $_POST['type'] != "no") {
    $type = " AND type = '".mysql_real_escape_string($_POST['type'])."'";
            }
            else { $type = ""; }
     
           // Récupération des données de secteur d'activité
    if (isset($_POST[secteur]) && $_POST[secteur] != "no") { 
    $secteur = " AND secteur LIKE '%".mysql_real_escape_string($_POST['secteur'])."%'"; 
    } 
    else { $secteur = ""; } 
      // Récupération des données adresse (rues)
    if (isset($_POST[adresse]) && $_POST[adresse] != "no") { 
    $adresse = " AND adresse LIKE '%".mysql_real_escape_string($_POST['adresse'])."%'"; 
    } 
    else { $adresse = ""; } 
     
        // Récupération des données de secteur géographique
    if (isset($_POST[geographie]) && $_POST[geographie] != "no") { 
    $geographie = " AND geographie LIKE '%".mysql_real_escape_string($_POST['geographie'])."%'"; 
    } 
    else { $geographie = ""; } 
      // Récupération des données de description
     
    if (isset($_POST[textfield]) && $_POST[textfield] != "no") { 
    $textfield =  "  AND ( nom LIKE '%".$textfieldsql."%' OR type LIKE '%".$textfieldsql."%' OR secteur LIKE '%".$textfieldsql."%' OR numero LIKE '%".$textfieldsql."%' OR horaires LIKE '%".$textfieldsql."%' OR geographie LIKE '%".$textfieldsql."%' OR description LIKE '%".$textfieldsql."%' )";
    } 
    else { $textfield = ""; } //création de la fonction d'appel url
    $url = mysql_query("SELECT details FROM locatif"); // Requête SQL
     
            // Création de la requête SQL          		
    		$select = "SELECT * FROM commerces WHERE 1".$type.$secteur.$adresse.$geographie.$textfield." ORDER BY id";
     
    	    // Exécution de la requête
            $raw = mysql_query($select) or die(mysql_error());
     
    	$nb_resultats = mysql_num_rows($raw) or die(mysql_error());
    	  // Fermeture connexion
                    mysql_close();
     
     
     if($nb_resultats != 0) //si le nombre de résultats est différent de 0
    {
    echo 'Nous avons trouvé '.$nb_resultats; 
    if($nb_resultats > 1) { echo ' résultats : '; } else { echo ' résultat '; }
     
    				  // on affiche le nombre de résultats 
    // on vérifie le nombre de résultats pour orthographier correctement. 
     
    // Affichage des données
     
    				while
                   ($data = mysql_fetch_array($raw))
                    {
                            print ("
    			<span class='timesbleu18'>".$data['nom']."</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    			<a href=".$data['details'].">détails</a>
    						<br><br>
    						".$data['type']."&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    						".$data['numero']."
    						".$data['adresse']."<br><br>
    						".$data['description']."<br><br><br><hr>
    						  ");
                    }
    }
    else {
    	echo "Pas de résultats";
    }
     
            ?>
    Pour info, si je fais un "echo $nb_resultats;" avant mon "if($nb_resultats != 0)" , j'obtiens un parse error :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Parse error: syntax error, unexpected T_IF in /homepages/12/d218200567/htdocs/maquettes/ceres/resultat.php on line 56
    La ligne 56 correspond à ceci dans mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php   if($nb_resultats != 0) ?>
    Je sèche complètement, je ne vois pas où se loge ce petit grain de sable qui bloque les rouages de mon script...

    En remerciant par avance les âmes charitables qui vont me donner un petit coup de pouce,

    L.C.

  2. #2
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 487
    Points : 5 134
    Points
    5 134
    Par défaut
    Et si tu vires ton if avec !=0 et tout ce qui suit, que te donnes $nb_resultats ?
    -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_SIGNATURE -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
    Dans la mesure du possible, essayez de montrer votre problème en situation réelle en nous donnant une url, que l'on puisse tester.
    Pensez également à cocher

    Aucun problème ne doit être résolu en MP (Message Privé) le forum est là pour ça.

    Dimension Internet

  3. #3
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 57
    Points : 28
    Points
    28
    Par défaut
    Si je vire tout ce bout de code j'ai un parse error au niveau de ma boucle while...

  4. #4
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 487
    Points : 5 134
    Points
    5 134
    Par défaut
    Continue dans ce cas... le problème doit venir de plus haut.
    Vérifie à nouveau toutes tes accolades, tu dois sûrement en avoir oubliée une ou fais une petite erreur.
    -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_SIGNATURE -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
    Dans la mesure du possible, essayez de montrer votre problème en situation réelle en nous donnant une url, que l'on puisse tester.
    Pensez également à cocher

    Aucun problème ne doit être résolu en MP (Message Privé) le forum est là pour ça.

    Dimension Internet

  5. #5
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 57
    Points : 28
    Points
    28
    Par défaut
    J'ai repris comme code et j'ai fait posé cette condition pour le nombre de résultats :


    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
     
     <? 
     
    				  if($nb_resultats != 0) //si le nombre de résultats est différent de 0
    {
    echo 'Nous avons trouvé '.$nb_resultats; 
    if($nb_resultats > 1) { echo ' résultats : '; } else { echo ' résultat '; }
     
     
    if  ($nb_resultats == 0)
    {
     echo 'Nous avons trouvé '.$nb_resultats; 
    if  ($nb_resultats == 0){ echo 'résultat pour votre recherche'; } else { echo 'résultat pour votre recherche'; }
     
    				  // on affiche le nombre de résultats 
    // on vérifie le nombre de résultats pour orthographier correctement. 
    ?>


    En faisant ceci (ce qui me semble plus plausible car les deux conditions sont symétriques) j'ai un parse error : syntax unexpected $end concernant la toute dernière ligne de mon script.

    Est-ce qu'en faisant comme ceci, ce n'est pas plus parlant pour pouvoir corriger l'erreur en question ?

    J'émets aussi une hypothèse : l'erreur ne viendrait-elle pas tout simplement de ces deux fonctions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     <?php  $raw = mysql_query($select) or die(mysql_error());
     
    	$nb_resultats = mysql_num_rows($raw) or die(mysql_error()); ?>

  6. #6
    Expert éminent
    Avatar de 12monkeys
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2006
    Messages : 4 093
    Points : 9 031
    Points
    9 031
    Par défaut
    Bonjour

    C'est une erreur qui correspond soit à :
    • l'oubli d'un guillemet,
    • l'oubli d'une accolade,
    • l'oubli d'une parenthèse,
    • ou l'oubli d'un point virgule.


    Donc la ligne d'erreur signalée n'est pas celle où se trouve l'erreur, elle se trouve au dessus. Ce que disais d'ailleurs blueice.
    Vous souhaitez participer à la rubrique (X)HTML/CSS, contactez moi.
    débutez avec les CSS
    Pas de MP pour des questions techniques ! Mode d'emploi du forum ; Règles ; Pensez à la balise code ; Pas de SMS !
    Votez pour les messages qui vous ont aidés...

  7. #7
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 487
    Points : 5 134
    Points
    5 134
    Par défaut
    Vérifie les caractères invisibles par la même occasion, on ne sait jamais...
    -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_SIGNATURE -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
    Dans la mesure du possible, essayez de montrer votre problème en situation réelle en nous donnant une url, que l'on puisse tester.
    Pensez également à cocher

    Aucun problème ne doit être résolu en MP (Message Privé) le forum est là pour ça.

    Dimension Internet

  8. #8
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 57
    Points : 28
    Points
    28
    Par défaut
    Voilà plusieurs jours que je m'arrache les cheveux sur ce fichu code Pas moyen de trouver l'erreur. J'ai pourtant remis au propre certains trucs notamment au niveau de mes requêtes dans ma BDD. Mais toujours rien...

    Je transmets ici la dernière mise à jour :

    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
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>result</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <style type="text/css">
    <!--
    @import url(//...);
    -->
    </style>
    </head>
     
    <body><?php
            mysql_connect("", "", ""); 
    mysql_select_db(""); // Sélection de la base 
     
            // Connexion à la BDD ici !
     
    $textfieldsql = mysql_real_escape_string($_POST['textfield']);
            // Récupération des données type de commerce
            if (isset($_POST['type']) && $_POST['type'] != "no") {
     
    				$type = " AND type = '".mysql_real_escape_string($_POST['type'])."'";
            }
            else { $type = ""; }
     
           // Récupération des données de secteur d'activité
    if (isset($_POST['secteur']) && $_POST['secteur'] != "no") { 
    $secteur = " AND secteur = '".mysql_real_escape_string($_POST['secteur'])."'"; 
    } 
    else { $secteur = ""; } 
     
         // Récupération des données adresse (rues)
    if (isset($_POST['adresse']) && $_POST['adresse'] != "no") { 
    $adresse = " AND adresse = '".mysql_real_escape_string($_POST['adresse'])."'"; 
    } 
    else { $adresse = ""; } 
     
        // Récupération des données de secteur géographique
    if (isset($_POST['geographie']) && $_POST['geographie'] != "no") { 
    $geographie = " AND geographie = '".mysql_real_escape_string($_POST['geographie'])."'"; 
    } 
    else { $geographie = ""; } 
     
     
      // Récupération des données de description
     
    if (isset($_POST['textfield']) && $_POST['textfield'] != "no") { 
    $textfield =  "  AND ( nom LIKE '%".$textfieldsql."%' OR type LIKE '%".$textfieldsql."%' OR secteur LIKE '%".$textfieldsql."%' OR numero LIKE '%".$textfieldsql."%' OR horaires LIKE '%".$textfieldsql."%' OR geographie LIKE '%".$textfieldsql."%' OR description LIKE '%".$textfieldsql."%' )";
    } 
    else { $textfield = ""; } 
     
    //création de la fonction d'appel url
    $url = mysql_query("SELECT details FROM locatif"); // Requête SQL
     
            // Création de la requête SQL          		
    		$select = "SELECT * FROM commerces WHERE 1".$type.$secteur.$adresse.$geographie.$textfield." ORDER BY id";
     
    	    // Exécution de la requête
            $raw = mysql_query($select) or die(mysql_error());
     
    	$nb_resultats = mysql_num_rows($raw) or die(mysql_error());
     
         if($nb_resultats!=0) // si le nombre de résultats est supérieur à 0, on continue
    {
     
    	?>
    <table width="966" border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td><table width="966"  border="0" cellpadding="0" cellspacing="0">
            <tr>
              <td width="33">&nbsp;</td>
              <td><table width="900" border="0" cellpadding="0" cellspacing="0">
                  <tr>
                    <td height="30">&nbsp;</td>
                  </tr>
                  <tr>
                    <td height="50"><div align="center" class="timesbleu20grasmaj">
                        <p class="timesbleu14"><u>R&eacute;sultats de la recherche</u></p>
                      </div></td>
                  </tr>
    			  <tr>
                    <td> <div align="center"><a href="search.php" target="search">Retour 
                        &agrave; la page pr&eacute;c&eacute;dente</a> &gt;&gt; </div><br>
                      <span class="timesbleu14">Nous avons trouvé&nbsp;<? 
    			echo $nb_resultats; // on affiche le nombre de résultats 
    if($nb_resultats > 1) { echo ' résultats'; } else { echo ' résultat'; } // on vérifie le nombre de résultats pour orthographier correctement. 
    ?>
    </span><br><br>
                      <?php
                    // Affichage des données
     
    				while
                   ($data = mysql_fetch_array($raw))
                    {
                            print ("
    			<span class='timesbleu18'>".$data['nom']."</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    			<a href=".$data['details'].">détails</a>
    						<br><br>
    						".$data['type']."&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    						".$data['numero']."
    						".$data['adresse']."<br><br>
    						".$data['description']."<br><br><br><hr>
    						  ");
                    }}
    				else
     
                    {echo 'Aucun résultat pour votre recherche'; 
    			}	
    			 mysql_close();  // Fermeture connexion			
            ?>
                    </td>
     
    			  </tr>
                  <tr>
                    <td height="30" class="timesbleu14"><div align="center"><a href="search.php" target="search">Retour 
                        &agrave; la page pr&eacute;c&eacute;dente</a> &gt;&gt; </div></td>
                  </tr>
                </table></td>
              <td width="33">&nbsp;</td>
            </tr>
          </table></td>
      </tr>
    </table>
    </body>
    </html>
    J'en appelle aux âmes généreuses qui voudraient bien me filer un petit coup de pouce. Je continue de mon côté à rechercher ce qui ne va pas. L'erreur est infime j'en suis sûr, mais mon niveau en php (plutôt débutant) ne me permet pas de la déceler; à moins que ce ne soit la fatigue !

    Je lance donc un S.O.S, encore merci d'avance

  9. #9
    Expert éminent
    Avatar de 12monkeys
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2006
    Messages : 4 093
    Points : 9 031
    Points
    9 031
    Par défaut
    Bonjour

    Essaye ceci : ne donne pas d'erreur chez moi...

    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
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>result</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <style type="text/css">
    <!--
    @import url(//...);
    -->
    </style>
    </head>
     
    <body>
    <?php
    mysql_connect("", "", ""); 
    mysql_select_db(""); // Sélection de la base 
     
    // Connexion à la BDD ici !
     
    $textfieldsql = mysql_real_escape_string($_POST['textfield']);
     
    // Récupération des données type de commerce
    if (isset($_POST['type']) && $_POST['type'] != "no") {
        $type = " AND type = '".mysql_real_escape_string($_POST['type'])."'";
    } else {
        $type = "";
    }
     
    // Récupération des données de secteur d'activité
    if (isset($_POST['secteur']) && $_POST['secteur'] != "no") { 
        $secteur = " AND secteur = '".mysql_real_escape_string($_POST['secteur'])."'"; 
    } else {
        $secteur = "";
    }
     
    // Récupération des données adresse (rues)
    if (isset($_POST['adresse']) && $_POST['adresse'] != "no") { 
        $adresse = " AND adresse = '".mysql_real_escape_string($_POST['adresse'])."'"; 
    } else {
        $adresse = "";
    } 
     
    // Récupération des données de secteur géographique
    if (isset($_POST['geographie']) && $_POST['geographie'] != "no") { 
        $geographie = " AND geographie = '".mysql_real_escape_string($_POST['geographie'])."'"; 
    } else {
        $geographie = "";
    }
     
     
    // Récupération des données de description
     
    if (isset($_POST['textfield']) && $_POST['textfield'] != "no") { 
        $textfield = " AND ( nom LIKE '%".$textfieldsql."%' OR type LIKE '%".$textfieldsql."%' OR secteur LIKE '%".$textfieldsql."%' OR numero LIKE '%".$textfieldsql."%' OR horaires LIKE '%".$textfieldsql."%' OR geographie LIKE '%".$textfieldsql."%' OR description LIKE '%".$textfieldsql."%' )";
    } else {
        $textfield = "";
    }
     
    //création de la fonction d'appel url
    //$url = mysql_query("SELECT details FROM locatif"); // Requête SQL    -    A QUOI CA SERT CA ??
     
     
    // Création de la requête SQL
    	$select = "SELECT * FROM articles WHERE 1".$type.$secteur.$adresse.$geographie.$textfield." ORDER BY id";
     
    // Exécution de la requête
    	$raw = mysql_query($select) or die(mysql_error());
    	$nb_resultats = mysql_num_rows($raw) or die(mysql_error());
     
        if($nb_resultats!=0) { // si le nombre de résultats est supérieur à 0, on continue
    ?>
    <table width="966" border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td><table width="966"  border="0" cellpadding="0" cellspacing="0">
            <tr>
              <td width="33">&nbsp;</td>
              <td><table width="900" border="0" cellpadding="0" cellspacing="0">
                  <tr>
                    <td height="30">&nbsp;</td>
                  </tr>
                  <tr>
                    <td height="50"><div align="center" class="timesbleu20grasmaj">
                        <p class="timesbleu14"><u>R&eacute;sultats de la recherche</u></p>
                      </div></td>
                  </tr>
    			  <tr>
                    <td> <div align="center"><a href="search.php" target="search">Retour 
                        &agrave; la page pr&eacute;c&eacute;dente</a> &gt;&gt; </div><br>
                      <span class="timesbleu14">Nous avons trouvé&nbsp;
    <?php
    	echo $nb_resultats; // on affiche le nombre de résultats 
     
    if ($nb_resultats > 1) {
        echo ' résultats';
    } else {
        echo ' résultat';
    }// on vérifie le nombre de résultats pour orthographier correctement. 
    ?>
    </span><br><br>
    <?php
    // Affichage des données
     
    	while ($data = mysql_fetch_array($raw)) {
    	    echo '<span class="timesbleu18">'.$data['nom'].'</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
    	    echo '<a href="'.$data['details'].'">détails</a><br><br>';
    	    echo $data['type'].'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
    	    echo $data['numero'];
    	    echo $data['adresse'].'<br><br>';
    	    echo $data['description'].'<br><br><br><hr>';
    	}
    } else {
        echo 'Aucun résultat pour votre recherche'; 
    }
     
    mysql_close();// Fermeture connexion			
     
    ?>
                    </td>
     
    			  </tr>
                  <tr>
                    <td height="30" class="timesbleu14"><div align="center"><a href="search.php" target="search">Retour 
                        &agrave; la page pr&eacute;c&eacute;dente</a> &gt;&gt; </div></td>
                  </tr>
                </table></td>
              <td width="33">&nbsp;</td>
            </tr>
          </table></td>
      </tr>
    </table>
    </body>
    </html>
    Un maitre mot : bien indenter son code...
    Vous souhaitez participer à la rubrique (X)HTML/CSS, contactez moi.
    débutez avec les CSS
    Pas de MP pour des questions techniques ! Mode d'emploi du forum ; Règles ; Pensez à la balise code ; Pas de SMS !
    Votez pour les messages qui vous ont aidés...

  10. #10
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 57
    Points : 28
    Points
    28
    Par défaut
    Merci tout d'abord pour ton coup de pouce. Ceci dit, il y a une astuce, parce qu'il me dit que ma base de données n'existe pas quand je fais une recherche (alors que j'ai mis les bon paramètres) ? : Table 'mabase.articles' doesn't exist

  11. #11
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 57
    Points : 28
    Points
    28
    Par défaut
    ok c'est bon j'ai vu l'erreur, je peux me connecter maintenant à ma base de données. Le script fonctionne, mais toujours aucun affichage dans le cas d'une recherche qui ne donnerait aucun résultat

  12. #12
    Expert éminent
    Avatar de 12monkeys
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2006
    Messages : 4 093
    Points : 9 031
    Points
    9 031
    Par défaut
    Bonjour

    En fait "articles" vient de ma correction et des tests que j'ai fait, j'ai juste oublié de modifier

    Bon je pense avoir trouvé ce qui te pose problème, sur cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	$nb_resultats = mysql_num_rows($raw) or die(mysql_error());
    enlève le or die... ->

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	$nb_resultats = mysql_num_rows($raw);
    J'ai aussi enlevé le 1 dans ta requête, je ne comprends pas à quoi il sert, et il me cause une erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $select = "SELECT * FROM commerces WHERE 1".$type.$secteur.$adresse.$geographie.$textfield." ORDER BY id";
    devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $select = "SELECT * FROM commerces WHERE ".$type.$secteur.$adresse.$geographie.$textfield." ORDER BY id";
    Vous souhaitez participer à la rubrique (X)HTML/CSS, contactez moi.
    débutez avec les CSS
    Pas de MP pour des questions techniques ! Mode d'emploi du forum ; Règles ; Pensez à la balise code ; Pas de SMS !
    Votez pour les messages qui vous ont aidés...

  13. #13
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 487
    Points : 5 134
    Points
    5 134
    Par défaut
    Et si tu remplaces $nbr_resultats == 0 par === 0 ?
    -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_SIGNATURE -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
    Dans la mesure du possible, essayez de montrer votre problème en situation réelle en nous donnant une url, que l'on puisse tester.
    Pensez également à cocher

    Aucun problème ne doit être résolu en MP (Message Privé) le forum est là pour ça.

    Dimension Internet

  14. #14
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 57
    Points : 28
    Points
    28
    Par défaut
    Si j'écris ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $nb_resultats = mysql_num_rows($raw);
    J'ai un parse error avec le if d'après si j'effectue une recherche.

    Par ailleurs, le $nbr_resultats == 0 n'existe plus dans la dernière mise à jour; il est remplacé par $nbr_resultats != 0...je peux le remplacer par $nbr_resultats !==0 Mais je doute que cela fonctionne...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $select = "SELECT * FROM commerces WHERE ".$type.$secteur.$adresse.$geographie.$textfield." ORDER BY id";
    J'oubliais; si j'enlève le "1" j'ai ce message en retour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND ( nom LIKE '%%' OR type LIKE '%%' OR secteur LIKE '%%' OR n
    Pour ce dernier cas je crois savoir pourquoi : toutes mes données dans ma tables sont classées par ordre numérique

  15. #15
    Expert éminent
    Avatar de 12monkeys
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2006
    Messages : 4 093
    Points : 9 031
    Points
    9 031
    Par défaut
    Je ne comprends pas trop j'ai pas d'erreur quand je teste, mais bon je ne dois pas avoir la même base de données (structure et contenu), de plus tu dois avoir un formulaire derrière ça, non ?

    Pour ton parse error, peut tu mettre l'erreur entière ?

    Ensuite pour débugger ta requête, affiche la :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo $select."\n<br>";
     
    echo $nb_resultats;
    Vous souhaitez participer à la rubrique (X)HTML/CSS, contactez moi.
    débutez avec les CSS
    Pas de MP pour des questions techniques ! Mode d'emploi du forum ; Règles ; Pensez à la balise code ; Pas de SMS !
    Votez pour les messages qui vous ont aidés...

  16. #16
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 57
    Points : 28
    Points
    28
    Par défaut
    yesssssssssssssssssssss

    J'ai compris pourquoi cela ne fonctionnait pas :

    pour le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $nb_resultats = mysql_num_rows($raw) or die(mysql_error());
    il fallait certes le réécrire ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $nb_resultats = mysql_num_rows($raw);
    Mais il fallait aussi appliquer la même chose pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $raw = mysql_query($select) or die(mysql_error());


    Désormais le code fonctionne quelque soit le cas de figure. Je le retranscrit ici si ça peut aider d'autres gens dans la panade :
    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
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>result</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <style type="text/css">
    <!--
    @import url file:///
    -->
    </style>
    </head>
     
    <body><?php
            mysql_connect("", "", ""); 
     
    mysql_select_db(""); // Sélection de la base 
     
     
          // Connexion à la BDD ici !
     
    $textfieldsql = mysql_real_escape_string($_POST['textfield']);
     
    // Récupération des données type de commerce
    if (isset($_POST['type']) && $_POST['type'] != "no") {
        $type = " AND type = '".mysql_real_escape_string($_POST['type'])."'";
    } else {
        $type = "";
    }
     
    // Récupération des données de secteur d'activité
    if (isset($_POST['secteur']) && $_POST['secteur'] != "no") { 
        $secteur = " AND secteur = '".mysql_real_escape_string($_POST['secteur'])."'"; 
    } else {
        $secteur = "";
    }
     
    // Récupération des données adresse (rues)
    if (isset($_POST['adresse']) && $_POST['adresse'] != "no") { 
        $adresse = " AND adresse = '".mysql_real_escape_string($_POST['adresse'])."'"; 
    } else {
        $adresse = "";
    } 
     
    // Récupération des données de secteur géographique
    if (isset($_POST['geographie']) && $_POST['geographie'] != "no") { 
        $geographie = " AND geographie = '".mysql_real_escape_string($_POST['geographie'])."'"; 
    } else {
        $geographie = "";
    }
     
     
    // Récupération des données de description
     
    if (isset($_POST['textfield']) && $_POST['textfield'] != "no") { 
        $textfield = " AND ( nom LIKE '%".$textfieldsql."%' OR type LIKE '%".$textfieldsql."%' OR secteur LIKE '%".$textfieldsql."%' OR numero LIKE '%".$textfieldsql."%' OR horaires LIKE '%".$textfieldsql."%' OR geographie LIKE '%".$textfieldsql."%' OR description LIKE '%".$textfieldsql."%' )";
    } else {
        $textfield = "";
    }
     
     
    // Création de la requête SQL
    	$select = "SELECT * FROM commerces WHERE 1".$type.$secteur.$adresse.$geographie.$textfield." ORDER BY id";
     
    // Exécution de la requête
    	$raw = mysql_query($select);
    	$nb_resultats = mysql_num_rows($raw);
     
        if($nb_resultats!=0) { // si le nombre de résultats est supérieur à 0, on continue
    ?>
     
    <table width="966" border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td><table width="966"  border="0" cellpadding="0" cellspacing="0">
            <tr>
              <td width="33">&nbsp;</td>
              <td><table width="900" border="0" cellpadding="0" cellspacing="0">
                  <tr>
                    <td height="30">&nbsp;</td>
                  </tr>
                  <tr>
                    <td height="50"><div align="center" class="timesbleu20grasmaj">
                        <p class="timesbleu14"><u>R&eacute;sultats de la recherche</u></p>
                      </div></td>
                  </tr>
    			  <tr>
                    <td> <div align="center"><a href="search.php" target="search">Retour 
                        &agrave; la page pr&eacute;c&eacute;dente</a> &gt;&gt; </div><br>
                      <span class="timesbleu14">Nous avons trouvé&nbsp;
    <?php
    	echo $nb_resultats; // on affiche le nombre de résultats 
     
    if ($nb_resultats > 1) {
        echo ' résultats';
    } else {
        echo ' résultat';
    }// on vérifie le nombre de résultats pour orthographier correctement. 
    ?>
    </span><br><br>
    <?php
    // Affichage des données
     
    	while ($data = mysql_fetch_array($raw)) {
    	    echo '<span class="timesbleu18">'.$data['nom'].'</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
    	    echo '<a href="'.$data['details'].'">détails</a><br><br>';
    	    echo $data['type'].'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
    	    echo $data['numero'];
    	    echo $data['adresse'].'<br><br>';
    	    echo $data['description'].'<br><br><br><hr>';
    	}
    } else {?><div align="center"><br><br><?php
        echo ?>D&eacute;sol&eacute;, nous n'avons trouv&eacute; aucun r&eacute;sultat pour votre recherche <?php ;
    }
     
    mysql_close();// Fermeture connexion			
     
    ?><br><br></div>
                    </td>
     
    			  </tr>
                  <tr>
                    <td height="30" class="timesbleu14"><div align="center"><a href="search.php" target="search">Retour 
                        &agrave; la page pr&eacute;c&eacute;dente</a> &gt;&gt; </div></td>
                  </tr>
                </table></td>
              <td width="33">&nbsp;</td>
            </tr>
          </table></td>
      </tr>
    </table>
    </body>
    </html>
    Encore un grand merci aux bosseur qui m'ont éclairé de leurs lumières

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SQL] moteur de recherche : affichage du nombre de résultats
    Par lachourave dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 25/02/2008, 14h09
  2. Moteur de recherche : comment trier les résultats par pertinence
    Par aucunIDdeLibre dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/12/2007, 13h42
  3. Réponses: 4
    Dernier message: 21/11/2007, 22h27
  4. Moteur de recherche, affichage par page et url rewriting
    Par paupiette dans le forum Langage
    Réponses: 5
    Dernier message: 22/06/2007, 10h45
  5. [ moteur de recherche ] affichage de photos, keywords
    Par van___fanel dans le forum Requêtes
    Réponses: 2
    Dernier message: 05/03/2007, 21h32

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