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 :

Problème formulaire GET, ne récupère pas une valeur dès qu'il y a un espace


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 181
    Par défaut Problème formulaire GET, ne récupère pas une valeur dès qu'il y a un espace
    Bonjour,
    Je fais un formulaire de recherche sur mon site. Avec la méthode GET, je récupère les valeurs de ma recherche dans mon select. Mais malheureusement, ça ne prend en compte que les premiers mots et dès qu'il y a un espace, dans l'url, toute la suite ne s'affiche pas.

    Par exemple : je choisis l'article "Mon premier article" et je recherche. Dans l'url du haut figurera mon url+requete=+&requete2=&requete3=Mon&requete4=

    Comment faire pour que tout le nom de l'article s'affiche svp ?

    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
    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
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
     
    <html>
    <body>
     
    <center>Rechercher dans Tous les Sujets
    <br>
    <br>
    Vous pouvez utiliser les opérateurs ET / OU / SANS (pour exclure un mot)
    <br>
     
    <form action="rechercher.php" method="GET">
    <input type="text" name="requete" size="25" value=" " onClick="this.value='';">
    <br>
    <br>
    <SELECT name="requete2">
    		<OPTION VALUE="">Tous les Sujets</option>	
    		<? 
    include ("connect.inc.php");
    include ("variables.php");
    		$resultat2=mysql_query("SELECT * FROM $table2 ORDER BY profil ASC");
     
    		while ($donnees2 = mysql_fetch_assoc($resultat2)) {	
     
    		echo "<OPTION VALUE=".utf8_decode($donnees2['profil']).">".utf8_decode($donnees2['profil'])."</OPTION>";
    		}
    		?>
     
    </SELECT>
     
     
    <SELECT name="requete3">
    		<OPTION VALUE="">Articles</option>	
    		<? 
    include ("connect.inc.php");
    //include ("variables.php");
    		$resultat2=mysql_query("SELECT * FROM $table4 ORDER BY titre ASC");
     
    		while ($donnees2 = mysql_fetch_assoc($resultat2)) {	
     
     
      $donnees2['titre']=strip_tags($donnees2['titre']);
     
     
    		echo "<OPTION VALUE=".tronque($donnees2['titre'],50).">".tronque(utf8_decode($donnees2['titre']),50)."</OPTION>";
    		}
    		?>
     
    </SELECT>	
     
     
    <SELECT name="requete4">
    		<OPTION VALUE="">Tous</option>	
     
    <OPTION VALUE="7">1 semaine</OPTION>";
    <OPTION VALUE="14">2 semaines</OPTION>";
    <OPTION VALUE="30">1 mois</OPTION>";		
    <OPTION VALUE="60">2 mois</OPTION>";		
    <OPTION VALUE="90">3 mois</OPTION>";		
    </SELECT>
     
    <br />
    <br /><input type="submit" value="Recherche"></form></center>
     
     
    <?
     
    function highlight($chaine, $search)
    {
    return eregi_replace($search, "<font color=\"red\">".$search."</font>",  $chaine);
    }
     
    include ("connect.inc.php");
    //include ("variables.php"); 
     
     
    $nombre = 20;  // on va afficher 5 résultats par page.
    if (!isset($limite)) $limite = 0; // si on arrive sur la page pour la première fois 
                   // on met limite à 0.
     
    $path_parts = pathinfo($_SERVER['PHP_SELF']);
    $page = $path_parts['basename'];
    $requete = $_GET['requete'];
     
    $select = "SELECT * FROM $table2 INNER JOIN $table5 ON $table2.numero=$table5.numero INNER JOIN $table4 on $table5.numero_article=$table4.numero WHERE ($table2.profil LIKE '%$requete2%')
    AND ($table4.titre LIKE '%$requete3%')
    AND ($table2.profil LIKE '%$requete%' 
    OR $table4.titre LIKE '%$requete%' 
    OR $table4.resume LIKE '%$requete%' 
    OR $table4.article LIKE '%$requete%' 
    OR $table4.date LIKE '%$requete%')
    ORDER BY $table4.titre, $table4.resume ASC";
    $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
    $total = mysql_fetch_row($result);
    //$total = $row[0];
    $nb_resultats = mysql_num_rows($result);
     
     
    $limitedebut = 0;
    $limitesuivante = $limite + $nombre;
    $limiteprecedente = $limite - $nombre;
    $limitefin = $nb_resultats - $nombre;
     
    // si on a récupéré un résultat on l'affiche.
    if ($requete) {
    if($total) {
     
     
    //include ("variables.php");
    echo "<center><font size='4'>";
    echo "<b>";
    echo "<a href=\"index.php\">Principal</a></b>";
    echo "</font></center><br>";
     
     
    echo "<center>";
    if($limite != 0 && $limite >= 0+$nombre) {
    	echo '<a href="'.$page.'?requete='.$requete.'&limite='.$limitedebut.'&requete2='.$requete2.'"><<</a> ';
        echo '<a href="'.$page.'?requete='.$requete.'&limite='.$limiteprecedente.'&requete2='.$requete2.'">'.$nombre.' réponses précédentes</a>';
    echo " / ";
    }
    if($limitesuivante < $nb_resultats) {
        echo '<a href="'.$page.'?requete='.$requete.'&limite='.$limitesuivante.'&requete2='.$requete2.'">'.$nombre.' réponses suivantes</a>';
    	echo ' <a href="'.$page.'?requete='.$requete.'&limite='.$limitefin.'&requete2='.$requete2.'">>></a>';
    }
    echo "</center>";
     
     
    ?>
    <h3>Résultats de votre recherche.</h3>
    <p>Nous avons trouvé <? 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. 
    ?>
    dans notre base de données :<br/>
    <br/>
    <?
     
    while($donnees = mysql_fetch_array($result)) // on fait un while pour afficher la liste des fonctions trouvées, ainsi que l'id qui permettra de faire le lien vers la page de la fonction
    {
     
    $donnees['titre']=strip_tags($donnees['titre']);
    $donnees['resume']=strip_tags($donnees['resume']);
    echo "<u>";
    		echo highlight(utf8_decode($donnees['titre']), $_GET['requete']);
    echo "</u><br />";	
    		echo highlight(utf8_decode($donnees['resume']), $_GET['requete']);
    		echo "<br /><br />";
     
     
    } 
     
     
     
    }
    else echo '<br><br><center><h3>Pas de résultats</h3>
    <p>Nous n\'avons trouvé aucun résultat pour votre requête '.$_GET['requete'].'.</p></center>';
     
    // on libère le résultat
    mysql_free_result($result);
     
    echo "<center>";
    if($limite != 0 && $limite >= 0+$nombre) {
    	echo '<a href="'.$page.'?requete='.$requete.'&limite='.$limitedebut.'&requete2='.$requete2.'"><<</a> ';
        echo '<a href="'.$page.'?requete='.$requete.'&limite='.$limiteprecedente.'&requete2='.$requete2.'">'.$nombre.' réponses précédentes</a>';
    echo " / ";
    }
    if($limitesuivante < $nb_resultats) {
        echo '<a href="'.$page.'?requete='.$requete.'&limite='.$limitesuivante.'&requete2='.$requete2.'">'.$nombre.' réponses suivantes</a>';
    	echo ' <a href="'.$page.'?requete='.$requete.'&limite='.$limitefin.'&requete2='.$requete2.'">>></a>';
    }
    echo "</center>";
     
    //echo "<br>Limite ".$limite;
    //echo "<br>Limite suivante ".$limitesuivante;
    //echo "<br>Nb_resultats ".$nb_resultats;
    //echo "<br>Nombre ".$nombre;
    }
     
    ?>
     
     
     
    </body>
    </html>
    Merci d'avance

  2. #2
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<OPTION VALUE=\"".utf8_decode($donnees2['profil'])."\">".utf8_decode($donnees2['profil'])."</OPTION>";
    il faut entourer ta valeur des double quotes si tu veux que les espaces soient conservés

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 181
    Par défaut
    Oui, c'était bien ça
    Merci koopajah !!
    Bon, maintenant, ça ne marche pas car j'ai une fonction tronque qui me limitait mes articles et n'affichait que les 50 premiers caractères suivi de trois petits points... et évidemment, ça ne fonctionne pas car il ne trouve pas mon "LIKE requete3" avec les trois petits points... grrrr... je vais devoir enlevé mes trois petits points dans ma fonction alors.

    Bon, merci beaucoup en tous cas !

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 181
    Par défaut
    Est-il possible d'enlever les trois petits points en haut de l'adresse car maintenant j'ai par exemple : "Mon premier article est le..."
    Comment faire pour n'avoir que : "Mon premier article est le" dans mon url svp ???
    Peut-on mettre dans option value : "- ..." pour enlever les trois petits points ?

Discussions similaires

  1. Réponses: 5
    Dernier message: 10/02/2010, 16h42
  2. Réponses: 2
    Dernier message: 22/05/2007, 17h15
  3. Réponses: 2
    Dernier message: 03/04/2007, 11h46
  4. radiobutton erreur n'est pas une valeur entière correcte
    Par pierrot67 dans le forum Bases de données
    Réponses: 3
    Dernier message: 12/03/2006, 22h27
  5. erreur '' n'est pas une valeur entière correcte
    Par ffxlenoir dans le forum Langage
    Réponses: 5
    Dernier message: 02/12/2005, 14h57

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