recheche dans requete sql

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : recheche dans requete sql

Re: recheche dans requete sql

par jojolapine » 28 sept. 2013, 19:02

Bonjour,

Il y a à priori deux solution à ton problème.
La plus simple serait de faire une recherche exacte mais cela implique que les valeurs des champs corresponde bien, cela donnerais en SQL :
SELECT * FROM `serveurs` WHERE `nom` IN ('serveur1','serveur2','...')
Cela donnerais en php :
<?php
// transformation en tableau
$tab_serveur1 = explode(';',$serveur1);
// protection des données pour mysql
$tab_serveur1_protected = array_map("mysql_real_escape_string",$tab_serveur1);
$req = mysql_query("SELECT * FROM `serveurs` WHERE `nom` in ('".implode("','",$tab_serveur1_protected)."')")or die(mysql_error());
L'autre solution si une recherche approchée est nécessaire c'est de multiplier les LIKE... en sql :
SELECT * FROM `serveurs` WHERE `nom` LIKE 'serveur1' OR LIKE 'serveur2' OR LIKE '...'
En php cela donnerais quelque chose du genre :
<?php
// transformation en tableau
$tab_serveur1 = explode(';',$serveur1);
// protection des données pour mysql
$tab_serveur1_protected = array_map("mysql_real_escape_string",$tab_serveur1);
$req = mysql_query("SELECT * FROM `serveurs` WHERE `nom` in ('".implode("' OR LIKE '",$tab_serveur1_protected)."')")or die(mysql_error());
Cordialement,

recheche dans requete sql

par ben4523 » 28 sept. 2013, 12:02

Bonjour,
voila j'ai une chaine de caractère (exemple : serveur1;serveur2;serveur10;serveur20) se sont des noms de serveur qui sont séparer par des points virgules.
Dans une table j'ai tout ses nom avec le host du serveur .... je voudrait qui me trouve tout les host de ses serveur qui sont dans la chaine de caractère.
J'ai déjas ce bout de code mais il fonctionne pas
la chaine est dans $serveur1
$req = mysql_query("SELECT * FROM `serveurs` WHERE `nom` LIKE '%$serveur1%'")or die(mysql_error());
 
 
 while($rows = mysql_fetch_array($req))
	{
	echo $rows['host'];?><br><br><?php
	}
Merci