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 - 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 

20/119 réponses

Messages postés
165
Date d'inscription
samedi 8 mai 2010
Statut
Membre
Dernière intervention
3 janvier 2015
0
Merci
Il doit y avoir une faute dans la première requête tu devrais l'enlever et ne faire qu'une seule requête, cette requête ne doit pas etre correcte :


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

garde celle la :


$sql = "SELECT * FROM `stock` WHERE Item LIKE '%". $recherche ."%'" ;
Commenter la réponse de bencoandco
Messages postés
67
Date d'inscription
lundi 17 mai 2010
Statut
Membre
Dernière intervention
20 octobre 2010
0
Merci
alors apres avoir chercher totue la journée et fais pleins de test ca me mais toujours la même notice

[b]Notice: Undefined variable: recherche in C:\Program Files\EasyPHP-5.3.3\www\stock.php on line 66
Req :SELECT * FROM 'stock' WHERE Item LIKE '%%' Erreur de syntaxe près de ''stock' WHERE Item LIKE '%%'' à la ligne 1/b

j'ai créer un autre utilisateur avec mon ip en tant que serveur comme tu ma dit Benco mais ca marche po erreur de connection.
j'ai gardé la deuxieme requete sql et toujours pareil
Commenter la réponse de karlito911
Messages postés
165
Date d'inscription
samedi 8 mai 2010
Statut
Membre
Dernière intervention
3 janvier 2015
0
Merci
Essaye de regarder ton code un peu plus avant de poster quand même


1/ retire cette ligne elle n'est pas correcte.

2/ si tu regarde bien il y a une accolade en trop dans ton code

3/ l'envoi de la requete doit etre dans le if(isset($_POST....


Regarde ton code plus attentivement s'il te plaît
Commenter la réponse de bencoandco
Messages postés
165
Date d'inscription
samedi 8 mai 2010
Statut
Membre
Dernière intervention
3 janvier 2015
0
Merci
oui euh alors... quand je dis retire cette ligne je veux parler de celle ci :



if ( ! $serveur )

die ("connexion impossible");
Commenter la réponse de bencoandco
Messages postés
240
Date d'inscription
jeudi 1 mai 2008
Statut
Membre
Dernière intervention
19 juillet 2012
2
0
Merci
Bonjour,

Bon déjà bonne chose; On à une erreur sur la requête sql ...

en regardant de plus prêt :


SELECT * FROM 'stock' WHERE Item LIKE '%%' Erreur de syntaxe près de ''stock' WHERE Item LIKE '%%'' à la ligne 1

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


Alors, certain ne vont pas être d'accord mais temps pis :

pour les requête sql construit les plutôt avec ' ' au lieu de " "

ta requéte deviens alors

$sql = 'SELECT * FROM stock WHERE Item LIKE \'%'. $recherche .'%\' ' ; 


Maintenant pourquoi ce choix : Personnellement parce que je trouve qu'il est plus facile de faire une erreur qui passe inaperçus avec les " ".
en utilisant ' ' tu est obligé de backslasher ( \ ) les ' et de sortir les variables ( '.$taVariable.' ), donc d'être plus vigilant.

Avant les test ajoute une initialisation à ta variable $recherche :

$recherche = 'LG';
comme cela tu est sur qu'elle aura une valeur.
Commenter la réponse de Lyle56
Messages postés
67
Date d'inscription
lundi 17 mai 2010
Statut
Membre
Dernière intervention
20 octobre 2010
0
Merci
Merci je vais essayé toutes vos idées

Lyle mon initialisation je la met avant ma requete dans le IF ???
Commenter la réponse de karlito911
Messages postés
240
Date d'inscription
jeudi 1 mai 2008
Statut
Membre
Dernière intervention
19 juillet 2012
2
0
Merci
Oui avant cette ligne :

if(!empty($temp) && $temp != '' ) {
Commenter la réponse de Lyle56
Messages postés
67
Date d'inscription
lundi 17 mai 2010
Statut
Membre
Dernière intervention
20 octobre 2010
0
Merci
alors apres essai si je met l'initialisation en place avec une référence d'un produit il me sort bien les résultat

maintenant comment faire pour qu'il le fasse avec le mot contenu dans le formulaire
Commenter la réponse de karlito911
Messages postés
240
Date d'inscription
jeudi 1 mai 2008
Statut
Membre
Dernière intervention
19 juillet 2012
2
0
Merci
Tu peut me mettre ton code actuel, que je vois ou ça en est;
( je fait plusieurs choses en même temps et j'ai du mal à me représenté le code )
Commenter la réponse de Lyle56
Messages postés
165
Date d'inscription
samedi 8 mai 2010
Statut
Membre
Dernière intervention
3 janvier 2015
0
Merci
Alors je vais être enquiquinant mais est ce que tu peux nous montrer où en est ton code ?



Qd tu rentre quelque chose dans le formulaire ça te donne quoi ?
Commenter la réponse de bencoandco
Messages postés
67
Date d'inscription
lundi 17 mai 2010
Statut
Membre
Dernière intervention
20 octobre 2010
0
Merci
alors lorsque que je rentre un mot dans le champs il se passe rien. D'es que je lance ma page stock il m'affiche le resultat directement.


Voila le code
Votre recherche :
<form method="post" action="stock.php" name="recherche">


</form>

<?php

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

mysql_select_db('societe', $serveur);

 
$recherche = 'LG';
if(!empty($temp) && $temp != '' ) {
  $recherche = $temp;
  $recherche = strip_tags($recherche);
  var_dump($recherche);
  } else {
    echo('');
  var_dump($_POST['texte']);
  var_dump($recherche);
}

// Zone de test ;
$sql = 'SELECT * FROM stock WHERE Item LIKE \'%'. $recherche .'%\' ' ;
$resultat = mysql_query($sql) or die(' Req :' .$sql .''. mysql_error());

// On affiche tes variables
var_dump($recherche); echo "
";
var_dump($sql); echo "
";
var_dump($resultat); echo "
";

echo "
<center>";
echo "\";

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

echo $data['Item'];
echo $data['Description'];
echo $data['Quantity'];
echo $data['Price'];
echo $data['Currency'];

echo ", \";
}
{
echo "
</center>
";
}
?>
Commenter la réponse de karlito911
Messages postés
240
Date d'inscription
jeudi 1 mai 2008
Statut
Membre
Dernière intervention
19 juillet 2012
2
0
Merci
il te manque une ligne :

$recherche = 'LG';
$temp = $_POST['search'];
if(!empty($temp) && $temp != '' ) {
  $recherche = $temp;
Commenter la réponse de Lyle56
Messages postés
67
Date d'inscription
lundi 17 mai 2010
Statut
Membre
Dernière intervention
20 octobre 2010
0
Merci
oui désolé j'avait fait des test et j'avais pas fait gaff donc je l'es remise

Donc la ca a l'air de marché
Commenter la réponse de karlito911
Messages postés
165
Date d'inscription
samedi 8 mai 2010
Statut
Membre
Dernière intervention
3 janvier 2015
0
Merci
Bon tu es sur la voie la ça marche mieux seul problème à aucun momment tu n'itialise $temp & $recherche avec ce que tu as mis dans ton input soit $_POST['texte'] normal que ça ne marche pas, alors regarde ton code avant de dire bêtement que ça ne marche pas...
Commenter la réponse de bencoandco
Messages postés
165
Date d'inscription
samedi 8 mai 2010
Statut
Membre
Dernière intervention
3 janvier 2015
0
Merci

[^^youpi][^^youpi][^^youpi][^^youpi][^^youpi]
Commenter la réponse de bencoandco
Messages postés
240
Date d'inscription
jeudi 1 mai 2008
Statut
Membre
Dernière intervention
19 juillet 2012
2
0
Merci
je te remet le code entier "nettoyé" avec 2/3 contrôle en plus

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


</form>

<?php

$serveur = mysql_connect("127.0.0.1","root","****");
if(!$serveur) {
   echo('Connexion refusée.');  
} else if(!mysql_select_db('societe', $serveur)) {
   echo('Base non trouvée.');  
} else {
   $recherche = 'LG'; a utiliser juste pour tes tests.
   $temp = $_POST['search']
  if(!empty($temp) && $temp != '' ) 
  {
    $recherche = $temp;
    $recherche = strip_tags($recherche);
    search_for($recherche);
  } else {
     echo('merci de saisir un article à rechercher');
  }
}

function search_for($recherche) {

$sql = 'SELECT * FROM stock WHERE Item LIKE \'%'. $recherche .'%\' ' ;
$resultat = mysql_query($sql) or die(' Req :' .$sql .''. mysql_error());


echo "
<center>";
echo "\";

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

echo $data['Item'];
echo $data['Description'];
echo $data['Quantity'];
echo $data['Price'];
echo $data['Currency'];

echo ", \";
}
{
  echo "
</center>
";
 }
}
?>


Bon ceci n'est pas optimal, mais pour ce que tu veut faire actuellement c'est suffisant.
Commenter la réponse de Lyle56
Messages postés
67
Date d'inscription
lundi 17 mai 2010
Statut
Membre
Dernière intervention
20 octobre 2010
0
Merci
maintenant faut que je fasse une petite mise en forme des résultat car j'aime pas trop comment c'est présenté
mais la que je regarde car il maffiche toute la table et apres par contre des que je lance une recherche il m'affiche que les résultat donc deja un gros bug de réglé
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
di donc ca poste vite

je vais regarder tous ca et je vous tiens au courant des évolution
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
bon voila lorsque je lance ma page web il y a une petite notice j'aimerais bien l'enlever comment pourais je faire ? la mettre a 0 au debut

Notice: Undefined index: texte in C:\Program Files\EasyPHP-5.3.3\www\stock.php on line 43

c'est cette ligne la $temp = $_POST['search']
Commenter la réponse de karlito911
Messages postés
240
Date d'inscription
jeudi 1 mai 2008
Statut
Membre
Dernière intervention
19 juillet 2012
2
0
Merci
Arf mince il manque le ; en fin de ligne.
Commenter la réponse de Lyle56