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 :

Recherche dans une base [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2005
    Messages : 66
    Par défaut Recherche dans une base
    Bonjour le forum

    Voilà avec l’aide des membres de ce forum, je suis parvenu ces dernières jours a créer une petite base de donnés, de 6 champs.
    Pour certains entre vous ça l’air de rien mais pour mois c’est pas mal.
    Ci-dessous mon code au complet, tout est là, le fichier fonctions.php pour instant il sert uniquement à l’affichage des liens vers les pages.
    Sur ma lancé je souhaiterai ajouter un petit moteur de recherche à cette base.
    J’ai regardé sur le net il y a beaucoup de scripts mais ça devient trop compliqué pour essayer des les adapter.
    Alors si quelqu’un a envie de me donner un coup de main ça serait vraiment sympa.
    Merci d’avance.
    <?php
    //=========================================
    // includes du fichier fonctions
    //=========================================
    require 'fonctions.php';
    //=========================================
    // information pour la connection à le DB
    //=========================================
    $host = 'localhost';
    $user = 'user';
    $pass = 'pass';
    $db = 'base';

    //=========================================
    // initialisation des variables
    //=========================================
    // on va afficher 7 résultats par page.
    $nombre = 7;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    // si limite n'existe pas on l'initialise à zéro
    if (!$limite) $limite = 0;
    // on cherche le nom de la page.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    $path_parts = pathinfo($_SERVER&#91;'PHP_SELF']);
    $page = $path_parts&#91;"basename"];

    //=========================================&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    // connection à la DB
    //=========================================
    $link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
    mysql_select_db($db) or die ('Erreur :'.mysql_error());

    //=========================================&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    // requête SQL qui compte le nombre total
    // d'enregistrements dans la table.
    //=========================================
    $select = 'SELECT count(id) FROM base_cepm';
    $result = mysql_query($select,$link)&#160;&#160;or die ('Erreur : '.mysql_error() );
    $row = mysql_fetch_row($result);
    $total = $row&#91;0];
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    //=========================================
    // vérifier la validité de notre variable
    // $limite;
    //=========================================
    $verifLimite= verifLimite($limite,$total,$nombre);
    // si la limite passée n'est pas valide on la remet à zéro
    if(!$verifLimite)&#160;&#160;{
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    $limite = 0;
    }
    //=========================================
    // requête SQL qui ne prend que le nombre
    // d'enregistrement necessaire à l'affichage.
    //=========================================

    if (isset($_GET&#91;'sens'])) {
    &#160;&#160;if (
    $_GET&#91;'sens'] == 'ASC') { $sens = 'DESC';}
    &#160;&#160;elseif (
    $_GET&#91;'sens'] == 'DESC') { $sens = 'ASC';}
    &#160;&#160;else {
    $sens = 'ASC';}
    }

    if (isset(
    $_GET&#91;'ordre'])) $ordre = $_GET&#91;'ordre'];
    else
    $ordre = 'Genre';

    $select = 'select photo,genre,espece,famille,origine,exposition FROM base_cepm ORDER BY '.$ordre.' '.$sens.' limit '.$limite.','.$nombre;

    $result = mysql_query($select,$link)&#160;&#160;or die ('Erreur : '.mysql_error() );
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    //=========================================&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;// si on a récupéré un resultat on l'affiche.
    //=========================================
    if($total) {
    // début du tableau
    echo '<table bgcolor="#FFFFFF">'."\n";
    // première ligne on affiche les titres prénom et surnom dans 2 colonnes
    echo '<tr>';
    echo
    '<td bgcolor="#669999"><a href="'.$_SERVER&#91;'PHP_SELF'].'?ordre=photo&sens='.$sens.'&limite='.$limite.'"><b><u>Image</u></b></a></td>';
    echo
    '<td bgcolor="#669999"><a href="'.$_SERVER&#91;'PHP_SELF'].'?ordre=genre&sens='.$sens.'&limite='.$limite.'"><b><u>Genre</u></b></a></td>';
    echo
    '<td bgcolor="#669999"><a href="'.$_SERVER&#91;'PHP_SELF'].'?ordre=espece&sens='.$sens.'&limite='.$limite.'"><b><u>Espèce</u></b></a></td>';
    echo
    '<td bgcolor="#669999"><a href="'.$_SERVER&#91;'PHP_SELF'].'?ordre=famille&sens='.$sens.'&limite='.$limite.'"><b><u>Famille</u></b></a></td>';
    echo
    '<td bgcolor="#669999"><a href="'.$_SERVER&#91;'PHP_SELF'].'?ordre=origine&sens='.$sens.'&limite='.$limite.'"><b><u>Origine</u></b></a></td>';
    echo
    '<td bgcolor="#669999"><a href="'.$_SERVER&#91;'PHP_SELF'].'?ordre=exposition&sens='.$sens.'&limite='.$limite.'"><b><u>Exposition</u></b></a></td>';
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo
    '</tr>'."\n";
    // lecture et affichage des résultats sur 6 colonnes&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    while($row = mysql_fetch_array($result)) {
    echo
    '<tr>';&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo '<td bgcolor="#CCCCCC">'.$row&#91;'photo'].'</td>';&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    echo
    '<td bgcolor="#CCCCCC">'.$row&#91;'genre'].'</td>';
    echo
    '<td bgcolor="#CCCCCC">'.$row&#91;'espece'].'</td>';
    echo
    '<td bgcolor="#CCCCCC">'.$row&#91;'famille'].'</td>';
    echo
    '<td bgcolor="#CCCCCC">'.$row&#91;'origine'].'</td>';
    echo
    '<td bgcolor="#CCCCCC">'.$row&#91;'exposition'].'</td>';
    echo
    '</tr>'."\n";
    }
    echo
    '</table>'."\n";
    }
    else echo
    'Pas d\'enregistrements dans cette table...';
    mysql_free_result($result);
    //=========================================&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    // si le nombre d'enregistrement à afficher
    // est plus grand que $nombre
    //=========================================
    if($total > $nombre) {
    // affichage des liens vers les pages
    echo 'Page' ;
    affichePages($nombre,$page,$total);&#160;&#160;
    }
    ?>
    Colorez votre code PHP sur les forums grâce à Developpez.com

  2. #2
    Membre éprouvé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Par défaut
    oyé oyé
    essaye de faire des requetes SELECT en fonction du genre ou de l'espece ect...
    tu fais genre un petit formulaire (d'un champs ), tu veux rechercher par exxemple un chien select * from tabase where espece = chien

    c'est vrai que els moteurs de recherches sont assez balèze sur le net j'en avais un j'ai vite zapé

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2005
    Messages : 66
    Par défaut
    Bonjour, le forum
    Tout d’abord félicitations à toute l’équipe de developpez.com pour ce nouveau Forum.

    Merci oceane 751 pour tes infos, j’ai pensé que c’été ça qu’il fallait faire.
    Mais le problème est que chaque fois que j’essaye d’adapter un formulaire j’ai toujours des erreurs.

    Alors sans vouloir abuser de ta générosité ou celle de quelqu’un d’autre si ou pouvais me mettre ici le code ça serait vraiment sympa.
    Merci

  4. #4
    Membre émérite
    Avatar de Linaa
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    987
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 987
    Par défaut
    Citation Envoyé par Pias
    Mais le problème est que chaque fois que j’essaye d’adapter un formulaire j’ai toujours des erreurs.
    Tu peux toujours poster ton formulaire et on t'aidera à résoudre les problèmes

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2005
    Messages : 66
    Par défaut
    Salut, Linaa
    Ci-dessous le exemple du formulaire que j’essaye d’adapter.
    Il me provoque des erreurs et un plus il faut faire la liaison avec mes tables avec un select, mais très fraîchement je galère.
    Merci de l’aide
    <?php
    print ("<form method=\"post\" action=\"mapage.php\"><br>Recherche : <input type="text" name=\"recherche\" size=\"12\"><input type=\"submit\" value=\"OK\"></form>");
    ?>
    Colorez votre code PHP sur les forums grâce à Developpez.com

  6. #6
    Membre émérite
    Avatar de Linaa
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    987
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 987
    Par défaut
    Tu devrais eviter de faire des print ou des echo, lorsque ce n'est pas utile (code HTML).
    Ainsi, tu t'embeteras moins avec les problèmes de guillemets à echapper !

    Rien qu'en voyant la coloration syntaxique du code, on voit l'erreur
    Tu as oublier d'échapper quelques guillemets (autour de type="text")

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2005
    Messages : 66
    Par défaut
    Ok si je mets le formulaire comme ici dessous il n’y a pas d’erreur.
    Maintenant comment je dois faire pour que l’action effectue une recherche dans ma base ?
    Merci
    <?php
    <FORM method=GET target="_self" action=Quel code je dois mettre ici>
    <
    INPUT TYPE=text name=q size=13 maxlength=40 value="">
    <
    INPUT type=submit name=sa VALUE="Recherche">
    </
    FORM>
    ?>
    Colorez votre code PHP sur les forums grâce à Developpez.com

  8. #8
    Membre émérite
    Avatar de Linaa
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    987
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 987
    Par défaut
    Il n'y a pas à mettre les balises PHP <?php et ?>

    Ce que tu dois mettre dans le "action" est la page qui contient le script à executer (qui peut etre la meme page).
    Et dans le script, il faut que tu fasses la requete adequate comme l'as indiqué oceane751.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2005
    Messages : 66
    Par défaut
    1- Dans mon code de base j’ai intercalé le formulaire dans les lignes ci-dessous :
    Mais si je ne mets pas les balises ça provoque une erreur.Pourquoi ?
    2 – Et dans quel partie du code je place le script ?
    <?php
    $result
    = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );

    <
    FORM method=GET target="_self" action=mapage.php>
    <
    INPUT TYPE=text name=q size=13 maxlength=40 value="">
    <
    INPUT type=submit name=sa VALUE="Recherche">
    </
    FORM>
    if(
    $total) {
    // début du tableau
    ?>
    Colorez votre code PHP sur les forums grâce à Developpez.com

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2005
    Messages : 66
    Par défaut
    Ci-dessous mon code avec le formulaire.
    SVP est-ce que quelqu’un peut essayer de corriger de façon à que je puisse faire une recherche.
    Merci infiniment

    <?php
    require 'fonctions.php';
    $host = 'localhost';
    $user = 'user';
    $pass = 'pass';
    $db = 'base';

    $nombre = 7;
    if (!
    $limite) $limite = 0;

    $path_parts = pathinfo($_SERVER['PHP_SELF']);
    $page = $path_parts["basename"];
    $link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
    mysql_select_db($db) or die ('Erreur :'.mysql_error());
    $select = 'SELECT count(id) FROM base_cepm';
    $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
    $row = mysql_fetch_row($result);
    $total = $row[0];
    $verifLimite= verifLimite($limite,$total,$nombre);
    if(!
    $verifLimite) {
    $limite = 0;
    }
    if (isset(
    $_GET['sens'])) {
    if (
    $_GET['sens'] == 'ASC') { $sens = 'DESC';}
    elseif (
    $_GET['sens'] == 'DESC') { $sens = 'ASC';}
    else {
    $sens = 'ASC';}
    }
    if (isset(
    $_GET['ordre'])) $ordre = $_GET['ordre'];
    else
    $ordre = 'Genre';
    $select = 'select photo,genre,espece FROM base_cepm ORDER BY '.$ordre.' '.$sens.' limit '.$limite.','.$nombre;
    $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );

    ?>
    <center>
    <FORM method=GET target="_self" action=cettepage.php>
    <INPUT TYPE=text name=q size=13 maxlength=80 value="">
    <INPUT type=submit name=sa VALUE="Recherche">
    </FORM>
    <?php

    if($total) {

    echo
    '<table bgcolor="#FFFFFF">'."\n";
    echo
    '<tr>';
    echo
    '<td bgcolor="#669999"><a href="'.$_SERVER['PHP_SELF'].'?ordre=photo&sens='.$sens.'&limite='.$limite.'"><b><u>Image</u></b></a></td>';
    echo
    '<td bgcolor="#669999"><a href="'.$_SERVER['PHP_SELF'].'?ordre=genre&sens='.$sens.'&limite='.$limite.'"><b><u>Genre</u></b></a></td>';
    echo
    '<td bgcolor="#669999"><a href="'.$_SERVER['PHP_SELF'].'?ordre=espece&sens='.$sens.'&limite='.$limite.'"><b><u>Espèce</u></b></a></td>';
    echo
    '</tr>'."\n";

    while(
    $row = mysql_fetch_array($result)) {
    echo
    '<tr>';

    echo
    '<td bgcolor="#CCCCCC">'.$row['photo'].'</td>';
    echo
    '<td bgcolor="#CCCCCC">'.$row['genre'].'</td>';
    echo
    '<td bgcolor="#CCCCCC">'.$row['espece'].'</td>';
    echo
    '</tr>'."\n";
    }
    echo
    '</table>'."\n";
    }
    else echo
    'Pas d\'enregistrements dans cette table...';
    mysql_free_result($result);

    if(
    $total > $nombre) {
    affichePages($nombre,$page,$total);
    echo
    'Page' ;
    }
    ?>
    </center>
    Colorez votre code PHP sur les forums grâce à Developpez.com

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2005
    Messages : 66
    Par défaut
    Bonjour, le forum
    Comme il n’y a pas la foule pour corriger le code.
    C’est peut-être parce que je demande trop.
    Il est vrai que le forum est un lieu entraide et pas de la sous-traitance.

    Alors je vais essayer d’aller par étapes si vous le voulez bien.
    Comme vous pouvez voir dans le code ( poste précèdent ) j’ai déjà le formulaire que ça affiche.

    Je souhaiterai faire un script dans cette même page que puisse me permettre de faire une recherche dans la base.
    Si j’ai bien compris je dois faire quelque chose comme ci-ci :
    select * from tabase where photo,genre,espece

    Est-ce que quelqu’un peut m’aider un peut, et me dire quel code je dois mettre SVP.
    Merci d’avance

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2005
    Messages : 66
    Par défaut
    Bonjour, le forum
    J’essaye encore une dernière fois.
    Est-ce qu’il y a quelqu’un que peut me donner un coup de main svp.
    Merci infiniment

  13. #13
    Membre émérite Avatar de Yobs
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    675
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 675
    Par défaut
    Pour le formulaire, tu fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <form action="cettepage.php" method="post">
         <label for="search">Recherche:</label>
         <input type="text" name="search" size="13" maxlength="80" value="" />
         <input type="submit" name="submitSearch" VALUE="Recherche" />
    </form>

    et tu récupère ton formulaire avec:
    <?php
    //Si le bouton recherche appuyé alors...
    if (isset($_POST&#91;'submitSearch'])) {

    &#160;&#160;&#160;&#160;&#160;&#160;
    //là tu place&#160;&#160;ton script de connexion à ta base de donnée
    &#160;&#160;&#160;&#160;&#160;&#160;
    $sql = "SELECT * FROM base_cepm WHERE genre LIKE '%$search%' OR espece LIKE '%$search%'";
    &#160;&#160;&#160;&#160;&#160;&#160;
    $requete = mysql_query($sql);
    &#160;&#160;&#160;&#160;&#160;&#160;
    $nbResult = mysql_num_rows($requete);
    &#160;&#160;&#160;&#160;&#160;&#160;
    &#160;&#160;&#160;&#160;&#160;&#160;while(
    $row=mysql_fetch_assoc($requete)) {
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    // là tu effectue le traitement que tu souhaite sur les résultats trouvés
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    echo '<p>'.$nbResult.' résultat(s) trouvé(s)</p>'."\n";
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;....
    &#160;&#160;&#160;&#160;&#160;&#160;}
    }
    ?>

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2005
    Messages : 66
    Par défaut
    Salut, Yobs
    Merci infiniment
    Sans vouloir abuser de ta générosité.
    Surtout que je n’ai pas encore eu le temps de faire de recherches.
    La effectivement ça fonctionne parfaitement et les résultats trouvés s’affichent correctement.
    Mais est-ce que ça serait trop compliqué d’afficher les champs trouvés ?

  15. #15
    Membre émérite Avatar de Yobs
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    675
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 675
    Par défaut
    En fait tes champs sont dans la variable $row. Il ne reste qu'à toi de l'afficher à ta guise car je ne connais pas la structure de ta table.

  16. #16
    Membre éprouvé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Par défaut
    $sql = "SELECT tes, champs FROM ta_table
    $requete = mysql_query($sql);
    $nbResult = mysql_num_rows($requete);

    while(
    $row=mysql_fetch_assoc($requete)) {
    echo "tes : ".$row[0];
    echo "champs : ".$row[1];



    ....
    }

    alé op au boulot lol

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2005
    Messages : 66
    Par défaut
    Bonsoir le forum

    Grand merci a Yobs et oceane 751.
    La recherche fonctionne, je me suis mis au boulot (Sympa le coup de fouet d’oceane 751 ).
    Mais j’ai quand même deux petits soucis.
    1-Dans la ligne :

    echo ''.$nbResult.' résultat(s) trouvé(s)'."\n";


    Si le résultat est supérieur à 1 il y a une répétition de la ligne. Par exemple pour 3 s’affiche :

    3 résultat(s) trouvé(s)
    3 résultat(s) trouvé(s
    3 résultat(s) trouvé(s

    Et si les champs texte sont vides et on demande une recherche s’affiche le nombre de lignes contenues dans la base, par exemple 152 résultat(s) trouvé(s

    2- Après une recherche et l’affichage du tableau le tri des champs ne fonctionne plus.
    Par exemple dans cette ligne :

    echo '<td bgcolor="#669999"><a href="'.$_SERVER['PHP_SELF'].'?ordre=genre&sens='.$sens.'&limite='.$limite.'"><b><u>Genre</u></b></a></td>';


    Si quelqu’un peu me donner un coup de main pour ces deux question ça serait sympa.

    Pour une meilleure compréhension je mets ci-dessous mon code dans la totalité.

    ------------------------------------------------------------------

    [$verifLimite
    = verifLimite($limite,$total,$nombre);
    // si la limite passée n'est pas valide on la remet à zéro
    if(!$verifLimite) {
    $limite = 0;
    }
    if (isset(
    $_GET['sens'])) {
    if (
    $_GET['sens'] == 'ASC') { $sens = 'DESC';}
    elseif (
    $_GET['sens'] == 'DESC') { $sens = 'ASC';}
    else {
    $sens = 'ASC';}
    }
    if (isset(
    $_GET['ordre'])) $ordre = $_GET['ordre'];
    else
    $ordre = 'Genre';
    $select = 'select photo,genre,espece,famille,origine,exposition FROM base_cepm ORDER BY '.$ordre.' '.$sens.' limit '.$limite.','.$nombre;
    $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );

    //Si le bouton recherche appuyé alors...
    if (isset($_POST['submitSearch'])) {
    //là tu place ton script de connexion à ta base de donnée
    $sql = "SELECT * FROM base_cepm WHERE genre LIKE '%$search%' OR espece LIKE '%$search%' OR famille LIKE '%$search%' OR origine LIKE '%$search%' OR exposition LIKE '%$search%'";
    $requete = mysql_query($sql);
    $nbResult = mysql_num_rows($requete);


    // début du tableau
    echo '<table bgcolor="#FFFFFF">'."\n";
    // première ligne on affiche les titres
    echo '<tr>';

    echo
    '<td bgcolor="#669999"><a href="'.$_SERVER['PHP_SELF'].'?ordre=photo&sens='.$sens.'&limite='.$limite.'"><b><u>Image</u></b></a></td>';
    echo
    '<td bgcolor="#669999"><a href="'.$_SERVER['PHP_SELF'].'?ordre=genre&sens='.$sens.'&limite='.$limite.'"><b><u>Genre</u></b></a></td>';
    echo
    '<td bgcolor="#669999"><a href="'.$_SERVER['PHP_SELF'].'?ordre=espece&sens='.$sens.'&limite='.$limite.'"><b><u>Espèce</u></b></a></td>';
    echo
    '<td bgcolor="#669999"><a href="'.$_SERVER['PHP_SELF'].'?ordre=famille&sens='.$sens.'&limite='.$limite.'"><b><u>Famille</u></b></a></td>';
    echo
    '<td bgcolor="#669999"><a href="'.$_SERVER['PHP_SELF'].'?ordre=origine&sens='.$sens.'&limite='.$limite.'"><b><u>Origine</u></b></a></td>';
    echo
    '<td bgcolor="#669999"><a href="'.$_SERVER['PHP_SELF'].'?ordre=exposition&sens='.$sens.'&limite='.$limite.'"><b><u>Exposition</u></b></a></td>';
    echo
    '</tr>'."\n";
    while(
    $row=mysql_fetch_assoc($requete)) {
    // là tu effectue le traitement que tu souhaite sur les résultats trouvés
    echo ''.$nbResult.' résultat(s) trouvé(s)'."\n";

    echo
    '<tr>';
    echo
    '<td bgcolor="#CCCCCC">'.$row['photo'].'</td>';
    echo
    '<td bgcolor="#CCCCCC">'.$row['genre'].'</td>';
    echo
    '<td bgcolor="#CCCCCC">'.$row['espece'].'</td>';
    echo
    '<td bgcolor="#CCCCCC">'.$row['famille'].'</td>';
    echo
    '<td bgcolor="#CCCCCC">'.$row['origine'].'</td>';
    echo
    '<td bgcolor="#CCCCCC">'.$row['exposition'].'</td>';
    echo
    '</tr>'."\n";
    }
    echo
    '</table>'."\n";
    }

  18. #18
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    echo ''.$nbResult.' résultat(s) trouvé(s)'."\n";




    C'est dans ton While donc c'est normal que l'affichage se répète

    Et pour les champs vides suffit de tester avant de lancer la requête.

  19. #19
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2005
    Messages : 66
    Par défaut
    Salut, JWhite

    Merci pour la réponse si rapide.
    If(empty($_POST['submitSearch'])==true)
    {
    echo
    "Erreur : le champs n'a pas été rempli";
    exit;
    }

    Pour les champs vides ça devrait marcher, mais j’ai déjà essaye de placer un peut partout dans mon code mais ça ne fonctionne pas, ou est-ce que je dois mettre ce but de code ?
    C'est dans ton While donc c'est normal que l'affichage se répète
    J’ai pas compris !, Peux-tu être plus précis ?, que dois je faire ?
    Merci d’avance

  20. #20
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    1. Sors le echo du while comme ça (si c'est la répétition qui posait problème parce que c'était pas très clair) :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    echo ''.$nbResult.' résultat(s) trouvé(s)'."\n";
    while($row=mysql_fetch_assoc($requete)) {
    // là tu effectue le traitement que tu souhaite sur les résultats trouvés
    echo '<tr>'; 
    echo '<td bgcolor="#CCCCCC">'.$row['photo'].'</td>'; 
    echo '<td bgcolor="#CCCCCC">'.$row['genre'].'</td>';
    echo '<td bgcolor="#CCCCCC">'.$row['espece'].'</td>';
    echo '<td bgcolor="#CCCCCC">'.$row['famille'].'</td>';
    echo '<td bgcolor="#CCCCCC">'.$row['origine'].'</td>'; 
    echo '<td bgcolor="#CCCCCC">'.$row['exposition'].'</td>'; 
    echo '</tr>'."\n"; 
    }
    2. Pour les champs vides j'ai un doute sur le test

    Essaie en remplaçant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If(empty($_POST['submitSearch'])==true)
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If($_POST['submitSearch'] != '')



+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. problème de recherche dans une base de donnée mysql
    Par Xini28 dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 24/10/2005, 18h00
  2. [SGBD] problème de recherche dans une base de donnée mysql
    Par Xini28 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 23/10/2005, 23h06
  3. Recherche dans une base de donnée
    Par genova dans le forum SQLite
    Réponses: 8
    Dernier message: 28/09/2005, 23h16
  4. problème de recherche dans une base de données
    Par bouzid_mehdi dans le forum Bases de données
    Réponses: 2
    Dernier message: 19/07/2005, 06h47
  5. recherche dans une base de donnée+boucle
    Par eric205 dans le forum Bases de données
    Réponses: 8
    Dernier message: 15/03/2005, 21h14

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