IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Questions include + sql


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 101
    Points : 43
    Points
    43
    Par défaut Questions include + sql
    Bonsoir, 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 ).
    Si j'ai bien compris, le lien correspondant doit être comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <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).

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    mysql_connect("localhost", "login", "mot_de_passe");
    mysql_select_db("semaphore");
     
    $reponse = mysql_query("SELECT * FROM article WHERE marque='penduick' and gamme='homme'");
     
    while ($donnees = mysql_fetch_array($reponse) )
    {
    ?>
    <div>Ici il y a une div pour chaque article en gros, avec les photos, description, etc. correspondantes</div>
    <?php
    }
    mysql_close();
    ?>
    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

  2. #2
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    tu as raison !!! il faut créer une page article dans laquelle tu récupères les superglobales afin d'en construire le contenu. Dans le cas contraire (une page pour chaque rubrique/sous-rubrique tu seras vitre confronté à la problématique "millier de page"

    donc tu fais une page article, dans laquelle tu construit une requête dynamiquement, donc tu as tout bon dans ta reflexion...

    un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    <?php
     
    // une valeur par défaut pour la requete
    $marque = (!isset($_GET['marque']))?('penduick'):($_GET['marque']);
    $gamme = (!isset($_GET['gamme']))?('homme'):($_GET['gamme']);
     
    // connexion (avec gestion des erreurs :) )
    $link = @mysql_connect("localhost", "login", "mot_de_passe") or die ("impossible de se connecter à la base de données");
    @mysql_select_db("semaphore") or die ("Impossible de sélectionner la base de données"); 
     
    // pour proteger 
    $marque = mysql_real_escape_string($marque, $link);
    $gamme = mysql_real_escape_string($gamme, $link);
     
    // requete dynamique
    $sql = "SELECT * FROM `article` WHERE `marque` LIKE '$marque' and `gamme` LIKE '$gamme'";
    $res = mysql_query($sql, $link) or die (mysql_error());
     
    while ($donnees = mysql_fetch_array($res)) {
      // ta div
    }
    ?>
    j'espère que cela répond à ta question...

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 101
    Points : 43
    Points
    43
    Par défaut
    Citation Envoyé par ska_root
    il faut créer une page article dans laquelle tu récupères les superglobales
    Une autres question au passage, c'est quoi une variable "superglobale" ? C'est en rapport avec les sessions ?

  4. #4
    Membre émérite
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Points : 2 969
    Points
    2 969
    Par défaut
    Salut, tu peux faire un tour ici : http://fr.php.net/manual/fr/language...bles.scope.php

    Bon développement
    Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement. Albert EINSTEIN

    F.A.Q. : Java, PHP, (X)HTML / CSS

    N'oubliez pas de cliquer sur le bouton Résolu en bas de page quand vous avez obtenu une solution à votre problème

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 101
    Points : 43
    Points
    43
    Par défaut
    Autre question sur ce bout de code :

    Citation Envoyé par ska_root
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    // une valeur par défaut pour la requete
    $marque = (!isset($_GET['marque']))?('penduick'):($_GET['marque']);
    $gamme = (!isset($_GET['gamme']))?('homme'):($_GET['gamme']);
    Ca correspond à quoi exactement "par défaut" ?
    C'est pas valeur récupérée suivant le lien sur lequel on a cliqué ?

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 101
    Points : 43
    Points
    43
    Par défaut
    Encore une question là dessus :

    Citation Envoyé par ska_root
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while ($donnees = mysql_fetch_array($res)) {
      // ta div
    }
    Je voudrais pouvoir mettre 2 articles sur chaque "lignes". En fait là ça me met bien ce que je veux dans la div mais quand ça passe à un autre article dans la base, ça met remet une div en dessous, alors que je la voudrais à côté de la précédente.
    En gros, 1er et 2è article de la base sur la même "ligne", 3è et 4è sur une ligne suivante, etc...

  7. #7
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2004
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 265
    Points : 332
    Points
    332
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    // une valeur par défaut pour la requete
    $marque = (!isset($_GET['marque']))?('penduick'):($_GET['marque']);
    $gamme = (!isset($_GET['gamme']))?('homme'):($_GET['gamme']);
    Il s'agit de la forme condensée d'un if else.

    Seulement j'ai un doute sur la signification parce que je ne m'en sers jamais.

    **Edit**

    d'ailleurs je ne trouve pas sur le site PHP - ooù puis je trouver cette information ?

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 101
    Points : 43
    Points
    43
    Par défaut
    Citation Envoyé par IgotaBreizh
    Encore une question là dessus :

    Citation Envoyé par ska_root
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while ($donnees = mysql_fetch_array($res)) {
      // ta div
    }
    Je voudrais pouvoir mettre 2 articles sur chaque "lignes". En fait là ça me met bien ce que je veux dans la div mais quand ça passe à un autre article dans la base, ça met remet une div en dessous, alors que je la voudrais à côté de la précédente.
    En gros, 1er et 2è article de la base sur la même "ligne", 3è et 4è sur une ligne suivante, etc...
    Et pour mon problème ?

  9. #9
    Membre éclairé Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Points : 757
    Points
    757
    Par défaut
    je sais pas trop comment ca se goup avec tes balises div... je ne suis pas encore expert en la matiere ... mais avec un tableau, tu peux faire ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    echo "<table>";
    $nvelle_ligne=true;
    while ($donnees = mysql_fetch_array($res)) {
      if ($nvelle_ligne){echo "<tr>";}
      echo "<td>";
      //affichage de ton article
      echo "</td>";
      $nvelle_ligne=!$nvelle_ligne;
      if ($nvelle_ligne){echo "</tr>";}
    }
    echo "</table>";
    Voila, c'est un simple probleme d'algorithmique pour afficher deux enregistrement sur une même ligne. Si pour les div, il s'agit d'indiquer des position ... ca doit etre faisable dans une même optique en jouant sur les valeurs des coordonnées de x et y.
    See you, space cowboy... and if you're satisfied, click on

  10. #10
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    L'histoire du "par défaut" est de récupérer la variable de l'URL si elle existe. Si elle n'existe pas, tu lui donnes une valeur prédéfinie (= par défaut), histoire de toujours avoir quelque chose. Perso, je l'aurais fait avec empty() plutôt que !isset().
    Les variables de l'URL sont visibles (donc modifiables) par l'utilisateur : il ne faut jamais faire confiance aux variables de l'utilisateur, donc il faut toujours les vérifier.

    Je l'aurais écrit ainsi (en supposant que tu passes des identifiants numériques, sinon il faut utiliser addslashes() à la place de intval()) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    // une valeur par défaut pour la requete
    $marque = empty($_GET['marque']) ? 'id_de_penduick' : intval($_GET['marque']);
    $gamme = empty($_GET['gamme']) ? 'id_de_homme' : intval($_GET['gamme']);
    Concernant ton autre problème, tu peux faire ainsi (à étoffer) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $i = 0;
    while ($donnees = mysql_fetch_array($res)) {
      if($i%2 == 0){
        echo '</div><div>'; // change de div
      }
      // le contenu de ton div
      ++$i;
    }

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 101
    Points : 43
    Points
    43
    Par défaut
    Avec le </div>, ça va automatiquement me le mettre à la ligne nan ?

    Moi je voudrais que ça me mette le 2è article à côté du 1er, le 3è en dessous du 1er, le 4è en dessous du 2è, etc....

  12. #12
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    Je suis parti de ton code du départ, qui dit en commentaire que tu as un div par lign/article. Puisque tu veux deux articles par ligne, je t'ai proposé une méthode qui met deux articles dans le même div.
    À toi d'affiner.

Discussions similaires

  1. [SQL] 2 questions PHP/SQL
    Par Misoss dans le forum PHP & Base de données
    Réponses: 18
    Dernier message: 22/06/2006, 16h29
  2. question su sql server 2005 express edition
    Par nass06 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 25/04/2006, 20h15
  3. Question sur sql et ASP
    Par claralavraie dans le forum ASP
    Réponses: 5
    Dernier message: 23/12/2005, 11h41
  4. Quelques questions sur SQL Server 2000
    Par yinyang dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 07/12/2005, 19h39
  5. BTS Info de Gestion passé aujourd'hui question pour SQL
    Par red210 dans le forum Décisions SGBD
    Réponses: 11
    Dernier message: 29/05/2005, 14h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo