Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2935 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Afficher ce qui n'existe pas dans la BDD

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Afficher ce qui n'existe pas dans la BDD

n°1966974
lofo7
Posté le 17-02-2010 à 18:32:23  profilanswer
 

Bonjour,
le sujet peut paraître saugrenu donc je m'explique.
 
J'ai ma base de données (MySQL) avec des enregistrements qui correspondent aux albums de bandes dessinées que je possèdent.
Par exemple, pour telle série de BD, j'ai les albums :
1 2 3 4 6 7 9 10 12
sur 15 albums.
 
J'aimerais faire une requête qui m'affiche les albums que je n'ai pas. Dans mon exemple, vu que j'ai 15 albums, j'aimerais que ça m'affiche donc :
5 8 11 12 13 14 15
 
Cela pour faciliter mes futurs achats.
J'ai créé un champ dans la BDD qui indique le nombre d'albums existants. Reste plus qu'à faire la requête mais je coince.
 
P.S. : j'ai placé ce message dans la catégorie PHP car peut-être que pour arriver à mes fins, quelques lignes php seront nécessaires.
 
Merci pour votre aide !
 
Maxime


Message édité par lofo7 le 17-02-2010 à 19:20:30
mood
Publicité
Posté le 17-02-2010 à 18:32:23  profilanswer
 

n°1966979
aideinfo
Posté le 17-02-2010 à 19:43:09  profilanswer
 

Tu fais une boucle sur les albums que tu as, et tu parcours ta liste en faisant une boucle dont la limite est le nb d'albums, et si l'abum n'est pas dans ta liste, tu affiches le numéro.


---------------
http://www.aideinfo.com/  Whois adresses IP/domaines le plus évolué !!  FAQ Free Mobile
n°1966985
lofo7
Posté le 17-02-2010 à 20:24:22  profilanswer
 

Ok pour la première partie de ta réponse. Jusque "en faisant une boucle dont la limite est le nb d'albums" ça va.
 
Mais pour la suite, j'utilise quel fonction ?

n°1966987
NewsletTux
<Insérez ici votre vie />
Posté le 17-02-2010 à 20:35:10  profilanswer
 

le pb c'est en cas de nouvel album ...
 
je m'explique. Aujourd'hui la collection "lambda" a 5 ouvrages : 1 - 2 - 3 - 4 - 5. Tu as les 1, 3, 4 et 5 (donc il ne te manque que le 2) : super. Mais si demain le n°6 sort, ton outil ne te dira pas que tu ne l'as pas ...
 
 
Si tu veux tout de même travailler avec la solution de "aideinfo" tu rapatries les albums que tu as dans un tableau, par exemple :

Code :
  1. $array_albums = array();
  2. while($album = mysql_fetch_array($albums))
  3. {
  4.     $array_albums[] = $album['id'];
  5. }


 
A ce niveau, $array_albums contiendra 1, 3, 4, 5.
On supposera alors que le dernier numéro sera le plus grand élément.
 

Code :
  1. $dernier_numero = max($array_albums);


 
Maintenant tu n'as plus qu'à faire une boucle pour savoir quels numéros sont manquants :

Code :
  1. for($a = 1; $a <= $dernier_numero; $a++)
  2. {
  3.     if (!in_array($a, $array_albums))
  4.     {
  5.         echo sprintf("L'album %d est manquant !<br>", $a);
  6.     };
  7. };


 
 
L'autre solution que je te propose est de faire une table albuls avec la quantité (par défaut zéro)
 
en clair, tu aurais qqch du style
ID   album   quantité
1    alpha     1
2    beta      0
3    gamma   1
4    delta     1
5    epsilon   1
 
Et il te suffit alors de faire une requête sur t table WHERE quantite='0'
 
Avantage : lorsque tu ajoutes un album, la quantité est d'office à zéro.
(contrairement à l'autre solution où le dernier album supposé est le dernier que tu as déclaré ...)
 


---------------
NewsletTux - outil de mailing list en PHP MySQL
n°1966993
lofo7
Posté le 17-02-2010 à 21:01:07  profilanswer
 

En fait, je n'avais précisé dans mon premier message que j'avais déjà la quantité d'albums sortis insérée dans une de mes tables. J'ai donc pu l'utiliser avec ta méthode.
 
Merci beaucoup, tout marche très bien ! :)
Maxime

n°1967078
NewsletTux
&lt;Insérez ici votre vie /&gt;
Posté le 18-02-2010 à 09:47:51  profilanswer
 

Autrement, il y a une solution qui pourrait être encore mieux, celle d'avoir une table avec les albums, et une autre avec ceux que tu possèdes. Et puis tu fais une requête SELECT id_album FROM latable WHERE id_album NOT IN (SELECT id from albums_possedes WHERE collection='lambda');


---------------
NewsletTux - outil de mailing list en PHP MySQL

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Afficher ce qui n'existe pas dans la BDD

 

Sujets relatifs
afficher plusieurs éléments en une seule boucleExiste-t-il un script JS pour modifier le code source d'une page html?
Mysql : copier un champ vers un autre sauf s'il existe déjàAfficher des statistiques sous forme de graphe
Existe-t-il un logiciel pour analyser une source ?Cacher/afficher id proprement
Problème pour afficher une image en PHPafficher images ds certains div / choix bouton php
A quoi sert de mettre un prefix aux tables dans une BDD[Site internet & BDD] Quels besoins?
Plus de sujets relatifs à : Afficher ce qui n'existe pas dans la BDD


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR