Quelques questions php

Quelques questions php - PHP - Programmation

Marsh Posté le 22-01-2006 à 17:48:45    

Je suis en train de m'entrainer à faire du php sur un site web de commerce en ligne (enfin il sera jamais en ligne le site  :p ). Mon site présente plusieurs articles marins, dont les données correspondantes sont conservé dans une base msql. Vous pouvez voir ici à peu près c'que ça peut donner : http://membres.lycos.fr/lpce04/ (pour l'instant y'a que le site en exemple. La base est en local).
 
En gros la page est basée sur des pseudos frames (include). Quand on clique sur le menu à gauche (menu.php), ça dois afficher les articles correspondant dans la page centrale. Par exemple, ce que je souhaite, c'est que quand on clique sur "homme" dans "penduick", ça m'affiche dans le cadre central tous les produits homme de la marque penduick (logique  :D ).
Si j'ai bien compris, le lien correspondant doit être comme ça :  

Code :
  1. <a href="index.php?marque=penduick&gamme=homme">Homme</a>


Ce qui va permette de recharger la page index avec toutes les includes, et de mettre dans la page centrale la page correspondant à penduick/homme. Mais c'est là que j'ai une question, j'ai lu quelquepart qu'il fallait créer cette page centrale (dans mon cas "penduick_homme.php" ) qui récupérerait les valeurs dans l'url (avec get...). Il y aurais donc autant de pages que de rubriques dans le menu. Est-ce que c'est exact ?
 
Moi j'aurais pensé qu'il fallait créer une page "article.php" et dans cette page, commune à toutes les rubriques en fait, on fesait appel aux variables qu'on souhaite.
 
