Double requêtes SQL

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par cybereco, 14 Septembre 2011.

  1. cybereco
    cybereco Nouveau WRInaute
    Inscrit:
    19 Août 2011
    Messages:
    32
    J'aime reçus:
    0
    Bonjour,

    Pour faire simple, j'ai une table appelée news dans une bdd avec id, code, commune, description, photo, articles.

    Au lieu de faire une table pour chaque colonne ayant un code différent, j'aimerai intégrer une requête dans mon code ci-dessous, du type sélectionner toutes les "id" de ma table news dont le code = 1 tout en respectant mon code de pagination.



    J'ai essayé avec WHERE code = '1', mais ça ne fonctionne pas.
    Code:
    <?php
       
       /*
       Connexion à   la BDD
       */
       require "connect.php";
       mysql_connect($adresse, $nom, $motdepasse);
       mysql_select_db($database);
       
       $sql = "SELECT COUNT(id) as nbArt FROM news";
       $req = mysql_query($sql) or die(mysql_error());
       $data = mysql_fetch_assoc($req);
          
       $nbArt = $data['nbArt'];
       $perPage = 2;
       $nbPage = ceil($nbArt/$perPage);
       $cPage = 1;
       
       if(isset($_GET['p']) && $_GET['p']>0 && $_GET['p']<=$nbPage){
       $cPage = $_GET['p'];
       }   
       {   
       $sql = "SELECT * FROM news  ORDER BY id DESC LIMIT ".(($cPage-1)*$perPage).",$perPage";
       $req = mysql_query($sql) or die(mysql_error());
       while($data = mysql_fetch_assoc($req)){
                
                ?>   
    Je fais peut-être une erreur de syntaxe, ou et certainement une mauvaise insertion dans le code (je débute en PHP, merci pour votre indulgence).

    J'ai donc essayé

    Code:
     <?php
       
       /*
       Connexion à   la BDD
       */
       require "connect.php";
       mysql_connect($adresse, $nom, $motdepasse);
       mysql_select_db($database);
       
       $sql = "SELECT COUNT(id) WHERE code = '1' as nbArt FROM news";
       $req = mysql_query($sql) or die(mysql_error());
       $data = mysql_fetch_assoc($req);
          
       $nbArt = $data['nbArt'];
       $perPage = 2;
       $nbPage = ceil($nbArt/$perPage);
       $cPage = 1;
       
       if(isset($_GET['p']) && $_GET['p']>0 && $_GET['p']<=$nbPage){
       $cPage = $_GET['p'];
       }   
       {   
       $sql = "SELECT * FROM news  ORDER BY id DESC LIMIT ".(($cPage-1)*$perPage).",$perPage";
       $req = mysql_query($sql) or die(mysql_error());
       while($data = mysql_fetch_assoc($req)){
                
                ?>   
    et aussi
    Code:
     <?php
       
       /*
       Connexion à   la BDD
       */
       require "connect.php";
       mysql_connect($adresse, $nom, $motdepasse);
       mysql_select_db($database);
       
       $sql = "SELECT COUNT(id) as nbArt FROM news";
       $req = mysql_query($sql) or die(mysql_error());
       $data = mysql_fetch_assoc($req);
          
       $nbArt = $data['nbArt'];
       $perPage = 2;
       $nbPage = ceil($nbArt/$perPage);
       $cPage = 1;
       
       if(isset($_GET['p']) && $_GET['p']>0 && $_GET['p']<=$nbPage){
       $cPage = $_GET['p'];
       }   
       {   
       $sql = "SELECT * FROM news  WHERE code = '1' ORDER BY id DESC LIMIT ".(($cPage-1)*$perPage).",$perPage";
       $req = mysql_query($sql) or die(mysql_error());
       while($data = mysql_fetch_assoc($req)){
                
                ?>   
    mais sans succès. Merci pour votre aide.
     
  2. K-mi-k-z
    K-mi-k-z WRInaute discret
    Inscrit:
    26 Août 2011
    Messages:
    193
    J'aime reçus:
    0
    Code:
    {   
    $sql = "SELECT (On ne met pas *, mais le nom des colonnes) FROM news  ORDER BY id DESC LIMIT ".(($cPage-1)*$perPage).",$perPage";
    $req = mysql_query($sql) or die(mysql_error());
    while($data = mysql_fetch_assoc($req)){
    Supprime les accolades autour de ta seconde requête. Y en 2 ouverte qui ne servent à rien. ;-)

    Pour info, le test if sur le isset ne sert à rien vu que tu test ensuite qu'il contient une valeur.
     
  3. cybereco
    cybereco Nouveau WRInaute
    Inscrit:
    19 Août 2011
    Messages:
    32
    J'aime reçus:
    0
    Merci K-mi-k-z de prêter attention à mon post.

    Petite question : en mettant le nom des colonne (SELECT (On ne met pas *, mais le nom des colonnes), je vais afficher leur effectivement sélectionner celles que je veux voir afficher. Par contre, je voudrai afficher ces mêmes colonnes, mais avec un critère de sélection pour la colonne "code" :c'est à dire que l'affichage ne prendra en compte que les contenus lorsque le code "achards".

    J'espère être à peu près clair, car pas simple à expliquer.

    Concernant les accolades et le test if sur le isset, je veux bien te croire, j'ai suivi un tuto que j'ai essayé d'adapter sans réelles connaissances en ce domaine.
     
  4. K-mi-k-z
    K-mi-k-z WRInaute discret
    Inscrit:
    26 Août 2011
    Messages:
    193
    J'aime reçus:
    0
    Là, j'ai rien compris... il doit manquer des mots... :)
     
  5. cybereco
    cybereco Nouveau WRInaute
    Inscrit:
    19 Août 2011
    Messages:
    32
    J'aime reçus:
    0
    Gloups....désolé. Je vais essayé d'être clair.

    J'édite un journal local d'informations sur plusieurs communes, donc plusieurs cantons.
    J'ai une page index qui affiche tous les articles réunissants toutes les communes. Jusque là tout va bien.

    Mes lecteurs doivent pouvoir depuis la barre de menu sélectionner le canton qui les intéresse.

    Je créé donc une page canton1.php, canton2.php etc... Là c'est bon pour moi.

    Au lieu de créer une table dans la bdd pour chaque canton, je pense qu'il est possible de récupérer dans la table de la bdd affectée à la page index et en y insérant une colonne du type code avec entrée 1 par exemple pour le canton 1, 2 pour le canton 2, etc... uniquement les articles du canton1 a afficher dans la page canton1.php.

    L'objectif étant de limiter le nombre d'action de saisie bien sûr dans les tables par la suite.

    J'espère ne pas avoir oublié de mot cette fois...
     
  6. Babylon
    Babylon WRInaute discret
    Inscrit:
    18 Octobre 2006
    Messages:
    170
    J'aime reçus:
    0
    Alors si j'ai bien compris ;-) tu veux relier tes news à un canton.
    Donc tu crée une table canton du style :

    ID canton_name
    1 canton1
    2 canton2

    Puis dans ta table news tu ajoute un champ canton que tu rempliras avec l'id du canton correspondant.
    Enfin dans ta page canton1.php la requête sera :
    SELECT * FROM news WHERE canton = '1'
     
  7. cybereco
    cybereco Nouveau WRInaute
    Inscrit:
    19 Août 2011
    Messages:
    32
    J'aime reçus:
    0
    Merci Babylon, mais c'est ce que j'ai essayé dans mes codes que tu peux voir dans mes premiers messages
    Code:
    $sql = "SELECT * FROM news  WHERE code = '1' ORDER BY id DESC LIMIT ".(($cPage-1)*$perPage).",$perPage";
       $req = mysql_query($sql) or die(mysql_error());
       while($data = mysql_fetch_assoc($req)){
                
                ?>   
    Malheureusement, ce code ne me permet d'afficher la sélection souhaitée dans ma table. J'ai bien un affichage mais de toutes mes entrées comme si ce code ne prenait pas en compte ma requête.

    Est-ce que je l'insère mal dans ma page (voir le code initial dans mon premier message de ce sujet), au mauvais endroit, faut-il créer une autre requête : si oui comment ?
     
  8. K-mi-k-z
    K-mi-k-z WRInaute discret
    Inscrit:
    26 Août 2011
    Messages:
    193
    J'aime reçus:
    0
    C'est ça le problème lorsqu'on récupère des bouts de code sans aucune notion.

    Dans ton cas, ta requête et sont traitement sont fait pour une pagination, pas un affichage spécifique par page.
    En gros, tu compte le nb d'article, et tu les affiches tous à raison de x par page.

    Toi, tu cherches à afficher tous les articles pour un canton donné. Rien à voir.
     
  9. cybereco
    cybereco Nouveau WRInaute
    Inscrit:
    19 Août 2011
    Messages:
    32
    J'aime reçus:
    0
    Je ne souhaite pas devenir programmeur, mais juste mettre en place un site, alors effectivement je cherche à travers des tutos, ce qui peux m'être utile et comprendre tant ce faire se peux comment ça fonctionne.

    Je sais que mon code permet la pagination (c'était mon souhait initial), et je serai étonné qu'il ne soit pas possible de sélectionner les entrées d'une colonne selon un critère x, en affectant quelque chose dans ce code.
     
  10. cybereco
    cybereco Nouveau WRInaute
    Inscrit:
    19 Août 2011
    Messages:
    32
    J'aime reçus:
    0
    Cette réalisation était réalisable effectivement.

    Voilà ce qu'il fallait faire ci-dessous. Merci à tous ceux qui ont tenté de m'apporter leur aide.
    Code:
    $canton = 'achards';
       $sql = "SELECT COUNT(id) as nbArt FROM news WHERE canton = '$canton'";
       $req = mysql_query($sql) or die(mysql_error());
       $data = mysql_fetch_assoc($req);
          
       $nbArt = $data['nbArt'];
       $perPage = 2;
       $nbPage = ceil($nbArt/$perPage);
       $cPage = 1;
       
       if(isset($_GET['p']) && $_GET['p']>0 && $_GET['p']<=$nbPage){
       $cPage = $_GET['p'];
       }   
       {   
       $sql = "SELECT * FROM news WHERE canton = '$canton' ORDER BY id DESC LIMIT ".(($cPage-1)*$perPage).",$perPage";
       $req = mysql_query($sql) or die(mysql_error());
       while($data = mysql_fetch_assoc($req)){
     
  11. K-mi-k-z
    K-mi-k-z WRInaute discret
    Inscrit:
    26 Août 2011
    Messages:
    193
    J'aime reçus:
    0
    Y a toujours ces 2 accolades ouverte en début et fin de requête qui sont étranges...
     
  12. cybereco
    cybereco Nouveau WRInaute
    Inscrit:
    19 Août 2011
    Messages:
    32
    J'aime reçus:
    0
    Si j'enlève ces 2 accolades, les articles ne s'affichent plus. Pourquoi, je n'en sais rien du tout. Par contre avec, j'ai désormais exactement ce que je souhaitais.
     
  13. K-mi-k-z
    K-mi-k-z WRInaute discret
    Inscrit:
    26 Août 2011
    Messages:
    193
    J'aime reçus:
    0
    Donc, le bout de code que tu nous a filé est incomplet et que les accolades servent à autre chose.
     
  14. zeb
    zeb WRInaute accro
    Inscrit:
    5 Décembre 2004
    Messages:
    12 021
    J'aime reçus:
    1
    en fait il n'y en a qu'une en trop si le code est complet :

    if(isset($_GET['p']) && $_GET['p']>0 && $_GET['p']<=$nbPage){
    $cPage = $_GET['p'];
    }
    {

    celle en rouge.

    et : if(isset($_GET['p']) && $_GET['p']>0 && $_GET['p']<=$nbPage) devrait pouvoir correspondre a ça :
    if($_GET['p']>0 && $_GET['p']<=$nbPage)
     
  15. K-mi-k-z
    K-mi-k-z WRInaute discret
    Inscrit:
    26 Août 2011
    Messages:
    193
    J'aime reçus:
    0
    ... et celle tout à la fin ;-)
     
  16. cybereco
    cybereco Nouveau WRInaute
    Inscrit:
    19 Août 2011
    Messages:
    32
    J'aime reçus:
    0
    Voila tout le code au complet.
    Code:
    <?php
       
       /*
       Connexion à   la BDD
       */
       require "connect.php";
       mysql_connect($adresse, $nom, $motdepasse);
       mysql_select_db($database);
       
       $canton = 'achards';
       $sql = "SELECT COUNT(id) as nbArt FROM news WHERE canton = '$canton'";
       $req = mysql_query($sql) or die(mysql_error());
       $data = mysql_fetch_assoc($req);
          
       $nbArt = $data['nbArt'];
       $perPage = 2;
       $nbPage = ceil($nbArt/$perPage);
       $cPage = 1;
       
       if(isset($_GET['p']) && $_GET['p']>0 && $_GET['p']<=$nbPage){
       $cPage = $_GET['p'];
       }   
       {   
       $sql = "SELECT * FROM news WHERE canton = '$canton' ORDER BY id DESC LIMIT ".(($cPage-1)*$perPage).",$perPage";
       $req = mysql_query($sql) or die(mysql_error());
       while($data = mysql_fetch_assoc($req)){
                
                ?>   
     
Chargement...
Similar Threads - Double requêtes SQL Forum Date
WordPress Urls en double dans sitemap.xml Crawl et indexation Google, sitemaps 17 Octobre 2022
Comme gérer les pages avec une double redirection ? Crawl et indexation Google, sitemaps 14 Octobre 2022
Search Console Page d'accueil en double dans search controle Débuter en référencement 6 Mai 2022
Double canonical sur site concurrent suite pillage de contenu Référencement Google 21 Mars 2022
Page en double : l'URL envoyée n'a pas été sélectionnée comme URL canonique Référencement international (langues, pays) 2 Avril 2021
Page en double : l'URL envoyée n'a pas été sélectionnée comme URL canonique Problèmes de référencement spécifiques à vos sites 24 Février 2021
Impact SEO d'un site à double entrée Développement d'un site Web ou d'une appli mobile 20 Janvier 2021
Search Console URL Alien pour pages en double Problèmes de référencement spécifiques à vos sites 19 Décembre 2020
Search Console Page en double : l'URL envoyée n'a pas été sélectionnée comme URL canonique Problèmes de référencement spécifiques à vos sites 4 Septembre 2020
Pages vues en double Google Analytics 29 Juin 2020
A quoi sert Google Ad manager, ad exchange, doubleclick... ? AdSense 13 Mars 2020
Interdire l'indexation d'url interne en double Référencement Google 7 Janvier 2020
Problème sur une source Referral Googleads.g.doubleclick.net Google Analytics 7 Novembre 2019
Auto entrepreneur et double activité Droit du web (juridique, fiscalité...) 31 Octobre 2019
Doit on doubler un mot composé dans URL ? Rédaction web et référencement 20 Octobre 2019
Search Console Page en double sans URL canonique sélectionnée par l'utilisateur? Crawl et indexation Google, sitemaps 1 Octobre 2019
Search Console Page en double sans URL canonique sélectionnée par l'utilisateur Crawl et indexation Google, sitemaps 5 Août 2019
Search Console Titres et descriptions en double dans la nouvelle search console Google : l'entreprise, les sites web, les services 10 Avril 2019
WordPress Annonces en double (Uk+Fr) Référencement international (langues, pays) 21 Mars 2019
HTTPS, Page en double et URL canonique Crawl et indexation Google, sitemaps 21 Février 2019