Recherche dans base mysql

Résolu
karlito911 Messages postés 67 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 20 octobre 2010 - 8 sept. 2010 à 15:56
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 - 15 oct. 2010 à 23:50
bonjour a tous,

voila j'aurais besoin de votre aide car je me suis lancé dans un petit projet je suis en train de developper un site web local pour mon entreprise et niveau php mysql je suis pas au top j'ai des bases mais c'est tous.Le but étant que le personnel de la société est acces en temps réel a l'état du stock de la societé tout est référencé dans une base de donnée mysql.
j'utilise easyphp pour pouvoir mettre tous ca en place.
voici mon code:



<html>


Votre recherche :
<form method="post" action="stock.php">


</form>

<?php

$serveur = mysql_connect("127.0.0.1","****","****");

if ( ! $connexion )

die ("connexion impossible");

mysql_select_db('basededonne',$serveur);

$button = $_POST["submit"];
$recherche = $_POST["search"];

$sql = 'SELECT * FROM `stock` WHERE text LIKE "%$recherche%"' ;

$resultat = mysql_query($sql);


while ($data = mysql_fetch_array($resultat))
{
echo "
<center>
";
echo $data['Item'];
echo ",
";
echo $data['Description'];
echo ",

----

";
echo $data['Quantity'];
echo ",
";
echo $data['Price'];
echo ",

----

";
echo $data['Currency'];
echo "

</center>
";
};

mysql_close ();

?>


</html>

en fait j'ai mon formulaire sur la page stock.php et lorsque que je rentre une ref dans le champs texte je voudrais
afficher le résultat en dessous.
mais je comprend pas pourquoi ca ne marche pas pourtant j'ai regardé sur plein de site et mon code a l'air cohérent.
comment etre sur que lorsque l'on appui sur le bouton ca exécute la requete ?

Merci d'avance pour votre aide
A voir également:

119 réponses

deithso Messages postés 20 Date d'inscription jeudi 14 janvier 2010 Statut Membre Dernière intervention 18 octobre 2010
13 oct. 2010 à 06:33
Bonjour,
il suffit juste de compter le nombre de résultats retournées par ta requête, et tu fais le teste,
si = 0 alors tu affiche un message si >0 tu affiches les résultats

tu changes le code de ta function la celle la,

