Salut,
Rien de plus simple à faire qu'un script d'une fonction rechercher ?
Bas pas chez moi ^^
J'ai suivis le tuto à la lettre et j'ai pourtant une erreur, voici l'erreur:
'Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /mnt/159/sda/4/b/eagle.g/InFamouS/pages/search.php on line 33'

Voici le code:

<body>
<div id="search">
    <?php
        if(isset($_GET'search'])){
            require "../config.php";
            $search=$_GET'search'];
            $s=explode(" ",$search);
            $sql="SELECT * FROM news";
            $i=0;
            foreach($s as $mot){
                if(strlen($mot)>4){
                    if($i==0){
                        $sql.=" WHERE ";            
                    }
                    else{
                        $sql.=" OR ";
                    }
                    $sql.="contenu LIKE '% $mot %'";
                    $i++;
                }
            }
            echo $sql."<br/>";
            $req = mysql_query($sql) or die(mysql_error());
            echo mysql_num_rows($req)." Résultat";
            while($data=mysql_fetch_assoc($req)){
                if(strlen($mot)>4){
                    echo "<h1>{$data"titre"]}</h1>";
                    $c=$data"contenu"];
                    foreach($s as $mot){
                        $c = str_ireplace($mot,'<span style=\"background:#f80; font-familly:Arial;\">'.$mot.'</span>',$c);
                    }
                    echo "<p>{$data"contenu"]}</p>";
                    echo "</br>";
                }
                echo "<p>{c}</p>";
            }
        }
        else{
            echo "Votre recherche n'a abouti à rien!";
        }
    ?>
</div>

Pour ce qui veulent voir de plus près: http://eagle.g.free.fr/InFamouS/.
Comme vous pouvez le voir, je ne suis encore qu'un débutant !

Troll Spotted :/

(Réponse d'un anonyme :T'es un nul iEagle, va te pendre mec!
Réponse d'iEagle: Okey, okey, mais au moins, donne une petite réponse, stp ? Après j'irai me pendre =))

Merci d'avance.

Mr.l'Aigle

4 réponses


iEagle
Auteur
Réponse acceptée

Erf :/
Le <u> et <strong> était pour mettre le caractère en gras pour que vous puissiez voir le problème ^^
Sauf que ça ne la pas mis en gras mais mis les balises :/

<?php
    if(isset($_GET'search'])){
        require "../config.php";
        mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
        mysql_select_db(DB_BDD);

        $search=$_GET'search'];
        $s=explode(" ",$search);
        $sql="SELECT * FROM news";
        $i=0;
        foreach($s as $mot){
            if(strlen($mot)>3){
                if($i==0){
                    $sql.=" WHERE ";           
                }
                else{
                    $sql.=" OR ";
                }
                $sql.="contenu LIKE '% $mot %'";
                $i++;
            }
        }
        $req = mysql_query($sql) or die (mysql_error());
        echo mysql_num_rows($req)." Résultat";
        while($data=mysql_fetch_assoc($req)){
            echo "<h1>{$data"titre"]}</h1>";
            $c=$data"contenu"];
            $i=0;
            foreach($s as $mot){
                if(strlen($mot)>3){
                    $i++;
                    if($i>4){$i=1;}
                    $c = str_ireplace($mot,'<span>'.$mot.'</span>',$c);
                }
            }
            echo "<p>{$c}</p>";
        }
    }
    else{
        echo "Votre recherche n'a abouti à rien!";
    }
?>

Problème ligne 33 donc ^^
Désolé ..

Edit: Problème résolu, j'ai remplacer str_ireplace par str_replace.
Merci en tout cas d'avoir répondu à mes problèmes !

En fait l'erreur viens du faite que tu n'es pas connecté à ta base de donnée, donc la connexion est mal faite dans ton fichier config.php

iEagle
Auteur

Saluy Nairolf !
Excuse moi de mon impolitesse, je n'ai pas pus répondre plus tôt :/
Donc pour en revenir à mon problème, c'était assez simple au finale mais je bloque maintenant à la ligne 52 .

  • Pour mon problème d'avant, effectivement il n'arriver pas à entrer dans la base de donné, parce que tous simplement, j'avais oublié de connecté la base à mon fichier Search.php!

  • Second Problème:

    <?php
    if(isset($_GET'search'])){
    require "../config.php";
    mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
    mysql_select_db(DB_BDD);
    $search=$_GET'search'];
    $s=explode(" ",$search);
    $sql="SELECT * FROM news";
    $i=0;
    foreach($s as $mot){
    if(strlen($mot)>3){
    if($i==0){
    $sql.=" WHERE ";
    }
    else{
    $sql.=" OR ";
    }
    $sql.="contenu LIKE '% $mot %'";
    $i++;
    }
    }
    $req = mysql_query($sql) or die (mysql_error());
    echo mysql_num_rows($req)." Résultat";
    while($data=mysql_fetch_assoc($req)){
    echo "<h1>{$data"titre"]}</h1>";
    $c=$data"contenu"];
    $i=0;
    foreach($s as $mot){
    if(strlen($mot)>3){
    $i++;
    if($i>4){$i=1;}
    <u><strong>$c = str_ireplace($mot,'<span>'.$mot.'</span>',$c);</strong></u>
    }
    }
    echo "<p>{$c}</p>";
    }
    }
    else{
    echo "Votre recherche n'a abouti à rien!";
    }
    ?>

La ligne en gras pose problème

Merci d'avance ;) !

<u><strong>$c = str_ireplace($mot,'<span>'.$mot.'</span>',$c);</strong></u>

celle là ?

Tu es en train de mettre du html dans du php

$c = str_ireplace($mot,'<span>'.$mot.'</span>',$c);
$c='<u><strong>'.$c.'</strong></u>';

Ca devrait aller mieux comme ça :p