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 

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
Peux tu renvoyer l'ensemble de ton code
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
en effet c'est ça pu de fatal error
par contre ca marche toujous pas je crois que je vais perdre mes cheveux la
le est de: echo $POST_['search'] marche nikel il m'affiche ce que j'écrit par contre rien après pas de tableau avec le résultat de la table sql
je vais testé des truqs pour voir d'ou ca peut provenir
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
faut-il un fichier de configuration avec les différentes déclarations des variables et autres parametres pour le site web car dans plusieurs exemples j'ai vu des fichier de conf avec en trautre: nom du serveur, nom, mot de passe, ...
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 te passer du fichier de config, mais c'est vrai que ça peut rendre bien des services ( plusieurs table / bases à géré - site multilangue etc etc )

Pour ton cas : remplace
$resultat = mysql_query($sql);

par
$resultat = mysql_query($sql) or die(' Req :' .$sql .''. sql_error());

Et donne nous le résultat :)
si il y en as un ...
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
ok apres le code que tu ma donnée il faut que je mette: echo $resultat;
car dans ce cas la y m'affiche Resource id #4
sinon il m'affiche rien
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 en enlevant action="stock.php" et remplace le par action=" ",...
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
lorsque je fais ce que tu me dis et que je clique sur mon bouton il me renvoi sur ma page d'acceuil
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
Ou essaye de changer ta requête au lieu de

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


essaye ça :
$sql = "SELECT * FROM `stock` WHERE 'Item' LIKE '%$recherche%'" ;



ps : peux tu nous montrer ton code ou alors verifier qu'il n'y a pas d'erreur de syntaxe balotte ?
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
Bon alors, voila ou tu devrais en être :

<?php

$serveur = mysql_connect("127.0.0.1","root","****");
mysql_select_db('société', $serveur);

if ( ! $serveur )
die ("connexion impossible");

