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

bencoandco Messages postés 165 Date d'inscription samedi 8 mai 2010 Statut Membre Dernière intervention 3 janvier 2015
14 sept. 2010 à 16:16
Peux tu renvoyer l'ensemble de ton code
0
karlito911 Messages postés 67 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 20 octobre 2010
14 sept. 2010 à 16:24
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
0
karlito911 Messages postés 67 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 20 octobre 2010
14 sept. 2010 à 16:29
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, ...
0
Lyle56 Messages postés 240 Date d'inscription jeudi 1 mai 2008 Statut Membre Dernière intervention 19 juillet 2012 2
14 sept. 2010 à 16:35
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 ...
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
14 sept. 2010 à 16:54
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
0
bencoandco Messages postés 165 Date d'inscription samedi 8 mai 2010 Statut Membre Dernière intervention 3 janvier 2015
14 sept. 2010 à 17:06
essaye en enlevant action="stock.php" et remplace le par action=" ",...
0
karlito911 Messages postés 67 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 20 octobre 2010
14 sept. 2010 à 17:11
lorsque je fais ce que tu me dis et que je clique sur mon bouton il me renvoi sur ma page d'acceuil
0
bencoandco Messages postés 165 Date d'inscription samedi 8 mai 2010 Statut Membre Dernière intervention 3 janvier 2015
14 sept. 2010 à 17:11
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 ?
0
Lyle56 Messages postés 240 Date d'inscription jeudi 1 mai 2008 Statut Membre Dernière intervention 19 juillet 2012 2
14 sept. 2010 à 17:16
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
0
karlito911 Messages postés 67 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 20 octobre 2010
14 sept. 2010 à 17:17
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
0
karlito911 Messages postés 67 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 20 octobre 2010
14 sept. 2010 à 17:28
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
0
bencoandco Messages postés 165 Date d'inscription samedi 8 mai 2010 Statut Membre Dernière intervention 3 janvier 2015
14 sept. 2010 à 18:03
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
0
bencoandco Messages postés 165 Date d'inscription samedi 8 mai 2010 Statut Membre Dernière intervention 3 janvier 2015
14 sept. 2010 à 18:07
petite question tu travailles bien en local ?
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
14 sept. 2010 à 21:52
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 -
0
Lyle56 Messages postés 240 Date d'inscription jeudi 1 mai 2008 Statut Membre Dernière intervention 19 juillet 2012 2
15 sept. 2010 à 10:11

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.
0
karlito911 Messages postés 67 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 20 octobre 2010
15 sept. 2010 à 12:12
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>
0
Lyle56 Messages postés 240 Date d'inscription jeudi 1 mai 2008 Statut Membre Dernière intervention 19 juillet 2012 2
15 sept. 2010 à 12:49
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 != '' ) {
0
bencoandco Messages postés 165 Date d'inscription samedi 8 mai 2010 Statut Membre Dernière intervention 3 janvier 2015
15 sept. 2010 à 14:08
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
0
bencoandco Messages postés 165 Date d'inscription samedi 8 mai 2010 Statut Membre Dernière intervention 3 janvier 2015
15 sept. 2010 à 14:19
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
0
karlito911 Messages postés 67 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 20 octobre 2010
15 sept. 2010 à 14:22
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
0
Rejoignez-nous