Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/03/2011, 12h59   #1
Invité de passage
 
Femme
Étudiant
Inscription : mars 2011
Messages : 5
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 20
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : mars 2011
Messages : 5
Points : 2
Points : 2
Par défaut Afficher le résultat d'une requete variable (SQL) via PHP

Bonjour,

J'ai un petit problème, qui commence d'ailleurs à me décourager. Voilà plusieurs longues heures que je cherche et teste sans aucun résultat. C'est pour cela que je viens vers vous.
Topo de la situation : j'ai un projet de site web à créer, dans lequel je dois insérer une fonction rechercher dans la base de donnée qui va avec. Donc j'ai beau tester, le résultat de la requête ne s'affiche jamais, je dois avoir un problème dans mon code. Pour info, je suis vraiment une très très grande débutante dans PHP ! Et même si la réponse vous parait bête, elle me servira à mieux comprendre Je vous mets donc mon code :

Citation:
<?php
$host = localhost;
$user = root;
$bdd = bibliotheque_municipale;
$passwd = '';
mysql_connect ($host, $user, $passwd) or die ("Erreur de connexion à MySQL");
mysql_select_db($bdd) or die ("Erreur de connexion à la base de donnée");
?>
<form method="post" action="catalogue.php">
<p>
<label id="invisible">Invisible</label><br/>
<label>Auteur</label><br/><input type="text" name="auteur"/><br/>
<label>Titre</label><br/><input type="text" name="titre"/><br/>
<label>Editeur</label><br/><input type="text" name="editeur"/><br/>
<label>Date de publication</label><br/><input type="text" name="date_de_publication"/><br/><br/>
<input type="submit" name="rechercher" value="Rechercher"/>
</p>
</form>
<?php
if (isset ($_POST['rechercher']))
{
$auteur=$_POST['auteur'];
$titre=$_POST['titre'];
$editeur=$_POST['editeur'];
$date_publication=$_POST['date_de_publication']
}
?>
Citation:
<?php
$host = localhost;
$user = root;
$bdd = bibliotheque_municipale;
$passwd = '';
mysql_connect ($host, $user, $passwd) or die ("Erreur de connexion à MySQL");
mysql_select_db($bdd) or die ("Erreur de connexion à la base de donnée");
$sql='SELECT titre, auteur, editeur, date_de_publication FROM ouvrage WHERE titre=$titre, auteur=$auteur, editeur=$editeur, date_de_publication=$date_publication ouvrage.Num_ouvrage NOT IN (SELECT Num_ouvrage FROM emprunt)';
mysql_query($sql) or die ('Erreur SQL !' .$sql. '<br/>' .mysql_error());
mysql_close();
}
?>
Petite explication : j'ai déclaré les variables sur la page où elles sont saisies, et j'ai créé la requete sur la page où elles sont envoyées. Vaut-il mieux faire tout sur une seule page ou est-ce que cela peut marcher sur deux pages, une pour la transmission des données, l'autre pour l'exécution de la requête ?

Donc, au niveau de la connexion à la base de données, pas de problème. Pourtant je bloque complètement sur l'exécution de la requête. Il me faut pouvoir chercher un bouquin dans la base de donnée selon son auteur, son titre, son éditeur ou sa date de publication. J'aimerai aussi ajouter "disponible" ou "non disponible" pour chaque livre via MySQL.

La table a trois tables : ouvrage, emprunt et emprunteur. Pour le disponible il faudrait vérifier dans les emprunts s'il l'est ou non.

Je suis un peu perdue, quelqu'un pour m'aider ? Le sujet est là pour faire marcher le code, le reste est un bonus

Je vous remercie de m'avoir lue ! Bonne journée à tous
Kaluvn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 13h06   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 014
Points : 5 014
Hello

(utilise les balises [code] en lieu et place des balises [quote])

Y'a un truc qui me chiffonne dans ton code, je ne comprends pas pourquoi tu ne réccupères pas les résultats de ta requête si c'est pour après te plaindre qu'il ne sont pas affichés... Il ne vont pas sortir à l'écran tout seuls

Mets
Code :
1
2
3
4
5
 
$results = mysql_query($sql) or die ('Erreur SQL !' .$sql. '<br/>' .mysql_error());
while ($row = mysql_fetch_assoc($results)) {
  var_dump($row);
}
Et remplace le var_dump par l'affichage que tu veux obtenir.

Note: le <p> dans ton <form> pourrait avantageusement être remplacé par un <fieldset>.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/03/2011, 13h26   #3
Invité de passage
 
Femme
Étudiant
Inscription : mars 2011
Messages : 5
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 20
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : mars 2011
Messages : 5
Points : 2
Points : 2
Je te remercie vraiment pour ton aide