if (isset($_POST['bouton']) && isset($_POST['search']))
{
$temp = trim($_POST['search']);
if(!empty($temp) && $temp != '' ) { 
  $recherche = $_POST['search'];
  $recherche = strips_tag($recherche);
} else {
  exit();
}

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

...


On va apporté juste 2 ou 3 modifs pour voir ou ça merdoi.

<?php

// Connection à la base de données.
$serveur = mysql_connect("127.0.0.1","root","****") or die('Connection Impossible');
mysql_select_db('société', $serveur) or die ('Base innaccessible');



if (isset($_POST['bouton']) && isset($_POST['search']))
{
$temp = trim($_POST['search']);
if(!empty($temp) && $temp != '' ) { 
  $recherche = $temp; 
// On vire le $_POST['search'] : on l'as mis en temps juste avant
  $recherche = strips_tag($recherche); 
} else {
  exit();
}

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

var_dump($sql); echo "
";
var_dump($resultat); echo "
";

// Fin zone de test


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

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

...


Bon ça fait pas mal de changement.
Reste plus qu'as voir les résultats
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
voila le code:

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


</form>

<?php

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

mysql_select_db('societe', $serveur);

if ( ! $serveur )

die ("connexion impossible");

if (isset($_POST['bouton']) && isset($_POST['search']))
{
$temp = trim($_POST['search']);
if(!empty($temp) && $temp != '' ) {
  $cliquer = $_POST['bouton'];
  $recherche = $_POST['search'];
  $recherche = strip_tags($recherche);
} else {
  exit();
}

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

$resultat = mysql_query($sql) or die(' Req :' .$sql .''. sql_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>
";
}

?>



</html>


j'ai essayer différentes solutions pour $recherche et toujours pareille
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
verdict des test il m'affiche rien pas de probleme en vu
j'ai même fait expres de viré par exemple le mot de passe et apres y me dit bien qu'il y a un probleme de connection.
La je vois vraiment pas d'ou ca peut venir
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
JE viens de tester ton script et j'avais un problème de nom de bdd avec select db et ça ne m'affichait rien (pas d'erreur) alors verifit que le nom de bdd est bon est remplace ça :


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

mysql_select_db('societe', $serveur);

if ( ! $serveur )

die ("connexion impossible");


par :


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

if(!$serveur)
{
  echo " problème de connexion !";
}

if(!mysql_select_db('societe', $serveur))
{
   echo "mauvaise bdd";
 }



et dis nous en des nouvelles
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
petite question tu travailles bien en local ?
Commenter la réponse de bencoandco
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
21
0
Merci
Salut,

Je n'ai pas tout relu (mon dieu que c'est long !! ), mais au passage :

avec strip_tags() qui retire les balises html/php de la chaine en argument, c'est utile car mysql refuse tout ce qui ressemble de près ou de loin à des balises html car ça constitue une faille de sécurité, la tristement célèbre faille XSS

Mysql ne refuse rien du tout, on peut y stocker ce que l'on veut, code HTML et code PHP compris. Cela devient une faille uniquement lorsque ce code provient d'un utilisateur et qu'il n'est pas contrôlé suffisamment.
Il faut également penser au mysql_real_escape_string() parce que le strip_tags() seul n'empêche pas grand chose.


Le "} else {
exit();
}" n'a rien à faire là, il corrompt ton code HTML.

Qu'en est il du code donné par Lyle56 en page 4 ?

Euh ... c'est quoi le problème au fait ?

Cordialement,

Kohntark -
Commenter la réponse de kohntark
Messages postés
240
Date d'inscription
jeudi 1 mai 2008
Statut
Membre
Dernière intervention
19 juillet 2012
2
0
Merci

Le "} else {
exit();
}" n'a rien à faire là, il corrompt ton code HTML.


Effectivement, c'est juste un raccourcis pour éviter le traitement derrière.
Il y as de l'affichage à faire.


if(!$serveur)
{
  echo " problème de connexion !";
}

if(!mysql_select_db('societe', $serveur))
{
   echo "mauvaise bdd";
 }


Petite remarque, si il n'y as pas de serveur, il ne peut y avoir de bdd ...
else if correspond mieux pour ce traitement.

if(!$serveur)
{
  echo " problème de connexion !";
}
else if(!mysql_select_db('societe', $serveur))
{
   echo "mauvaise bdd";
 }



enfin pour finir et revenir sur la remarque de Kohntark :

Remplace ceci
if(!empty($temp) && $temp != '' ) {
  $cliquer = $_POST['bouton'];
  $recherche = $_POST['search'];
  $recherche = strip_tags($recherche);
} else {
  exit();
}


par cela :

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


ça à juste valeur de test pour vérifié les infos que tu reçois.
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
voici les erreurs qu'il me mets avec ce que vous m'avez donnée:

[b]Notice: Undefined index: search in C:\Program Files\EasyPHP-5.3.3\www\stock.php on line 58
NULL
Notice: Undefined variable: recherche in C:\Program Files\EasyPHP-5.3.3\www\stock.php on line 59
NULL
Notice: Undefined variable: recherche in C:\Program Files\EasyPHP-5.3.3\www\stock.php on line 63

Fatal error: Call to undefined function sql_error() in C:\Program Files\EasyPHP-5.3.3\www\stock.php on line 64/b

euh oui je suis bien en local par contre est ce que ca peut venir de la car en fait j'ai changer l'adresse de base qui est 127.0.0.1 pour visiter les pages web que je met dans easyphp par mon adresse perso pour que ceux de l'entreprise puisse voir les pages.

donc voici le code avec vos infos

<?php
// Connection à la base de données.
$serveur = mysql_connect("127.0.0.1","root","****");

if(!$serveur)
{
  echo " problème de connexion !";
}

if(!mysql_select_db('societe', $serveur))
{
   echo "mauvaise bdd";
 }


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

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

var_dump($sql); echo "
";
var_dump($resultat); echo "
";

// Fin zone de test


$sql = "SELECT * FROM `stock` WHERE Item LIKE '%". $recherche ."%'" ;
$resultat = mysql_query($sql) or die(' Req :' .$sql .''. sql_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>
";
}

?>



</html>
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
Hola ... autant pour moi : mysql_error et non sql_error

ça devrais t'enlever une erreur ...

ensuite il te manque les lignes :

if (isset($_POST['bouton']) && isset($_POST['search']))
{
$temp = trim($_POST['search']);

juste avant

if(!empty($temp) && $temp != '' ) {
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
Oui alors du coup il vaut mieux mettre ton adresse ip(celle que les autres tape pour accéder à ce que tu fais) à la place de 127.0.0.1
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
Et ensuite si tu ne l'as pas déjà fait crée un nouvelle utilisateur dans phpmyadmin avec les codes qui vont bien et dans serveur tu met ton IP au lieu de localhost
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
merci pour le truq benco je vais essayer ca ;)

en attendant voila ce qui me marque

[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
Commenter la réponse de karlito911