Partage
  • Partager sur Facebook
  • Partager sur Twitter

Requête SQL : champ contenant plusieurs valeurs

Sujet résolu
    12 septembre 2011 à 16:38:52

    Bonjour chers collègues :D , j'ai vraiment besoin d'aide des connaisseurs en sql :lol:
    En effet, j'ai dans un formulaire un champ de type checkbox qui s'appelle pages où l'internaute peut choisir les pages sur lesquelles sa bannière va être affichée!
    Prenons par exemple qu'il a choisi 4 pages et lors de l'enregistrement j'ai une table bannière et dans cette dernière j'ai un champ page (type = "VARCHAR") qui va contenir les pages sélectionnées séparées d'espace et pas de virgule (bon je peux aussi les faire separer par un virgule ;) ) là aucun problème...
    Le problème c'est que je veux afficher la bannière sur les pages sélectionnées. alors comment faire dans la requête chercher les bannières dont dans le champ page contient le nom de la page :-° alors que le champ est de type string en plus que le champ contient aussi d'autres nom de page?!!
    je sais que je peut récupérer la chaine de caractère de la page et la mettre en array après avoir utilisé explode et puis verifier dans ce tableau qu'il n'y a pas le nom de cette page si oui afficher et sinon ne pas afficher... mais pour ce dernier cas la page s'affichera sans pub :colere2: donc la meilleur solution c'est vérifier la page lors de la requête ^^
    Merci pour votre attention à ma requête :lol:
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      12 septembre 2011 à 18:27:02

      Je pense qu'il faudrait fonctionner autrement, avec une table comme ci-dessous plutôt que de tout concaténer dans une colonne :

      create table user_page (
         id_user int not null, -- l'id de l'utilisateur
         id_page int not null  -- l'id de la page, ou son nom avec un type varchar
      );
      
      • Partager sur Facebook
      • Partager sur Twitter
        13 septembre 2011 à 9:29:11

        Salut Enax, Justement je ne veux pas créer une autre table pour les pages!! donc une tables page avec comme champ l'id_bannière et d'autres colonnes qui ont comme libellé les nom des pages!!
        Est ce que c'est pas possible avec cette méthode que j'ai proposée? o_O
        • Partager sur Facebook
        • Partager sur Twitter
          14 septembre 2011 à 11:29:20

          Je pense que je viens de résoudre mon problème!! ;) il fallait utiliser la clause LIKE dans la requête. Par exemple prenons une bannière qui va s'afficher sur 3 pages!! la valeur du champs page sera " 1 4 5 " donc respectivement 1 est l'id de la page acceuil et 4 page membres et enfin 5 page historique

          Pour l'affichage sur la page membres je dois chercher les bannières dont la valeur page a comme valeur 4...
          la requête sera
          SELECT * FROM banniere WHERE page LIKE "%4%";
          et c'est fini :-°
          • Partager sur Facebook
          • Partager sur Twitter
            14 septembre 2011 à 11:31:33

            Ou pas.

            Comment tu feras quand une de tes pages aura le numéro 14 ???

            La seule solution intellignete et correcte est celle proposée par Enax
            • Partager sur Facebook
            • Partager sur Twitter
              14 septembre 2011 à 11:53:01

              :o j'avais pas pensé à ça?!! merci Taguan!! le problème c'est que je veux mettre un script affiche_banniere.php sur chaque page qui va chercher les bannières et les afficher aléatoirement!! si je mets une autre table page donc je serais obliger de faire une recherche sur cette dernière et comme ça il me trouve les id de la bannière correspondant à la page où se trouve le script?!! o_O
              • Partager sur Facebook
              • Partager sur Twitter

              Requête SQL : champ contenant plusieurs valeurs

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown