Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2885 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Problème avec INSTR

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème avec INSTR

n°1805636
keo64
Posté le 28-10-2008 à 20:09:40  profilanswer
 

Bonsoir je fait un petit script pour faire des recherches dans ma base de donnée je l'ai adapté sur un bouqin,
voici le script:
 

Code :
  1. <?php
  2. mysql_connect("localhost","root","" );
  3. mysql_select_db("test" );
  4. $clause='';
  5. if(isset($_REQUEST['motclef']))
  6. {
  7. $clause.="WHERE INSTR(nom,'".$_REQUEST['motclef']."')";
  8. }
  9. $sql="SELECT nom FROM entreprise WHERE".$clause;
  10. $resultat=mysql_query($sql)or die(mysql_error());
  11. mysql_close();
  12. ?>
  13. [/close]
  14. voici l'erreur afficher:
  15. [code]
  16. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSTR(nom,'test')' at line 1


on dirait que sql ne connait pas instr??  
merci de vos aide
ma table contient que le nom et idnom , mon but est de recherché l'id nom que j'ai tapé dans un formulaire ($_REQUEST['motclef']).


Message édité par keo64 le 28-10-2008 à 20:16:42
mood
Publicité
Posté le 28-10-2008 à 20:09:40  profilanswer
 

n°1805638
stealth35
Posté le 28-10-2008 à 20:23:40  profilanswer
 

Code :
  1. <?php
  2.    mysql_connect("localhost","root","" );
  3.     mysql_select_db("test" );
  4.     $req = mysql_real_escape_string(@$_REQUEST['motclef']);
  5.     $sql="SELECT `nom` FROM `entreprise` LIKE `nom`='%$req%'";
  6.     $resultat=mysql_query($sql)or die(mysql_error());
  7.  
  8. mysql_close();
  9. ?>


 
 
sinon pour le forumaire c'est plus conseiller d'utiliser POST ou GET


Message édité par stealth35 le 28-10-2008 à 20:26:01
n°1805644
keo64
Posté le 28-10-2008 à 20:29:36  profilanswer
 

merci pour le script je l'ai testé voici ce qu'il m'indique
 
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIKE `nom`='%test%'' at line 1
 
j'ai essayé de faire des recheche sur google sur instr mais je ne trouve pas une explication complete,
 

Code :
  1. <?php
  2.    mysql_connect("localhost","root","" );
  3.     mysql_select_db("test" );
  4. $clause='';
  5. if(isset($_REQUEST['motclef']))
  6. {
  7. $clause.="WHERE INSTR(nom,'".$_REQUEST['motclef']."')";
  8. }
  9.     $req = mysql_real_escape_string(@$_REQUEST['motclef']);
  10.     $sql="SELECT `nom` FROM `entreprise` LIKE `nom`='%$req%'";
  11.     $resultat=mysql_query($sql)or die(mysql_error());
  12. mysql_close();
  13. ?>


 
comment fait tu les accent avant nom et après nom car ce n'est pas l'apostrophe il me semble??
en utilsant post ou get je peut par exemple trouvé le nom dupont en mettant juste dup???


Message édité par keo64 le 28-10-2008 à 20:34:29
n°1805648
stealth35
Posté le 28-10-2008 à 20:43:36  profilanswer
 

pour l'accent c'est   alt gr + 7
 
sinon, avec la fonction like oui tu peu trouver dupont en tapant "dup", et aussi en tapant "upont"
puisque que le % est le caratere joker, et POST ou GET n'influe pas dessus
 
sinon skuz pour la ligne c'est ca

Code :
  1. $req = mysql_real_escape_string(@$_POST['motclef']);
  2. $sql="SELECT `nom` FROM `entreprise` WHERE `nom` LIKE '%$req%'";


 
 
attention que t'es pas les magic_quote de mis sur ton serveur , sinon ca va faire doublon avec mysql_real_escape_string


Message édité par stealth35 le 28-10-2008 à 20:45:38
n°1805653
keo64
Posté le 28-10-2008 à 20:53:50  profilanswer
 

ok merci je vais testé cela , par contre
cette accent spécial `quel est la différence entre l'appostrophe?
serait un accent qu'on met que dans les requetes sql??
j'ai toujours mis les aprostrophe '

n°1805654
stealth35
Posté le 28-10-2008 à 21:02:08  profilanswer
 

comme ca c'est pas ambiguï par rapport au autre quote, y'a ca dans phpmyadmin alors j'ai pris l'habitude de les mettres, libre a toi de la fair ou pas, ca fait plus propre je trouve avec

n°1805655
keo64
Posté le 28-10-2008 à 21:05:15  profilanswer
 

moi je trouve ca bien aussi je vais l'appliquer :)
merci encore a ton scipt il fonctionne très bien aucune erreur :)
par contre je  me demande pourquoi le bouquin n'a pas ecrit comme tu l'a fait car pour un débutant c'est dur d'appliquer les script.


Message édité par keo64 le 28-10-2008 à 21:05:45
n°1805660
stealth35
Posté le 28-10-2008 à 21:12:37  profilanswer
 

y'a beaucoup de maniere de faire des choses en php, mais c'est vrai que pour un debut prsenter ca comme ca c'est pas evidant et la solution est un peu obselete
 
pour faire en vraiement plus propre je faisais comme ca avant de passer a PDO
 

Code :
  1. <?php
  2. $link = mysql_connect($server, $user, $password) or die(mysql_error());
  3. $db_selected = mysql_select_db($base, $link) or die (mysql_error());
  4. if(isset($_POST['motclef']) && !empty($_POST['motclef'])){
  5.      $req = mysql_real_escape_string($_POST['motclef']);
  6.      $sql="SELECT `nom` FROM `entreprise` LIKE `nom`='%$req%'";
  7.      $resultat=mysql_query($sql) or die(mysql_error());
  8.    
  9.      while ($data = mysql_fetch_object($resultat)) {
  10.           echo $row->nom;
  11.      }
  12.    
  13. }else{
  14.    echo "Requete vide";
  15. }
  16. ?>


Message édité par stealth35 le 28-10-2008 à 21:18:29
n°1805665
keo64
Posté le 28-10-2008 à 21:25:12  profilanswer
 

ok :)
par contre serait tu la différence entre $_REQUEST et $_POST
j'utilliserait toujours $_POST pour tous ce qui est le résultat d'un forumlaire?


Message édité par keo64 le 28-10-2008 à 21:25:46
n°1805670
stealth35
Posté le 28-10-2008 à 21:33:52  profilanswer
 

$_REQUEST contient $_GET $_POST $_COOKIE, donc c'est pareil pour un soucis de propreté je prefere prendre les globlae separer ca te permet de savoir d'ou tu les a prise, et surtout si y'a des doublon ca risque de coincé
 
tu peu utliser $_GET  dans ton formulaire, mais attention si c'est pour de la recherche je te conseil post
 
GET c'est dans un adresse genre     http://www.hello.com?requete=bonjour&mot=salut
 
t'auras
$_GET['requete'] = bonjour
$_GET['mot'] = salut

mood
Publicité
Posté le 28-10-2008 à 21:33:52  profilanswer
 

n°1805681
keo64
Posté le 28-10-2008 à 21:54:05  profilanswer
 

merci pour tous avec ca j'ai avancé un tous petit pas.
A+


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Problème avec INSTR

 

Sujets relatifs
Problème wordpressProbleme de requête SQL avec Windev trier par date
Problème de Random pour DichotomieProblème MCD
ptit probleme pour afficher du contenu sql en PHP[Resolu] Problème d'include et de connexion à une database avec MDB2
Problème balises bbcode...VBS & ADSI Probléme de création de "dossier de base"
Problème lié à l'utilisation d'une variable globale[Oracle] Problème de performances Instr et CLOB
Plus de sujets relatifs à : Problème avec INSTR


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR