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

119 réponses

bencoandco Messages postés 165 Date d'inscription samedi 8 mai 2010 Statut Membre Dernière intervention 3 janvier 2015
15 sept. 2010 à 14:28
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 ."%'" ;
0
karlito911 Messages postés 67 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 20 octobre 2010
15 sept. 2010 à 17:00
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
0
bencoandco Messages postés 165 Date d'inscription samedi 8 mai 2010 Statut Membre Dernière intervention 3 janvier 2015
15 sept. 2010 à 18:03
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
0
bencoandco Messages postés 165 Date d'inscription samedi 8 mai 2010 Statut Membre Dernière intervention 3 janvier 2015
15 sept. 2010 à 18:07
oui euh alors... quand je dis retire cette ligne je veux parler de celle ci :



if ( ! $serveur )

die ("connexion impossible");
0

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

Posez votre question
Lyle56 Messages postés 240 Date d'inscription jeudi 1 mai 2008 Statut Membre Dernière intervention 19 juillet 2012 2
16 sept. 2010 à 09:22
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.
0
karlito911 Messages postés 67 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 20 octobre 2010
16 sept. 2010 à 14:13
Merci je vais essayé toutes vos idées

Lyle mon initialisation je la met avant ma requete dans le IF ???
0
Lyle56 Messages postés 240 Date d'inscription jeudi 1 mai 2008 Statut Membre Dernière intervention 19 juillet 2012 2
16 sept. 2010 à 14:32
Oui avant cette ligne :

if(!empty($temp) && $temp != '' ) {
0
karlito911 Messages postés 67 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 20 octobre 2010
16 sept. 2010 à 14:52
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
0
Lyle56 Messages postés 240 Date d'inscription jeudi 1 mai 2008 Statut Membre Dernière intervention 19 juillet 2012 2
16 sept. 2010 à 15:12
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 )
0
bencoandco Messages postés 165 Date d'inscription samedi 8 mai 2010 Statut Membre Dernière intervention 3 janvier 2015
16 sept. 2010 à 15:14
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 ?
0
karlito911 Messages postés 67 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 20 octobre 2010
16 sept. 2010 à 15:35
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>
";
}
?>
0
Lyle56 Messages postés 240 Date d'inscription jeudi 1 mai 2008 Statut Membre Dernière intervention 19 juillet 2012 2
16 sept. 2010 à 15:39
il te manque une ligne :

$recherche = 'LG';
$temp = $_POST['search'];
if(!empty($temp) && $temp != '' ) {
  $recherche = $temp;
0
karlito911 Messages postés 67 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 20 octobre 2010
16 sept. 2010 à 15:40
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é
0
bencoandco Messages postés 165 Date d'inscription samedi 8 mai 2010 Statut Membre Dernière intervention 3 janvier 2015
16 sept. 2010 à 15:49
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...
0
bencoandco Messages postés 165 Date d'inscription samedi 8 mai 2010 Statut Membre Dernière intervention 3 janvier 2015
16 sept. 2010 à 15:49

[^^youpi][^^youpi][^^youpi][^^youpi][^^youpi]
0
Lyle56 Messages postés 240 Date d'inscription jeudi 1 mai 2008 Statut Membre Dernière intervention 19 juillet 2012 2
16 sept. 2010 à 15:51
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.
0
karlito911 Messages postés 67 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 20 octobre 2010
16 sept. 2010 à 15:58
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é
0
karlito911 Messages postés 67 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 20 octobre 2010
16 sept. 2010 à 16:00
di donc ca poste vite

je vais regarder tous ca et je vous tiens au courant des évolution
0
karlito911 Messages postés 67 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 20 octobre 2010
17 sept. 2010 à 10:47
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']
0
Lyle56 Messages postés 240 Date d'inscription jeudi 1 mai 2008 Statut Membre Dernière intervention 19 juillet 2012 2
17 sept. 2010 à 11:12
Arf mince il manque le ; en fin de ligne.
0
Rejoignez-nous