function search_for($recherche, $recherche2, $recherche3) {

$sql = 'SELECT * FROM `facture` WHERE `Customer Name` LIKE \'%'. $recherche .'%\' OR Item LIKE \'%'. $recherche2 .'%\' OR `Customer Number` LIKE \'%'. $recherche3 .'%\'' ;
$resultat = mysql_query($sql) or die(' Req :' .$sql .''. mysql_error());
$nbr_resultat=mysql_num_rows($resultat);
if($nbr_resultat==0)
{
?>



Aucun résultat trouvé pour "<?php echo $recherche." ".$recherche2." ".$recherche3; ?>"



<?php
}
else
{
echo "
";
echo "\";
echo ('----
 customer Name  |</td>Invoice Number |, Item |, Quantity |, Item Description |, , Sales Order Number |, Fonctional Amount |, Currency |');

while ($data  = mysql_fetch_array($resultat))
{
echo"----, \";

echo $data['Customer Name'].'</td>'.', ';
echo $data['Invoice Number'].', '.', ';
echo $data['Item'].', '.', ';
echo $data['Quantity Invoiced'].', '.', ';
echo $data['Item Description'].', '.', '.', ';
echo $data['Sales Order Number'].', '.', ';
echo $data['Functional Amount'].', '.', ';
echo $data['Currency'];

echo ", \";
}
{
  echo "

";
 }
}
}
?>





j'espère que ça va marché pour toi,
0
karlito911 Messages postés 67 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 20 octobre 2010
13 oct. 2010 à 11:13
en fait lorsque que je mets dans ma requete des AND sur ma page quand je test si je rempli les 3 champs il m'affiche le résultat par contre si je met que un critere il marche pas.
Mais lorsque que je met des OR a la place des AND ce qui est plus logique pour mon attente au niveau de ma recherche ba si je rempli 1 champs ou plusieurs il m'affiche tout simplement toute la table SQL c'est bizard
Auriez vous une idée

deithso j'ai essayé ta solution mais ca m'affiche toute la table sql
0
deithso Messages postés 20 Date d'inscription jeudi 14 janvier 2010 Statut Membre Dernière intervention 18 octobre 2010
13 oct. 2010 à 13:40
Bonjour,

voila, j'ai essaies ce code pour voir ce que ca donne, j'ai ajouté un teste sur les paramètres entrées,

function search_for($recherche, $recherche2, $recherche3) 
{
$or= "";
if($recherche!="")
{
$recherche=" `Customer Name` LIKE \'%". $recherche ."%\'";
}
else
{
$recherche="";
}
if($recherche2!="")
{
if($recherche!="")
{
$or=" OR ";
}
$recherche2=$or." `Item` LIKE \'%". $recherche2 ."%\'";
}
else
{
$recherche2="";
}
if($recherche3!="")
{
if($recherche2!="")
{
$or=" OR ";
}
$recherche3=$or." `Customer Number` LIKE \'%". $recherche3 ."%\'";
}
else
{
$recherche3="";
}
$sql = "SELECT * FROM facture WHERE ". $recherche . $recherche2 . $recherche3;
$resultat = mysql_query($sql) or die(' Req :' .$sql .''. mysql_error());
$nbr_resultat=mysql_num_rows($resultat);
if($nbr_resultat==0)
{
?>



Aucun résultat trouvé pour "<?php echo $recherche." ".$recherche2." ".$recherche3; ?>"



<?php
}
else
{
echo "
";
echo "\";
echo ('----
 customer Name  |</td>Invoice Number |, Item |, Quantity |, Item Description |, , Sales Order Number |, Fonctional Amount |, Currency |');

while ($data  = mysql_fetch_array($resultat))
{
echo"----, \";

echo $data['Customer Name'].'</td>'.', ';
echo $data['Invoice Number'].', '.', ';
echo $data['Item'].', '.', ';
echo $data['Quantity Invoiced'].', '.', ';
echo $data['Item Description'].', '.', '.', ';
echo $data['Sales Order Number'].', '.', ';
echo $data['Functional Amount'].', '.', ';
echo $data['Currency'];

echo ", \";
}
{
  echo "

";
 }
}
}
?>
0
deithso Messages postés 20 Date d'inscription jeudi 14 janvier 2010 Statut Membre Dernière intervention 18 octobre 2010
13 oct. 2010 à 13:45
voila essaies ce code là, j'ai changé juste des variables, pour ne pas avoir un message bizzar.

function search_for($recherche, $recherche2, $recherche3) 
{
$or= "";
if($recherche!="")
{
$crtitere1=" `Customer Name` LIKE \'%". $recherche ."%\'";
}
else
{
$crtitere1="";
}
if($recherche2!="")
{
if($recherche!="")
{
$or=" OR ";
}
$crtitere2=$or." `Item` LIKE \'%". $recherche2 ."%\'";
}
else
{
$crtitere2="";
}
if($recherche3!="")
{
if($recherche2!="")
{
$or=" OR ";
}
$crtitere3=$or." `Customer Number` LIKE \'%". $recherche3 ."%\'";
}
else
{
$crtitere3="";
}
$sql = "SELECT * FROM facture WHERE ".$crtitere1.$crtitere2.$crtitere3;
$resultat = mysql_query($sql) or die(' Req :' .$sql .''. mysql_error());
$nbr_resultat=mysql_num_rows($resultat);
if($nbr_resultat==0)
{
?>



Aucun résultat trouvé pour "<?php echo $recherche." ".$recherche2." ".$recherche3; ?>"



<?php
}
else
{
echo "
";
echo "\";
echo ('----
 customer Name  |</td>Invoice Number |, Item |, Quantity |, Item Description |, , Sales Order Number |, Fonctional Amount |, Currency |');

while ($data  = mysql_fetch_array($resultat))
{
echo"----, \";

echo $data['Customer Name'].'</td>'.', ';
echo $data['Invoice Number'].', '.', ';
echo $data['Item'].', '.', ';
echo $data['Quantity Invoiced'].', '.', ';
echo $data['Item Description'].', '.', '.', ';
echo $data['Sales Order Number'].', '.', ';
echo $data['Functional Amount'].', '.', ';
echo $data['Currency'];

echo ", \";
}
{
  echo "

";
 }
}
}
?>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
karlito911 Messages postés 67 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 20 octobre 2010
13 oct. 2010 à 15:20
Merci j'ai testé ton code mais voici ce qui me retourne comme erreur:
Req :SELECT * FROM facture WHERE `Item` LIKE \'%104%\'Erreur de syntaxe près de '\'%104%\'' à la ligne 1

c'est pareille pour les autres formulaires
0
deithso Messages postés 20 Date d'inscription jeudi 14 janvier 2010 Statut Membre Dernière intervention 18 octobre 2010
13 oct. 2010 à 15:51
hmm mwai j'ai fais une petite bêtise j'ai pas fais attention,

ben tu enlèves tous les \ dans le code des 3 variables $crtitereX 1,2 et 3

ce qui donne :

$crtitere1=" `Customer Name` LIKE '%". $recherche ."%'";
$crtitere2=$or." `Item` LIKE '%". $recherche2 ."%'";
$crtitere3=$or." `Customer Number` LIKE '%". $recherche3 ."%'";
0
karlito911 Messages postés 67 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 20 octobre 2010
13 oct. 2010 à 16:07
ah oui effectivement
Encore Merci a toi
0
deithso Messages postés 20 Date d'inscription jeudi 14 janvier 2010 Statut Membre Dernière intervention 18 octobre 2010
13 oct. 2010 à 16:24
Je t'en prie,
0
karlito911 Messages postés 67 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 20 octobre 2010
13 oct. 2010 à 16:44
euh une autre petite question

car en fait si je rempli $recherche1 et $recherch3 et pas le 2 ca me met une erreur en regardant le code c'est logique mais si j'ai envie de faire une recherche comme par exemple: recherche1 avec recherche3 c'est a dire que je 'client1' avec '121234' comme numéro de commande. Donc il faut que je redéfinisse les else et if au debut de la fonction
0
deithso Messages postés 20 Date d'inscription jeudi 14 janvier 2010 Statut Membre Dernière intervention 18 octobre 2010
13 oct. 2010 à 22:19
Bonjour, voila je me rends compte que pour la variable critere3, j'ai juste fait le teste pour la variable critere2

essaies ce code la,

if($recherche3!="")
{
if($recherche2!="" || $recherche!="")
{
$or=" OR ";
}
$crtitere3=$or." `Customer Number` LIKE \'%". $recherche3 ."%\'";
}
0
karlito911 Messages postés 67 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 20 octobre 2010
14 oct. 2010 à 14:20
bonjour,
Une petite question j'aurais aimer avoir juste le résultat qui contient juste les 2 champs rempli.
Car la en fait le code affiche le resultat du premier champs puis selui du 2eme. parce que en fait dans ma base j'ai vendu les memes produits a diférent client donc il faudrait que je mettent un and dans la requete
0
karlito911 Messages postés 67 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 20 octobre 2010
14 oct. 2010 à 14:49
c'est bon problème résolu
0
deithso Messages postés 20 Date d'inscription jeudi 14 janvier 2010 Statut Membre Dernière intervention 18 octobre 2010
14 oct. 2010 à 14:55
Bonjour,
content pour toi
sinon tu pourras poster ton code ici, pour aider les autres qui auront même problème que toi
0
karlito911 Messages postés 67 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 20 octobre 2010
14 oct. 2010 à 14:58
oui pas de soucis

voici le code:



<form name= "form1" method="post" action="">
client

Produit :

Numéro de commande :

 


</form>

<?php

$serveur = mysql_connect("127.0.0.1","root","");

if(!mysql_select_db('societe', $serveur));

if(isset($_POST['texte']) OR isset($_POST['texte2']) OR isset($_POST['texte3'])) {
   $temp = $_POST['texte'];
      $temp2 = $_POST['texte2'];
         $temp3 = $_POST['texte3'];
}
else {
 $temp = '';
    $temp2 = '';
        $temp3 = '';
}
  if((!empty($temp) && $temp != '') OR (!empty($temp2) && $temp2 != '') OR (!empty($temp3) && $temp3 != ''))
  {
    $recherche = $temp;
    $recherche2 = $temp2;
    $recherche3 = $temp3;
    $recherche = strip_tags($recherche);
    $recherche2 = strip_tags($recherche2);
    $recherche3 = strip_tags($recherche3);
    search_for($recherche, $recherche2, $recherche3);
  }
  else {
     echo('merci de rentrer un critère');
  }

function search_for($recherche, $recherche2, $recherche3)
{
$or="";
if($recherche!="")
{
$crtitere1=" `Customer Name` LIKE '%". $recherche ."%'";
}
else
{
$crtitere1="";
}
if($recherche2!="")
{
if($recherche!="")
{
$or=" AND ";
}
$crtitere2=$or." `Item` LIKE '%". $recherche2 ."%'";
}
else
{
$crtitere2="";
}
if($recherche3!="")
{
if($recherche2!="" || $recherche!="")
{
$or=" AND ";
}
$crtitere3=$or." `Customer Number` LIKE '%". $recherche3 ."%'";
}
else
{
$crtitere3="";
}
$sql = 'SELECT * FROM `facture` WHERE' .$crtitere1.$crtitere2.$crtitere3;
$resultat = mysql_query($sql) or die(' Req :' .$sql .''. mysql_error());
$nbr_resultat=mysql_num_rows($resultat);
if($nbr_resultat==0)
{
?>



Aucun résultat trouvé pour "<?php echo $recherche." ".$recherche2." ".$recherche3; ?>"



<?php
}
else
{
echo "
";
echo "\";
echo ('----
 customer Name  |</td>Invoice Number |, Item |, Quantity |, Item Description |, , Sales Order Number |, Fonctional Amount |, Currency |');

while ($data  = mysql_fetch_array($resultat))
{
echo"----, \";

echo $data['Customer Name'].'</td>'.', ';
echo $data['Invoice Number'].', '.', ';
echo $data['Item'].', '.', ';
echo $data['Quantity Invoiced'].', '.', ';
echo $data['Item Description'].', '.', '.', ';
echo $data['Sales Order Number'].', '.', ';
echo $data['Functional Amount'].', '.', ';
echo $data['Currency'];

echo ", \";
}
{
  echo "

";
 }
}
}
?>
0
karlito911 Messages postés 67 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 20 octobre 2010
15 oct. 2010 à 11:46
bonjour,
Voila je revient vers toi pour tout autre chose étant donnée que tu a l'air calé en php/mysql voila mon soucis c'est que je voudrais automatisé l'import de mes tables sql car je travail avec des fichiers csv et excel. connait tu un moyen pas trop compliqué pour faire ca j'ai apercu que l'on pouvait faire un script
0
deithso Messages postés 20 Date d'inscription jeudi 14 janvier 2010 Statut Membre Dernière intervention 18 octobre 2010
15 oct. 2010 à 14:37
Bonjour,
est ce que tu veux importer? ou exporter tes fichiers csv & excel ?
0
karlito911 Messages postés 67 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 20 octobre 2010
15 oct. 2010 à 16:19
importer car en fait ce sont des extraits oracle convertis en csv et d'autres en excel et je voudrais les importer automatiquement dans lorsque j'appui sur sur un bouton de ma page web "car j'ai creer un bouton mise a jour"
0
karlito911 Messages postés 67 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 20 octobre 2010
15 oct. 2010 à 16:27
Autre chose est-il possible de fusionner deux tables en une en sql car en fait j'ai deux tables qui ont la meme colonne numéro de commande et qui contienent les mêmes velurs
Car en fait pour une autre page de mon site on m'a donné 2 extract et il faut que je pioche dans les deux pour pouvoir affiché ce que je veux
pour le moment j'ai fait un tableau excel croisée pour faire mes test mais je voudrait évité de le faire tous le temps
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
15 oct. 2010 à 23:50
Salut,

Vous voulez battre le record du nombre de messages par thread ?
118 c'est pas mal du tout.
Quant à l'intérêt j'ai un doute. Tu (Karlito911) poses tout un tas de questions qui logiquement, et en accord avec le règlement, devraient faire l'objet de thread séparés.

En procédant ainsi :
- toutes les réponses qui t'ont été faites ne bénéficieront à personne d'autre (impossible à trouver via une recherche, et pour bien d'autres raisons) ce qui n'est pas dans l'esprit d'un forum
- tu n'as au final qu'un seul avis : personne ne se retapera les 118 messages pour tenter de t'aider.
D'ailleurs, pour ne l'avoir que survolé le script que tu postes ne semble vraiment pas à recommander (trucs illogiques, erreurs, pb graves de sécurité, ...)


Cordialement,


Kohntark -
0
Rejoignez-nous