Recherche dans base mysql [Résolu]

Messages postés
67
Date d'inscription
lundi 17 mai 2010
Statut
Membre
Dernière intervention
20 octobre 2010
- - Dernière réponse : kohntark
Messages postés
3708
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
Afficher la suite 

19/119 réponses

Messages postés
26
Date d'inscription
jeudi 14 janvier 2010
Statut
Membre
Dernière intervention
18 octobre 2010
0
Merci
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,
Commenter la réponse de deithso
Messages postés
67
Date d'inscription
lundi 17 mai 2010
Statut
Membre
Dernière intervention
20 octobre 2010
0
Merci
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
Commenter la réponse de karlito911
Messages postés
26
Date d'inscription
jeudi 14 janvier 2010
Statut
Membre
Dernière intervention
18 octobre 2010
0
Merci
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 "

";
 }
}
}
?>
Commenter la réponse de deithso
Messages postés
26
Date d'inscription
jeudi 14 janvier 2010
Statut
Membre
Dernière intervention
18 octobre 2010
0
Merci
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 "

";
 }
}
}
?>
Commenter la réponse de deithso
Messages postés
67
Date d'inscription
lundi 17 mai 2010
Statut
Membre
Dernière intervention
20 octobre 2010
0
Merci
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
Commenter la réponse de karlito911
Messages postés
26
Date d'inscription
jeudi 14 janvier 2010
Statut
Membre
Dernière intervention
18 octobre 2010
0
Merci
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 ."%'";
Commenter la réponse de deithso
Messages postés
67
Date d'inscription
lundi 17 mai 2010
Statut
Membre
Dernière intervention
20 octobre 2010
0
Merci
ah oui effectivement
Encore Merci a toi
Commenter la réponse de karlito911
Messages postés
26
Date d'inscription
jeudi 14 janvier 2010
Statut
Membre
Dernière intervention
18 octobre 2010
0
Merci
Je t'en prie,
Commenter la réponse de deithso
Messages postés
67
Date d'inscription
lundi 17 mai 2010
Statut
Membre
Dernière intervention
20 octobre 2010
0
Merci
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
Commenter la réponse de karlito911
Messages postés
26
Date d'inscription
jeudi 14 janvier 2010
Statut
Membre
Dernière intervention
18 octobre 2010
0
Merci
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 ."%\'";
}
Commenter la réponse de deithso
Messages postés
67
Date d'inscription
lundi 17 mai 2010
Statut
Membre
Dernière intervention
20 octobre 2010
0
Merci
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
Commenter la réponse de karlito911
Messages postés
67
Date d'inscription
lundi 17 mai 2010
Statut
Membre
Dernière intervention
20 octobre 2010
0
Merci
c'est bon problème résolu
Commenter la réponse de karlito911
Messages postés
26
Date d'inscription
jeudi 14 janvier 2010
Statut
Membre
Dernière intervention
18 octobre 2010
0
Merci
Bonjour,
content pour toi
sinon tu pourras poster ton code ici, pour aider les autres qui auront même problème que toi
Commenter la réponse de deithso
Messages postés
67
Date d'inscription
lundi 17 mai 2010
Statut
Membre
Dernière intervention
20 octobre 2010
0
Merci
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 "

";
 }
}
}
?>
Commenter la réponse de karlito911
Messages postés
67
Date d'inscription
lundi 17 mai 2010
Statut
Membre
Dernière intervention
20 octobre 2010
0
Merci
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
Commenter la réponse de karlito911
Messages postés
26
Date d'inscription
jeudi 14 janvier 2010
Statut
Membre
Dernière intervention
18 octobre 2010
0
Merci
Bonjour,
est ce que tu veux importer? ou exporter tes fichiers csv & excel ?
Commenter la réponse de deithso
Messages postés
67
Date d'inscription
lundi 17 mai 2010
Statut
Membre
Dernière intervention
20 octobre 2010
0
Merci
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"
Commenter la réponse de karlito911
Messages postés
67
Date d'inscription
lundi 17 mai 2010
Statut
Membre
Dernière intervention
20 octobre 2010
0
Merci
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
Commenter la réponse de karlito911
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
21
0
Merci
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 -
Commenter la réponse de kohntark