Alors, j'avoue que je n'avais pas réessayer d'afficher dans ce code car ça ne m'affiche jamais rien ^^

Je prends note pour le code au lieu de quote au passage.

Donc, j'ai changé comme tu me l'as expliqué, malheureusement ça m'affiche toujours la même chose quand je teste :

.mysql_error()); while ($row = mysql_fetch_assoc($results)) { var_dump($row); } mysql_close(); ?>

C'est donc ce que je vois à l'écran. D'où cela peut-il venir ? En fait, à chaque fois ça m'affiche la fin de mon code php :/ Il y a bien tous les points virgules et la fermeture du php pourtant ><
Kaluvn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 13h39   #4
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 014
Points : 5 014
Appelle ton script php en passant par apache, c'est à dire avec http:// et non pas avec file:// dans ton navigateur

Juste pour info, tu es passée par là: http://www.developpez.net/forums/d68...tants-presses/ ??
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/03/2011, 16h53   #5
Invité de passage
 
Femme
Étudiant
Inscription : mars 2011
Messages : 5
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 20
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : mars 2011
Messages : 5
Points : 2
Points : 2
Oui, je suis allée faire un tour sur le tutoriel et je l'ai mis dans mes signets pour pouvoir le lire en entier

Sinon, après avoir ouvert le site avec Apache ça a l'air de vouloir marcher mais l'on me dit :

Citation:
Notice: Use of undefined constant localhost - assumed 'localhost' in C:\wamp\www\Site Web Bibli\catalogue.php on line 29

Notice: Use of undefined constant root - assumed 'root' in C:\wamp\www\Site Web Bibli\catalogue.php on line 30

Notice: Use of undefined constant bibliotheque_municipale - assumed 'bibliotheque_municipale' in C:\wamp\www\Site Web Bibli\catalogue.php on line 31
Erreur SQL !SELECT titre, auteur, editeur, date_de_publication FROM ouvrage WHERE titre=$titre, auteur=$auteur, editeur=$editeur, date_de_publication=$date_publication ouvrage.Num_ouvrage NOT IN (SELECT Num_ouvrage FROM emprunt)
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' auteur=$auteur, editeur=$editeur, date_de_publication=$date_publication ouvrage' at line 1
Donc, d'où viennent les erreurs d'identifiants ? Pourtant ce sont bien ceux par défaut :/ Et pour la syntaxe MySQL, les variables doivent-elles être entre parenthèse ?
Kaluvn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 16h57   #6
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 465
Points : 8 465
c'est les bases de PHP ça, pour écrire une chaine c'est avec les guillemets autour....
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 18h00   #7
Invité de passage
 
Femme
Étudiant
Inscription : mars 2011
Messages : 5
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 20
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : mars 2011
Messages : 5
Points : 2
Points : 2
Merci pour ton intervention stealth35 Toutefois, on apprend tous un jour et je n'ai jamais pratiqué, alors ce n'est pas tellement "choquant" je pense que je sois étourdie à propos de certaines choses. Même si c'est la base. Ce n'est pas croyable qu'il y ai toujours quelqu'un, en tout cas sur mes posts, pour me prendre de haut parce que je ne suis qu'une pauvre débutante et que je pose des questions qui vous paraisses tellement logiques, et qui ne le sont pas pour moi. Enfin, merci une recherche a répondu à ma question et j'ai résolu presque tous les problèmes

Une dernière question, donc, et je vous laisse tranquille : existe-t-il un caractère permettant, comme dans SQL, de remplacer des caractères "bonus" ? Comme le % dans SQL, donc. Peut-il être rajouter dans une variable afin que dans la recherche, on me donne tous les livres contenant même rien qu'un caractère ?
Kaluvn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 18h01   #8
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 014
Points : 5 014
Je pense que tu devrais commencer par boucler le tutoriel avant de te lancer dans un projet.

Citation:

Une dernière question, donc, et je vous laisse tranquille : existe-t-il un caractère permettant, comme dans SQL, de remplacer des caractères "bonus" ? Comme le % dans SQL, donc. Peut-il être rajouter dans une variable afin que dans la recherche, on me donne tous les livres contenant même rien qu'un caractère ?
Oui mais ce n'est pas performant du tout. Soit avec des regexp soit avec une clause like:
Code :
1
2
 
SELECT ... FROM ... WHERE champ LIKE 'tes%';
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 18h02   #9
Invité de passage
 
Femme
Étudiant
Inscription : mars 2011
Messages : 5
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 20
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : mars 2011
Messages : 5
Points : 2
Points : 2
Finalement, problème résolu. Merci de votre aide.
Kaluvn est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h26.


 
 
 
 
Partenaires

Hébergement Web