Est-ce que quelqu'un peut m'éclairer ? (si j'ai été à peu près compréhensible dans c'que j'voulais demander  :pt1cable: ).
 
 
 
 
 
Sinon tant qu'à faire je continue ici au lieu de créer un autre topic :
 
Je me connecte donc à ma base de données dans l'include central. Et à l'aide des "variables" (suis pas sûr que ça soit le mot exact) je peux sélectionner ce que je veux dans ma base avec le "query".
 
Exemple :
 

Code :
  1. <?php
  2. mysql_connect("localhost", "login", "mot_de_passe" );
  3. mysql_select_db("semaphore" );
  4. $reponse = mysql_query("SELECT * FROM article WHERE marque='penduick' and gamme='homme'" );
  5. while ($donnees = mysql_fetch_array($reponse) )
  6. {
  7. ?>
  8. <div>Ici il y a une div pour chaque article en gros, avec les photos, description, etc. correspondantes</div>
  9. <?php
  10. }
  11. mysql_close();
  12. ?>


 
Est-ce que c'est la bonne méthode pour afficher les articles correspondant à ce sur quoi on a cliqué dans le menu de gauche ?
Dans le query, si je veux récupérer la condition j'imagine qu'il ne faut pas utiliser directement marque='penduick' mais marque=$get['marque'] ?
 
Voilà, d'avance je remercie ceux qui pourront m'éclairer  :jap:


Message édité par WhiskyWalker le 22-01-2006 à 17:50:26
Reply

Marsh Posté le 22-01-2006 à 17:48:45   

Reply

Marsh Posté le 22-01-2006 à 20:13:03    

Pour "marque=penduick&gamme=homme", dans index.php :
 
$_GET['marque'] contient 'penduick'
idem pour 'gamme'.
 
Quand tu fais tes include, $_GET leur est accessible. Donc dans article.php, tu as les infos dont tu as besoin.
 
Pour le reste, c'est bon :
mysql_query("SELECT * FROM article WHERE marque='".$_GET['marque']."' and gamme='".$_GET['homme']."'" );
 
Mais c'est juste un exemple. Avant de faire ça, il faut s'assurer que $_GET['marque'] existe et qu'il contienne bien une marque et pas un bout de SQL maliceux. (Voir SQL injection) http://www.linux-pour-lesnuls.com/injection.php
 


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 22-01-2006 à 20:56:19    

Merci bien pour tes remarques et ton lien. J'vais regarder ça  :jap:

Reply

Marsh Posté le 24-01-2006 à 02:18:24    

Bon j'ai essayé de programmer ça mais il apparement il y a des erreurs  :pt1cable: :
 

Code :
  1. <link href="style_form.css" rel="stylesheet" type="text/css">
  2. <?php
  3. // une valeur par défaut pour la requête
  4. //$marque = (!isset($_GET['marque']))?('penduick'):($_GET['marque']);
  5. //$gamme = (!isset($_GET['gamme']))?('homme'):($_GET['gamme']);
  6. // connexion (avec gestion des erreurs )
  7. mysql_connect("localhost", "root", "" ) or die ("Impossible de se connecter à MySQL" ); //Connexion à MySQL
  8. mysql_select_db("semaphore" ) or die ("Impossible de sélectionner la base de données" ); //Sélection de la base semaphore
  9. // On crée la requête SQL
  10. $sql = 'SELECT * FROM produit WHERE marque='".$GET['marque']."'';
  11. //On envoie la requête
  12. $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
  13. while ($data = mysql_fetch_array($req))
  14. {
  15. // On affiche les informations de l'enregistrement en cours
  16. ?>
  17. <table><tr><td><b>ID :</b> <?php echo $data['id']; ?>, <b>Marque :</b> <?php echo $data['marque']; ?><td><tr></table>
  18. <?php
  19. }
  20. mysql_close(); //On se déconnecte de MySQL
  21. ?>


 
Ca me met "Parse error" à la ligne 14. J'imagine que dans le Where du Select, ça doit pas être comme ça qu'on récupère la variable de l'url...  :heink:
 
Sinon par rapport à la requête SQL, j'ai vu pleins d'exemple mais des fois c'est mis

Code :
  1. $sql = 'SELECT

, des fois

Code :
  1. $sql = "SELECT

. C'est quoi la différence ?


Message édité par WhiskyWalker le 24-01-2006 à 02:19:36
Reply

Marsh Posté le 24-01-2006 à 02:23:55    

Edit : autant pour moi, j'avais une ch'tit erreur en créant ma base [:aiua]


Message édité par WhiskyWalker le 24-01-2006 à 02:26:28
Reply

Marsh Posté le 24-01-2006 à 09:44:07    

$_GET['marque'] et non $GET['marque'] !

Reply

Marsh Posté le 24-01-2006 à 09:47:06    

$sql = "SELECT * FROM produit WHERE marque='".$GET['marque']."'";
 
ou
 
$sql = 'SELECT * FROM produit WHERE marque=\''.$GET['marque'].'\'';
 
ou encore
 
$sql = "SELECT * FROM produit WHERE marque='{$GET['marque']}'";
 


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 24-01-2006 à 17:16:31    

Ben dans ton 2è message, tu met jamais le "_"  :??:

Reply

Marsh Posté le 24-01-2006 à 21:57:04    

Parce qu'il m'arrive d'être un peu con, et de faire du bête copier/coller comme tout le monde !


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 25-01-2006 à 01:31:31    

Une autre question dans ce bout de code :
 

Code :
  1. while ($donnees = mysql_fetch_array($res)) {
  2.   // ma div
  3. }


 
Je voudrais avoir 2 articles sur chaque ligne, or là pour l'instant ça me met à la ligne à chaque fois. En gros, je voudrais le 1er et 2è article de la base sur la 1ère "ligne", le 3è et 4è sur la 2ème, etc...
 
C'est possible ?

Reply

Marsh Posté le 25-01-2006 à 01:31:31   

Reply

Marsh Posté le 25-01-2006 à 16:32:37    

up :(

Reply

Marsh Posté le 26-01-2006 à 09:20:55    

Oui, c'est possible.
 
Le mot de passe est ... MODULO ...
 
Edit : Merde, je me suis trompé de cas...
Dans le tiens, il suffit de lire un autre enregistrement dans ta boucle.


Message édité par Mara's dad le 26-01-2006 à 09:22:58

---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 26-01-2006 à 11:19:47    

Oui mais comment on fais concrètement ?

Reply

Marsh Posté le 26-01-2006 à 11:55:37    


Code :
  1. while ($donnees = mysql_fetch_array($res)) {
  2.     // truc
  3.    if( $donnees = mysql_fetch_array($res) )
  4.    {
  5.       //truc2
  6.    }
  7. }


Reply

Marsh Posté le 30-01-2006 à 13:52:12    

Ca marche pas  :(  Ca me les met quand même l'un en dessous de l'autre

Reply

Marsh Posté le 30-01-2006 à 13:57:14    

a mon avis ça vient plus du HTML que tu génères que de ton php...
Si le résultat ressemble à ça:

Code :
  1. <div>Ligne 1</div>
  2. <div>Ligne 2</div>
  3. <div>Ligne 3</div>


C'est normal le retour à la ligne...  

Reply

Marsh Posté le 30-01-2006 à 14:48:33    

Et comment éviter ce retour à la ligne justement  :??:

Reply

Marsh Posté le 30-01-2006 à 14:51:13    

Apprendre l'HTML et les CSS avant de se prendre pour une 3l33t en php...

Reply

Marsh Posté le 30-01-2006 à 20:32:43    

Excusez-moi ô grand anapajari de ne pas avoir toutes votre immense connaissance  :jap:

Reply

Marsh Posté le 30-01-2006 à 20:42:41    

Désolé, mais Anapajari a raison sur le fond, même si la forme est discutable !
 
Avant de se lancer dans un dev en php, il est bon d'avoir une maquette HTML de ce qu'on veux faire.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 30-01-2006 à 23:58:40    

La maquette est faite. C'est juste un problème de synthaxe j'imagine et comme je débute en php ben j'ai pas forcément toutes mes réponses. Vous quand vous avez commencé, vous avez pas tous imprimer dans votre cerveau directement j'imagine, comme tout autre chose y'a eu une période d'apprentissage. C'est facile quand on connait un truc de dénigrer les "newbies" comme certains savent si bien le dire  :o , mais n'oubliez pas que vous êtes passé par ce stade là un jour vous aussi

Reply

Marsh Posté le 31-01-2006 à 00:07:34    

Fais voir la partie de ta maquette qui pose problème.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 31-01-2006 à 09:10:43    

WhiskyWalker a écrit :

C'est juste un problème de synthaxe j'imagine et comme je débute en php ben j'ai pas forcément toutes mes réponses.


Non pas de problème de syntaxe, ton problème n'a vraiment rien a voir avec le php. C'est un problème de choix de balise html
 

Citation :

Vous quand vous avez commencé, vous avez pas tous imprimer dans votre cerveau directement j'imagine, comme tout autre chose y'a eu une période d'apprentissage.


C'est vrai mais dans l'ordre j'ai appris l'html, le js, les css et enfin les languages cotés serveur.
 

Citation :

C'est facile quand on connait un truc de dénigrer les "newbies" comme certains savent si bien le dire  :o , mais n'oubliez pas que vous êtes passé par ce stade là un jour vous aussi


C'est aussi facile de prendre tout mal dès qu'on dit qu'un truc est mal fait ou que c'est pas comme ça qu'il faut faire.
 
Et la je suis désolé mais pas savoir qu'un DIV(non stylé) entraine un retour à la ligne ...


Message édité par anapajari le 31-01-2006 à 09:12:51
Reply

Marsh Posté le 31-01-2006 à 12:00:24    

Bon autant pour moi alors, me suis un ch'tit peu emporté, sorry  :jap:  
 
Pour en revenir au sujet, j'ai essayé également avec des table mais ça revient aussi à la ligne (là je sais pourquoi). J'vous met le code en début d'aprem, ça sera plus simple.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed