Requete php - PHP - Programmation
Marsh Posté le 28-12-2006 à 16:00:38
Indice : ta requête actuelle n'affiche que les produits de catégorie "La Cuisine".
Marsh Posté le 28-12-2006 à 16:05:49
une requête if, ça ne veut pas dire grand chose. Pour qu'on puisse t'aider, il faudrait que tu nous montre une partie du modèle de données de ta base, genre, comment est géré le stock :
- c'est un simple champ numérique (un entier de 0 à n) dans la table contenant tes produits
- ou c'est dans une autre table qui gère le nombre d'items qu'il y a en stock pour chaque produit?
Si c'est le premier cas de figure, c'est simple :
$sql = 'SELECT nom_pdt, prix, description FROM produits WHERE categ = "La Cuisine" AND Stock > 0';
Dans le 2ième cas, une jointure interne suffit :
$sql = 'SELECT p.nom_pdt, p.prix, p.description FROM produits p, stock s WHERE p.categ = "La Cuisine" AND p.ProduitID = s.ProduitID';
edit : j'avais pas vu que tu disais avoir un champ stock : c'est donc le 1er cas de figure que tu dois appliquer...
Marsh Posté le 28-12-2006 à 16:06:16
lol merci pour l'indice
je suppose que ca doit donner qqchose de ce genre alors:
$sql = 'SELECT nom_pdt, prix, description FROM produits WHERE categ = "La Cuisine" WHERE stock > 0';
???
Marsh Posté le 28-12-2006 à 16:07:27
milie000 a écrit : lol merci pour l'indice |
non : $sql = 'SELECT nom_pdt, prix, description FROM produits WHERE categ = "La Cuisine" AND Stock > 0';
Marsh Posté le 28-12-2006 à 16:08:10
okc'est un simple champ numérique (un entier de 0 à n) dans la table contenant les produits
super merci ca marche avec AND !!!
Marsh Posté le 28-12-2006 à 16:09:57
Si je puis me permettre, aller jeter un coup d'oeil sur un cours de SQL ne te ferait pas de mal...
Marsh Posté le 28-12-2006 à 16:11:07
lol oui merci j'en ai fait plusieurs mais j'ai du mal à trouver les réponses à mes nombreuses questions!
Marsh Posté le 28-12-2006 à 16:15:46
tiens pour débuter : http://forum.hardware.fr/hfr/Progr [...] 6416_1.htm
Marsh Posté le 28-12-2006 à 16:21:00
merci je v etudier ca !
par hasard t'en aurai pas un qui explique comment mettre en page le résultat d'une requete sql notmamment en lui appliquant un css??
Marsh Posté le 29-12-2006 à 14:18:36
milie000 a écrit : merci je v etudier ca ! |
En fait une fois que tu auras extrait les données (dans un tableau en général) tu peux en faire ce que tu en veux, il n'y a pas de distinction quant à l'origine de tes données (variable simple ou valeur d'un tableau issu d'une requete SQL) quand tu vas les nettre en page. Si tu veux les afficher dans un tableau tout bête, par exemple, çà va donner :
$sql = "TA REQUETE";
$result = mysql_query($sql);
echo "<table border='2' cellpadding='2' cellspacing='2'>"; //envoi du code HTML pour commencer ton tableau
while ($row = mysql_fetch_array($result, MYSQL_NUM)) //Tant qu'il arrive à extraire une nouvelle ligne de résultats...
{
echo "<tr>"; //envoi du code HTML du code html pour debuter une ligne du tableau
echo "<td width='100'>".$row[0]."</td>"; // Affichage des données dans la "case" du dableau
// en fait tu peux afficher ou alors tes colonnes une par une ([0],[1], etc..)ou toutes avec un for(){} par exemple.
echo "</tr>"; //envoi du code HTML du code html pour finir une ligne du tableau
}
echo "</table>"; //envoi du code HTML pour finir ton tableau
En fait il faut voir que tout ce que va faire PHP c'est générer du code HTML (ou autres) dans ta page.
Donc vois dans un premier temps comment tu ferais pour le faire toi meme en HTML avec des donées statiques, puis le reste viendra tout seul, après ce n'est que de la logique et quelques fonctions à connaitre....
Marsh Posté le 29-12-2006 à 14:32:22
Perso, je pense qu'il vaut mieux utiliser MYSQL_ASSOC plutôt que MYSQL_NUM, car c'est plus lisible d'avoir $row['MonChamp'] plutôt que $row[0]. En plus, si tu change l'ordre des champs dans le SELECT, tu tapes plus dans le bon champ
et plutôt qu'un for, mieux vaut utiliser foreach()
Marsh Posté le 29-12-2006 à 14:45:36
En fait, j'ai crée mon tableau pas ds ma requete php et j'ai place ma requete dans une partie du tableau mais je voudrai ajouter une requete pour afficher des images dans une autre colonne du tableau est ce que je crée une deuxième requete dans la colonne ou est ce que je me suis gourée et il vaut mieux créer le tableau dans la requete pour que le simages puissent etre a cote de leur description?
Marsh Posté le 29-12-2006 à 14:45:44
J'utilise les MYSQL_NUM pour pouvoir faire du for() avec une variable que j'incrémente, mais c'est vrai que c'est plus facile et souple à utiliser avec un nom de champ et un foreach.
Marsh Posté le 29-12-2006 à 14:48:35
milie000 a écrit : En fait, j'ai crée mon tableau pas ds ma requete php et j'ai place ma requete dans une partie du tableau mais je voudrai ajouter une requete pour afficher des images dans une autre colonne du tableau est ce que je crée une deuxième requete dans la colonne ou est ce que je me suis gourée et il vaut mieux créer le tableau dans la requete pour que le simages puissent etre a cote de leur description? |
Euh j'ai pas tout compris mais il vaut mieux récupérer ton image (ou plutot son chemin d'accès) en même temps que les autre donées qui correspondent à ton produit, c'est beacoup plus simple.
Marsh Posté le 29-12-2006 à 14:50:40
ok mais alors je fais comment pour que l'image aille ds la colonne de gauche et le reste ds celle de droite ?
En fait je cherche à obtenir la meme mise en page que http://www.ctendance.fr/cuisine.htm
Marsh Posté le 29-12-2006 à 15:00:14
ben tu mets le $row[x] contenant l'url de l'image dans un <td><img src="$row[x]" /></td> et le reste des autres $row dans un autre <td>..</td>.
Y'a rien de compliqué. Le PHP, c'est générer dynamiquement du html. Donc, si t'as du mal, tu fais d'abord une maquette en html statique avec qq données (images et produits) et une fois que ta maquette est ok (le code html), tu rajoutes le code php qui va bien pour avoir le même résultat et les données qui proviennent cette fois d'une BD...
Marsh Posté le 29-12-2006 à 15:04:28
au fait, je reviens sur cette phrase anodine
Citation : "Je suis en train de passer ma boutique en ligne sous php" |
Ta boutique, elle était sous quoi avant de la faire passer sous php?
Parce que visiblement, tu as un bagage technique bien mince pour faire une boutique en ligne toi même. Si ta boutique est mise en production, j'ai peur que tu te fasse hacker facilement à cause de trous de sécurité classiques...
Marsh Posté le 29-12-2006 à 15:04:54
milie000 a écrit : ok mais alors je fais comment pour que l'image aille ds la colonne de gauche et le reste ds celle de droite ? |
Tu fais comme tu veux : imagine que ta requete soit :
SELECT nom, prix, image FROM article WHERE sketuveux
Apres ton mysql_fetch_array(* ,MYSQL_ASSOC) effectué, tu aura un tableau ($row['nomduchamp'] dans mon exemple en bas) pour chaque ligne. après c'est à toi de choisir si tu vas afficher :
[...] "<td>".$row['nom']."</td><td><img src='".$row['image']."'></td>" [...]
ou
[...] "<td><img src='".$row['image']."'></td><td>".$row['nom']."</td>" [...]
Marsh Posté le 29-12-2006 à 15:06:10
c moi qui l'ai faite mais elle est uniquement en html pour le moment
Marsh Posté le 29-12-2006 à 15:17:52
Au risque de passer pour un rabat-joie, je pense que tu devrais d'abord apprendre à maîtriser le xhtml et le css afin d'avoir un code plus "propre" (+ un peu de Javascript pour augmenter l'intéractivité).
Ensuite, tu te mets à PHP : session, récupération de données provenant de formulaires et apprendre à sécuriser ce qui a été saisi, les redirections...
Puis, tu apprends les bases de la modélisation d'un BD et le SQL.
Enfin, tu mixes PHP, Mysql, HTML, Javascript et CSS.
qq bons sites :
www.commentcamarche.net
http://css.alsacreations.com/
http://fr.php.net/manual/fr/ref.array.php
http://www.fredcavazza.net/doc/tut [...] tape12.htm
Marsh Posté le 28-12-2006 à 15:55:09
Bonjour
Je suis en train de passer ma boutique en ligne sous php
$sql = 'SELECT nom_pdt, prix, description FROM produits WHERE categ = "La Cuisine"';
Voilà la requete que j'utilise pour afficher les produits, cependant dans ma base de donnée j'ai un champ stock et je souhaiterai que le site n'affiche que les pdts dont le stock est > 0 je pense qu il faut utiliser une requete if mais je ne sais pas commment ni ou la placer
merci d'avance à ceux qui pourront m'aider