Pb script php

salut,

j'ai essayer d'adapter le sript qui est proposé sur le site en ce qui concerne le moteur de recherche en php. Le seul pb c'est que j'ai une erreur ( et surement d'autres apres !!!) : Parse error: parse error, expecting `','' or `';'' in c:\program files\easyphp\www\suivi courrier\recherche.php on line 13

mais cette ligne là n'a pas de "," ou ";" vue que c'est celle là :
if (($nomexp == "") || ($nomexp == "%") || ($societe == "") || ($societe == "%")){
comment est ce que ça se fait? j'ai pourtant suivi ce qui était écrit sur le site !

17 réponses

  1. comment faire pour que le formulaire de recherche et le résultat de recherche soient sur la meme page ?
    0
    1. Une question à la fois... :-)
      Pourrais tu me donner la ligne 12, stp ?

      comment faire pour que le formulaire de recherche et le résultat de recherche soient sur la meme page ?

      Ca dépend de comment est fait ton code !

      Kalamit,
      Je ponce donc j'essuie
      0
      1. et ben je peux meme te donner tout mon script :
        <?php
        //cnx à la bd et séléction de la bd
        $bd = mysql_connect('localhost', 'login','mot de passe') or die ("erreur de connexion");
        mysql_select_db(courrier, $bd) or die("erreur de connexion à la base");

        echo "
        <html>
        <head>
        <title>Résultat de la recherche</title></head>

        <body bgcolor="#FFFFFF" text="#000000" background="Papbis.gif">";

        if (($nomexp == "") || ($nomexp == "%") || ($societe == "") || ($societe == "%")){
        // si le nom ou la societe de l'expéditeur n'ont pas été saisis, le script demande à l'utilisateur de bien vouloir préciser un de ces deux champs
        echo "
        Veuillez entrer le nom ou la société de l'expéditeur !
        <p>";
        }
        else {

        // on sélectionne les enregistrement contenant le nom ou la société de l'expéditeur
        $query = "SELECT distinct count(societe) FROM expéditeur WHERE nomexpediteur = \"%$nomexp%\" OR steexpediteur = \"%$societe%\";
        $result = mysql_query($query);
        $row = mysql_fetch_row($result);
        $nombre = ^$row[0];

        // si aucun enregistrement n'est retourné, on affiche un msg adéquat
        if ($nombre == "0") {
        echo " <h2>Aucun résultat ne correspond à votre recherche</h2>
        <p>";
        }

        // sinon, on affiche le nombre d'enregistrements correspondant et les résultats eux-memes
        else {
        $query = "SELECT distinct nomexpediteur, steexpediteur FROM expediteur WHERE nomexpediteur = \"%$nomexp%"\ OR steexpediteur = \"%societe%"\ ORDER BY nom ASC";
        $result = mysql_query($query);

        // si un seul enregistrement est trouvé, on affiche un meessage au singulier
        if ($nombre == "1") {
        echo "
        <a name=\"#resultat\"><h2>Résultat : un article trouvé</h2></a>
        <p>";
        }

        //dans le cas contraire, le message est au pluriel
        else {
        echo " <a name=\"#resultat\"><h2>Résultat : $nombre articles trouvés</h2></a>
        <p>";
        }
        }
        }
        // on ferme la bd
        mysql_close();
        ?>
        </body>
        </html>
        0
        1. Ah ben oui, t'as un soucis !
          C'est ca qui va pas en fait :

          echo "
          <html>
          <head>
          <title>Résultat de la recherche</title></head>

          <body bgcolor=\"#FFFFFF\" text=\"#000000\" background=\"Papbis.gif\">";

          Maintenant ca devrait aller mieux... :-)

          Kalamit,
          Je ponce donc j'essuie
          0
          1. ben pour l'echo ça va mieux mais j'ai une erreur ligne 28 !
            0
            1. Ca viendrait pas de ca : $nombre = ^$row[0]; par hasard ?
              C'est quoi l'erreur ligne 28 ? C'est laquelle la ligne 28 ?

              Kalamit,
              Je ponce donc j'essuie
              0
              1. désolé, j'ai oublié de dire que j'ai changé cette ligne ! je me suis apperçu de cette faute apres avoir poster mon msg !!! mais j'ai réessayer et ça me met tjs le meme msg d'erreur (celui qui est au dessus !)
                la ligne 28 c'est celle ci : if ($nombre == "0") {
                0
                1. OK.
                  C'est cette ligne qui déconne: $query = "SELECT distinct count(societe) FROM expéditeur WHERE nomexpediteur = '%$nomexp%' OR steexpediteur = '%$societe%' ";

                  Ca devrait fonctionner comme ca. Tu n'avais pas refermer une double quote. J'ai remplacé les double quote dans la requete par des simple (plus propre).
                  Autre chose, il vaut mieux eviter les accents dans le nom des tables...
                  A+ !

                  Kalamit,
                  Je ponce donc j'essuie
                  0
                  1. et à quoi ça sert ça '%$nomexp%' ?
                    comment faire pour classer les nom des expéditeurs par ordre alphabétique ?
                    0
                    1. En fait cela signifie que le champ nomexpediteur doit contenir tout ou partie de la chaine $nomexp.

                      Kalamit,
                      Je ponce donc j'essuie
                      0
                  2. ah merci ça marche !!! :-))
                    par contre je voudrais que soit le champs de la societe soit le champ du nom soient remplis, ou alors les deux... mais apparement ce script ne le fait pas... est ce qu tu sais comment faire ?
                    0
                    1. SELECT distinct count(societe) FROM expéditeur WHERE nomexpediteur <> '' OR steexpediteur <> ''

                      gaffe, ce sont 2 quote simple a chaque fois.
                      si ca ne marche pas, remplace <> '' par = NULL

                      pour classer, ajoute un:
                      order by nom_du_champ
                      a la fin de la requete
                      et order by nom_du_champ DESC
                      si l'ordre est inverse
                      0
                      1. et ça va me mettre les nom par ordre alphabétique si je met ORDER BY ?
                        0
                        1. et les <> ça sert à quoi ?

                          <> ca veut dire "different".

                          $query = "SELECT distinct nomexpediteur, steexpediteur FROM expediteur WHERE nomexpediteur = \"%$nomexp%"\ OR steexpediteur = \"%societe%"\ ORDER BY nom ASC";

                          et ça va me mettre les nom par ordre alphabétique si je met ORDER BY ?

                          Ca y est deja ! Tu as deja un Order by dans ta requete.
                          La premiere requete fait un compte, la seconde selectionne les nom.

                          A+ !

                          Kalamit,
                          Je ponce donc j'essuie
                          0
                          1. quel bébete !!! lol
                            et pour remplir soit un champ ou soit un autre ou soit tous les deux comment il faut faire ?
                            0
                            1. Remplir ?
                              Avec le bout de code que tu m'as donné, je ne vois nulle part, l'affichage des résultat. Tu ne fais qu'afficher le nombre d'articles trouvés, c'est ca ?

                              Kalamit,
                              Je ponce donc j'essuie
                              0
                              1. mais en fait, je remplis dans un formulaire à part, un formulaire de recherche.
                                0