|
|
|
|
Bonjour à tous,
débutant en php, j'ai besoin d'une aide.
J'essaie de faire un moteur de recherche en php intégré à mon site avec une base MySQL.
La base est créée et j'ai commencé la page de traitement des données.
Voici mon code :
<!-- php codepart 1 here -->
<?php require("libs/dbconnect.php");
?>
<!-- php codepart 1 end -->
<?PHP
echo $value;
$sql ='SELECT * FROM `commerces`';
$page_text_query = mysql_query($sql) or die("Query failed");
$cont = mysql_fetch_array($page_text_query);
echo $cont['Nom'];
echo '<br />';
echo $cont['Rue'];
echo '<br />';
echo $cont['Telephone'];
echo '<br />';
echo $cont['Fax'];
?>
Configuration: Windows XP Firefox 2.0.0.12
Il faut faire un eboucle while qui parcours tout les résultats extraits
<?php
echo $value;
$sql ='SELECT * FROM `commerces`';
$page_text_query = mysql_query($sql) or die("Query failed");
while($cont = mysql_fetch_array($page_text_query))
{
echo $cont['Nom'];
echo '<br />';
echo $cont['Rue'];
echo '<br />';
echo $cont['Telephone'];
echo '<br />';
echo $cont['Fax'];
}
|
Salut,
while( $cont = mysql_fetch_array($page_text_query) )
{
echo $cont['Nom'];
echo '<br />';
echo $cont['Rue'];
echo '<br />';
echo $cont['Telephone'];
echo '<br />';
echo $cont['Fax'];
}
pour trier/compter il faut le faire dans ta requête SQL. un cours de PHP/MySQL. <edit> Tir croisé !!! </edit> [ Mathieu ] Pensez à utiliser le bouton "Conserver la mise en forme du texte sélectionné" pour mettre en forme les codes sources et à cocher l'option "Résolu" quand c'est le cas, merci ! |
Yeah, c'est clair tir croisé !
|
Scuzi,
SELECT * FROM 'commerces' WHERE 'recherche%' LIKE Activites Quand je fais ça le navigateur répond : query failed. Donc il ne trouve rien. Dans cet exemple 'commerces' = table, 'recherche%' = attribut name de mon champ texte et Activites = champ à analyser. J'ai essayé : '%recherche%' et 'recherche'. J'ai utilisé la méthode POST. Il mem manque quelque chose.
|
Ok, ça j'ai compris avec le lien que tu m'as donné. C'était bien expliqué.
<input name=""blabla"/>. - Déclarer ce nom comme variable. var blabla = ????? - Comparer cette variable au champ de la table désiré, en l'occurence le champ activites.??? - Afficher les résultats??? Si c'est le cas c'est du php non ?? Existe t-il un exemple dont on peut s'inspirer, je ne veux pas d'un truc tout fait, je veux le faire tout seul mais une base (pas un cours de php parce-que l'info n'y figure pas forcément) de code existe pour ce genre de requêtes??? Merci pour tout. |
à vrai dire c'est ce que je croyais comprendre…
<form method="post" action="ton_script.php"> <p><input type="text" name="valeur_a_chercher" /></p> <p><input type="submit" value="Rechercher" /></p> </form> ton script PHP : <?php $valeur_a_chercher = mysql_real_escape_string( $_POST['valeur_a_chercher'] ); $sql = "SELECT `champ1` , `champ2` , `champ3` FROM `table` WHERE `champ_ou_tu_veux_chercher` LIKE '%$valeur_a_chercher%'"; /* la suite tu connais... */ ?> comme tu utilises une variable provenant de l'utilisateur, il faut la protéger avec 'mysql_real_escape_string()' mais il faut que tu te sois connecté à ta BDD avant. [ Mathieu ] Pensez à utiliser le bouton "Conserver la mise en forme du texte sélectionné" pour mettre en forme les codes sources et à cocher l'option "Résolu" quand c'est le cas, merci ! |
En dessous de :
$sql = "SELECT `champ1` , `champ2` , `champ3` FROM `table` WHERE `champ_ou_tu_veux_chercher` LIKE '%$valeur_a_chercher%'"; ajoute echo( $sql ); il va afficher la requête construite dans ton navigateur. tu la copie/colle dans l'onglet "SQL" de PHPMyAdmin pour savoir si l'erreur vient de la requête ou du code. si la requête est mauvaise, colle-là (la version servie) ici qu'on y jette un œil ! [ Mathieu ] Pensez à utiliser le bouton "Conserver la mise en forme du texte sélectionné" pour mettre en forme les codes sources et à cocher l'option "Résolu" quand c'est le cas, merci ! |
Re,
|
Salut,
<!-- php codepart 1 here -->
<?php require("libs/dbconnect.php");
?>
<!-- php codepart 1 end -->
<?PHP
$valeur = mysql_escape_string ( $_POST['valeur']);
$sql = "SELECT * FROM commerces WHERE MATCH (Nom,Rue,Telephone,Activites) AGAINST ('$valeur')";
$page_text_query = mysql_query($sql) or die('Query failed');
while ($cont = mysql_fetch_array($page_text_query, MYSQL_BOTH)) {
printf ('<br />');
printf ($cont['Nom']);
printf ('<br />');
printf ($cont['Rue']);
printf ('<br />');
printf ($cont['Telephone']);
printf ('<br />');
printf ($cont['Fax']);
printf ('<br />');
}
?>
Donc ça trouve la plupart du temps ce que l'on cherche mais pas les mots contenant des caractères spéciaux comme é ma question était, peut-on ignorer ces caractères avec une commande php? Merci. |
Salut,
html_entity_decode() est la fonction contraire de htmlentities() : elle convertit les entités HTML de la chaîne string en caractères normaux. Le paramètre optionnel quote_style vous permet de définir ce qu'il adviendra des guillemets simples et doubles. Ce paramètre prend l'une des valeurs suivantes (et la valeur par défaut est ENT_COMPAT) : Tableau 310. Constantes disponibles pour quote_style Constante Description ENT_COMPAT Convertit les guillemets doubles et ignore les guillemets simples. ENT_QUOTES Convertit les guillemets doubles et les guillemets simples. ENT_NOQUOTES Ne convertit aucun guillemet. la chaîne string est la chaîne à traiter. [ Mathieu ] Pensez à utiliser le bouton "Conserver la mise en forme du texte sélectionné" pour mettre en forme les codes sources et à cocher l'option "Résolu" quand c'est le cas, merci ! |
Salut,
é à î Comme ça ma fonction recherche ingnorera les accents et cherchera par exemple pat à la place de épaté. Est-ce que je dois utiliser une regex ? |
Ah d'accord !
$text_a_chercher = html_entities( $text_a_chercher )[ Mathieu ] Pensez à utiliser le bouton "Conserver la mise en forme du texte sélectionné" pour mettre en forme les codes sources et à cocher l'option "Résolu" quand c'est le cas, merci ! |
Hola,
string htmlentities ( string $string [, int $quote_style [, string $charset [, bool $double_encode ]]] ) j'ai essayé : $valeur = htmlentities( $valeur ); Pour amélie j'obtiens Amélie. Mon charset est UTF-8, donc ce devrait être : $valeur = htmlentities( $valeur [, $UTF-8] ); C'est ce que je comprend d'après l'exemple mais ça ne marche pas.... Une idée ?? Merci. |
Ah oui, utf !
, 'UTF-8'ou par , $varoù $var = 'UTF-8';. là, ça devrait le faire. -;o) [ Mathieu ] Pensez à utiliser le bouton "Conserver la mise en forme du texte sélectionné" pour mettre en forme les codes sources et à cocher l'option "Résolu" quand c'est le cas, merci ! |
Non ce n'est pas ç snif
<?PHP
$valeur = mysql_escape_string ( $_POST['valeur']);
$var = 'UTF-8';
$replace = html_entity_decode( $valeur , $var );
$sql = "SELECT * FROM commerces WHERE MATCH (Nom,Rue,Telephone,Activites) AGAINST ('$valeur')";
echo ($sql);
$page_text_query = mysql_query($sql) or die('Query failed');
echo ($cont[0]);
while ($cont = mysql_fetch_array($page_text_query, MYSQL_BOTH)) {
printf ('<br />');
printf ($cont['Nom']);
printf ('<br />');
printf ($cont['Rue']);
printf ('<br />');
printf ($cont['Telephone']);
printf ('<br />');
printf ($cont['Fax']);
printf ('<br />');
}
?>
est égale à :
Warning: html_entity_decode() expects parameter 2 to be long, string given in C:\xampp\htdocs\portail\recherche.php on line 33
SELECT * FROM commerces WHERE MATCH (Nom,Rue,Telephone,Activites) AGAINST ('')
Erreur mince !!! Tu sais pourquoi ?? Merci à toi! J'ai écris html_entity_decode car j'ai changé les caractères html de la base en caractères ANSI. |
J'y comprends plus rien !!!
$valeur = htmlentities( $_POST['valeur'] , ENT_NOQUOTES , 'UTF-8' );
$valeur = mysql_escape_string ( $valeur );
$sql = "SELECT * FROM commerces WHERE MATCH (Nom,Rue,Telephone,Activites) AGAINST ('$valeur')";
[ Mathieu ] Pensez à utiliser le bouton "Conserver la mise en forme du texte sélectionné" pour mettre en forme les codes sources et à cocher l'option "Résolu" quand c'est le cas, merci ! |