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

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Suivante
Auteur Sujet :

[MySQL] Comment faire une recherche dans toute la table ?

n°247112
Dj YeLL
$question = $to_be || !$to_be;
Posté le 17-11-2002 à 18:19:11  profilanswer
 

Reprise du message précédent :

joce a écrit a écrit :

 

Code :
  1. $result = mysql_db_query($dbname, $req) or die(mysql_error());
  2. $num_res = mysql_num_rows($result);
  3. if ($num_res > 1)
  4. {
  5. while($row = mysql_fetch_array($result))
  6. {
  7. print $row['titre'].'<br />';
  8. }
  9. }
  10. else
  11. {
  12.   echo "Aucun résultat retourné";
  13. }


 




 
 :jap:


---------------
Gamertag: CoteBlack YeLL
mood
Publicité
Posté le 17-11-2002 à 18:19:11  profilanswer
 

n°247114
lorill
Posté le 17-11-2002 à 18:22:02  profilanswer
 

Citation :


Comme ça ? :
 

ID | TITRE | NOM | METIER




un truc du genre, mais a la limite dans celle la t'as pas besoin de l'id
 

Citation :

Mais si c'est ça je dois mettre quoi dedans ? Les ID ?


c'est tout l'interet de la chose. Comem ca, imagine une actrice qui change de nom, tu changes dans la table personnes, et ca se met a jour partout.
 

Citation :

Et si, comme ds mon exemple, "nom1" est "producteur" ET "acteur" je fais comment ?


2 lignes dans ta table récapitulative.

n°247123
Dj YeLL
$question = $to_be || !$to_be;
Posté le 17-11-2002 à 18:46:58  profilanswer
 

lorill a écrit a écrit :

Citation :


Comme ça ? :
 

ID | TITRE | NOM | METIER




un truc du genre, mais a la limite dans celle la t'as pas besoin de l'id
 

Citation :

Mais si c'est ça je dois mettre quoi dedans ? Les ID ?


c'est tout l'interet de la chose. Comem ca, imagine une actrice qui change de nom, tu changes dans la table personnes, et ca se met a jour partout.
 

Citation :

Et si, comme ds mon exemple, "nom1" est "producteur" ET "acteur" je fais comment ?


2 lignes dans ta table récapitulative.




 
Ok :)
 
Sinon ensuite, quel sera le code PHP qui permettera d'afficher les resultats ?
 
Il faut d'abors aller chercher les données ds la table recapitulative ? Par exemple :
 

TITRE | PERSONNE | METIER
------+----------+--------
10    |    7     |    5


 
Et ensuite faire un SELECT * FROM table_titre WHERE id="10"
et un SELECT * FROM table_personne WHERE id="7" et enfin SELECT * FROM table_metier WHERE id="5"
 
C'est ça ?


---------------
Gamertag: CoteBlack YeLL
n°247124
lorill
Posté le 17-11-2002 à 18:48:23  profilanswer
 

a moins que ton sgbd gère les requètes imbriqués (c'est le cas d'oracle et postgres, pas de mysql), oui

n°247128
mrbebert
Posté le 17-11-2002 à 18:54:29  profilanswer
 

Dj YeLL a écrit a écrit :

 
 
Ok :)
 
Sinon ensuite, quel sera le code PHP qui permettera d'afficher les resultats ?
 
Il faut d'abors aller chercher les données ds la table recapitulative ? Par exemple :
 

TITRE | PERSONNE | METIER
------+----------+--------
10    |    7     |    5


 
Et ensuite faire un SELECT * FROM table_titre WHERE id="10"
et un SELECT * FROM table_personne WHERE id="7" et enfin SELECT * FROM table_metier WHERE id="5"
 
C'est ça ?



non, surtout pas. Faut faire un jointure
SELECT *
FROM table_titre, table_personne, table_metier, t
WHERE table_titre.titre = 10
  AND t.titre = table_titre.titre
  AND table_personne.id = t.personne
  AND table_metier.id = t.metier
 
(t, c'est la table qui fait le lien)

n°247130
Dj YeLL
$question = $to_be || !$to_be;
Posté le 17-11-2002 à 18:59:47  profilanswer
 

Sinon une autre question ... si pour un film j'ai plusieurs acteurs (ce qui est un peu logique), faudra t'il mettre ça ds la table... :


TITRE | PERSONNES | METIER
------+-----------+---------
10    |    7      |    5
10    |    9      |    5
10    |    12     |    5


 
... en considrant que l'ID "5" soit le metier d'acteur ... ?
 
En gros le code devrait ressembler à ça :
 
Pour aller chercher les infos relatives au film choisi :
 
$req = 'SELECT * FROM table_recap WHERE titre="10"';
$result = mysql_db_query($req)
while($row = mysql_fetch_array($result))
{
$personnes[] = $row['personnes'];
}
 
Pour afficher les differentes infos concernant le film :
 
$req = SELECT * FROM table_personnes WHERE id=$personnes[0]
 
... euh, je m'emmele les piceaux là ... au fur et à mesure que j'ecris, je m'y perds et cela me semble trop compliqué pour etre exacte ...
 
Ya vraiment personne qui surait où trouver un genre de tutorial ou une fiche explicative pour faire ça ? Parceque j'en ai jamais fais et je suis paumé ...
 
:(


---------------
Gamertag: CoteBlack YeLL
n°247131
Dj YeLL
$question = $to_be || !$to_be;
Posté le 17-11-2002 à 19:01:22  profilanswer
 

mrbebert a écrit a écrit :

non, surtout pas. Faut faire un jointure
SELECT *
FROM table_titre, table_personne, table_metier, t
WHERE table_titre.titre = 10
  AND t.titre = table_titre.titre
  AND table_personne.id = t.personne
  AND table_metier.id = t.metier
 
(t, c'est la table qui fait le lien)




 
Oula ... ok
 
Bon je vais étudier ce que tu viens d'ecrire, je pense que je devrais comprendre ... mais je savais pas du tout qu'on pouvait faire ce genre de truc :)
 
Merci bcp


---------------
Gamertag: CoteBlack YeLL
n°247143
Dj YeLL
$question = $to_be || !$to_be;
Posté le 17-11-2002 à 19:13:09  profilanswer
 

mrbebert a écrit a écrit :

non, surtout pas. Faut faire un jointure
SELECT *
FROM table_titre, table_personne, table_metier, t
WHERE table_titre.titre = 10
  AND t.titre = table_titre.titre
  AND table_personne.id = t.personne
  AND table_metier.id = t.metier
 
(t, c'est la table qui fait le lien)




 
J'an quand meme du mal a comprendre ...
 
C'est pas plutot :
 
SELECT *
FROM table_titre, table_personne, table_metier, t
WHERE table_titre.id = 10
  AND t.titre = table_titre.id
  AND table_personne.id = t.personne
  AND table_metier.id = t.metier
 
?


---------------
Gamertag: CoteBlack YeLL
n°247145
mrbebert
Posté le 17-11-2002 à 19:13:53  profilanswer
 

oui, en effect
 
Le principe d'une jointure, c'est de regrouper les lignes de plusieurs tables.
 
Par exemple, si tu as les tables suivantes :

t1 :
Id1 | Value1
 1   | aaaaa
 2   | bbbbb
 3   | ccccc
 
t2 :
Id2 | Value2
 1   | xxxxx
 2   | yyyyy
 3   | zzzzz


La requête 'SELECT * FROM t1, t2' renverra :


Id1 | Value1 | Id2 | Value2
 1   | aaaaa  |  1  | xxxxx
 1   | aaaaa  |  2  | yyyyy
 1   | aaaaa  |  3  | zzzzz
 2   | bbbbb  |  1  | xxxxx
 2   | bbbbb  |  2  | yyyyy
 2   | bbbbb  |  3  | zzzzz
 3   | ccccc  |  1  | xxxxx
 3   | ccccc  |  2  | yyyyy
 3   | ccccc  |  3  | zzzzz


Chaque ligne de chaque table est concaténée avec chaque ligne des autres tables.
Ca peut aboutir à un résultat avec beaucoup de lignes.
Généralement, ca a un intérêt uniquement en utilisant le 'WHERE' pour garder les lignes qui vont bien ensemble.


Message édité par mrbebert le 17-11-2002 à 19:21:26
n°247156
Dj YeLL
$question = $to_be || !$to_be;
Posté le 17-11-2002 à 19:36:41  profilanswer
 

Bon, je recapitule ...
 
Admettons qu'on ai les tables suivantes :
 


table_titre :
 
id | titre
---+------
1  | xxxxx
...|  ...
10 | Superman
...|  ...
25 | xxxxxx


 


table_personnes :
 
id | personnes
---+----------------
1  | xxxxx
...|  ...
7  | Paul Hochon
8  | Marc Avenue
...|  ...
12 | Julie Danlépensé


 


table_metier :
 
id | metier
---+------------
1  | xxxxx
...|  ...
5  | Acteur
...|  ...
9  | xxxxx


 


table_recap :
 
titre | personne | metier
------+----------+--------
10    |     7    |    5
10    |     8    |    5
10    |     12   |    5


 
Maintenant je suppose qu'il me faut un lien "Superman" qui ressemble à ça :
 
<a href="mapage.php?id=10">Superman</a>
 
puis sur la page "mapage.php" il me faut un genre de code comme ça :
 

SELECT * FROM table_titre, table_personne, table_metier, table_recap  
WHERE table_titre.id = $id
 AND table_recap.titre = table_titre.id
 AND table_personne.id = table_recap.personne
 AND table_metier.id = table_recap.metier


 
C bien ça ?
 
Et pour les afficher ?
 
Je fais comment ?


---------------
Gamertag: CoteBlack YeLL
mood
Publicité
Posté le 17-11-2002 à 19:36:41  profilanswer
 

n°247157
Dj YeLL
$question = $to_be || !$to_be;
Posté le 17-11-2002 à 19:37:48  profilanswer
 

mrbebert a écrit a écrit :

oui, en effect
 
Le principe d'une jointure, c'est de regrouper les lignes de plusieurs tables.
 
Par exemple, si tu as les tables suivantes :

t1 :
Id1 | Value1
 1   | aaaaa
 2   | bbbbb
 3   | ccccc
 
t2 :
Id2 | Value2
 1   | xxxxx
 2   | yyyyy
 3   | zzzzz


La requête 'SELECT * FROM t1, t2' renverra :


Id1 | Value1 | Id2 | Value2
 1   | aaaaa  |  1  | xxxxx
 1   | aaaaa  |  2  | yyyyy
 1   | aaaaa  |  3  | zzzzz
 2   | bbbbb  |  1  | xxxxx
 2   | bbbbb  |  2  | yyyyy
 2   | bbbbb  |  3  | zzzzz
 3   | ccccc  |  1  | xxxxx
 3   | ccccc  |  2  | yyyyy
 3   | ccccc  |  3  | zzzzz


Chaque ligne de chaque table est concaténée avec chaque ligne des autres tables.
Ca peut aboutir à un résultat avec beaucoup de lignes.
Généralement, ca a un intérêt uniquement en utilisant le 'WHERE' pour garder les lignes qui vont bien ensemble.




 
Ok :)


---------------
Gamertag: CoteBlack YeLL
n°247161
Dj YeLL
$question = $to_be || !$to_be;
Posté le 17-11-2002 à 19:41:16  profilanswer
 

mrbebert a écrit a écrit :

oui, en effect
 
Le principe d'une jointure, c'est de regrouper les lignes de plusieurs tables.
 
Par exemple, si tu as les tables suivantes :

t1 :
Id1 | Value1
 1   | aaaaa
 2   | bbbbb
 3   | ccccc
 
t2 :
Id2 | Value2
 1   | xxxxx
 2   | yyyyy
 3   | zzzzz


La requête 'SELECT * FROM t1, t2' renverra :


Id1 | Value1 | Id2 | Value2
 1   | aaaaa  |  1  | xxxxx
 1   | aaaaa  |  2  | yyyyy
 1   | aaaaa  |  3  | zzzzz
 2   | bbbbb  |  1  | xxxxx
 2   | bbbbb  |  2  | yyyyy
 2   | bbbbb  |  3  | zzzzz
 3   | ccccc  |  1  | xxxxx
 3   | ccccc  |  2  | yyyyy
 3   | ccccc  |  3  | zzzzz


Chaque ligne de chaque table est concaténée avec chaque ligne des autres tables.
Ca peut aboutir à un résultat avec beaucoup de lignes.
Généralement, ca a un intérêt uniquement en utilisant le 'WHERE' pour garder les lignes qui vont bien ensemble.




 
 
Mais alors dans le cadre de mon exemple cité au dessus, la requete
 

SELECT * FROM table_titre,table_personne,table_metier,table_recap  ....


 
ca va donner ça :
 

ID | TITRE | ID | PERSONNE | ID | METIER | TITRE | PERSONNE | METIER


 
non ?


---------------
Gamertag: CoteBlack YeLL
n°247162
mrbebert
Posté le 17-11-2002 à 19:44:13  profilanswer
 

oui
Mais tu peux limiter dans le SELECT les colonnes qui t'intéressent. Tu n'as pas forcément besoin de toutes les récupérer.
Tu peux même les renommer pour éviter les doublons :
SELECT table_titre.titre AS TitreFilm, table_personne.personne AS Nom, ......
 
Ensuite, tu parcours le résultat comme un select normal, avec mysql_fetch_array().

n°247164
Dj YeLL
$question = $to_be || !$to_be;
Posté le 17-11-2002 à 19:46:09  profilanswer
 

Pfiouuuu ... eh beh ...
 
 
En tout cas je te remercie de tout le mal que tu t'ai donné pour m'expliquer tout ça :)
 
Je pense que j'ai a peu pres compris, il ne me reste plus qu'a faire des tests :)
 
Encore merci mille fois !
 
P.S. : Je dois envoyer le chèque à quelle adresse ? :D


---------------
Gamertag: CoteBlack YeLL
n°247617
Dj YeLL
$question = $to_be || !$to_be;
Posté le 18-11-2002 à 14:39:49  profilanswer
 

Bon, j'abandonne ... c'est clair que le système est pas mal mais pour ce que moi je suis en train de faire, ç va pas ... c'est trop le bordel, c'est censé simplifier les choses mais la, ça les complique trop.
 
D'accord je vais avoir une table titre avec tous mes titres dedans, d'accord je vais avoir une table personnes avec toutes mes personnes dedans etc...
 
Mais pour faire un code qui, lorsqu'on va tapper par exemple www.monsite.com/affiche.php?titre=18, va m'afficher une page avec le titre, puis le producteur, puis les realisateurs, puis un tableau avec ds la colonne de gauche les roles et ds la colonne de droite les personnes attachées à ces roles, puis le type de ce titre (series, DA, manga, film etc...), puis l'année de debut et de fin ... en plus chaque personnage aura un lien qui enmmene le navigateurs vers une page de recherche montrant tout ce que cette personne à réalisé (ou créé, ou a joué dans... etc...) En plus pour chaque titre il y a une histoire, le nombre d'episodes qu'il y a eu, les personnes qui on t fais le doublage en français (pareil que pour les acteuds, tableau avec role ds la colonne de droite et doubleur dans la colonne de gauche), des liens etc...
 
De plus, comment faire pour avoir un formulaire qui me permettera d'entrer les infos correctement ... en fait il va me falloir un formulaire pour entrer tous les titres ? et un autres formulaire pour entrer tous les personnages ? etc... ?
 
Enfin bref, je suis pas sur de pouvoir y arriver, c'est trop compliqué ... j'ai reussi a faire ce que vou sm'avez dis, mais c'est bien quand il n'y a pas beaucoup d'infos differentes ... la avec toutes les infos que je dois entrer, je sais pas comment faire.


---------------
Gamertag: CoteBlack YeLL
n°247638
Fred999
Rabat-joie
Posté le 18-11-2002 à 14:59:47  profilanswer
 

Justement, ça t'évite de devoir saisir les données en double!
 
Quant au formulaire, le plus dur, c'est de faire le premier, ensuite, c'est du copier-coller... voire mieux si tu réfléchis bien à ton code ;)


Message édité par Fred999 le 18-11-2002 à 15:00:35
n°247653
Dj YeLL
$question = $to_be || !$to_be;
Posté le 18-11-2002 à 15:08:26  profilanswer
 

Fred999 a écrit a écrit :

Justement, ça t'évite de devoir saisir les données en double!
 
Quant au formulaire, le plus dur, c'est de faire le premier, ensuite, c'est du copier-coller... voire mieux si tu réfléchis bien à ton code ;)




 
Ouais mais déjà je sais pas ce qu'il me faut comme table ... dans la table recap je mets quoi ? que titre, personne et metier ? C'est tout ? Et l'histoire, le nombre d'episodes etc... je les mets où ? dans la table titre ? quand au ormulaire, je ne vois vraiment pas comment faire ... si j'ai 5 artistes par exemple, comment je fais ? Il me faut 1 formulaire par table ?


---------------
Gamertag: CoteBlack YeLL
n°247675
gm_superst​ar
Appelez-moi Super
Posté le 18-11-2002 à 15:17:16  profilanswer
 

Dj YeLL a écrit a écrit :

Ouais mais déjà je sais pas ce qu'il me faut comme table ... dans la table recap je mets quoi ? que titre, personne et metier ? C'est tout ? Et l'histoire, le nombre d'episodes etc... je les mets où ? dans la table titre ?



Si tu as une correspondance de une histoire pour un titre (idem pour le nombre d'épisodes) tu peux mettre tout ça dans la table titre.

Dj YeLL a écrit a écrit :

quand au ormulaire, je ne vois vraiment pas comment faire ... si j'ai 5 artistes par exemple, comment je fais ?



Tu fais un formulaire pour les artistes, mais tu posteras 5 fois :D

Dj YeLL a écrit a écrit :

Il me faut 1 formulaire par table ?



C'est plus sage, car j'imagine que tes tables n'ont pas les même structures (pas les mêmes colonnes, les mêmes types, etc...)


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
n°247680
Fred999
Rabat-joie
Posté le 18-11-2002 à 15:19:27  profilanswer
 

Dj YeLL a écrit a écrit :

 
 
Ouais mais déjà je sais pas ce qu'il me faut comme table ... dans la table recap je mets quoi ? que titre, personne et metier ? C'est tout ? Et l'histoire, le nombre d'episodes etc... je les mets où ? dans la table titre ? quand au ormulaire, je ne vois vraiment pas comment faire ... si j'ai 5 artistes par exemple, comment je fais ? Il me faut 1 formulaire par table ?




 
Liste TOUTES les données dont tu as besoin, je suis sûr qu'on va t'ordonner ça vite fait bien fait :D

n°247697
Dj YeLL
$question = $to_be || !$to_be;
Posté le 18-11-2002 à 15:34:17  profilanswer
 

Bon, voici toutes les données dont j'ai besoin :
 

Titre
Année de production
Créateur (Auteur)
Producteurs
Scénaristes
Déssinateurs
Réalisateurs
Acteurs (ou Voix Originales pour les DA)
Histoire (Synopsis)
Nbre d'episodes
Titre original
Voix Française
Divers (un texte d'infos supplémentaire)
Ressources (ce sont des liens vers d'autres site traitant du titre en cours)


 
Voila, je crois que c'est tout. Mais voici comment doit se présenter les parties Acteurs et Voix Française :
 

Role   | Acteurs/Voix Originale
-------+-----------------------
Albator| Richard Maverick
Toto   | Michael Powel
etc...
 
Role   | Voix Française
-------+----------------
Albator| Paul Hochon
Toto   | Jean Dugland
etc...


 
Voila


---------------
Gamertag: CoteBlack YeLL
n°247732
Fred999
Rabat-joie
Posté le 18-11-2002 à 16:10:18  profilanswer
 

Tu as donc les tables :
 

  • une pour les films, avec les champs :

- identifiant (pk)
- Titre
- Année de production
- Histoire (Synopsis)
- Nbre d'episodes
- Titre original
- Divers (un texte d'infos supplémentaire)
- Ressources (ce sont des liens vers d'autres site traitant du titre en cours)
 

  • Une pour les types de personnes, avec les champs :

- identifiant (pk)
- libellé
 
Là-dedans, tu mettras "créateur", "producteur", etc.
 

  • Une poru les personnes, avec les champs :

- identifiant (pk)
- nom
 

  • Une pour faire le lien, avec les champs :

- id du film
- id ressource
- id personne
 

  • Une pour les rôles :

- id du film
- nom rôle
- id personne VO
- id personne VF
 
Tu auras les formulaires suivants :
 
- création d'un film
- création d'une personne
- gestion des types de personnes (facultatif, si c'est relativement fixe tu le rentres direct en base...)
- association film/personne : liste des films, liste des personnes, liste des types, un bouton OK, et, quand tu cliques, tu crées une ligne dans la table d'association ;)
 
Après, avec des jointures, tout va bien! :)

n°247736
Dj YeLL
$question = $to_be || !$to_be;
Posté le 18-11-2002 à 16:12:56  profilanswer
 

ok ... bon ben j'essayerais tout ça demain ... j'ai perdu ma motivation la ... jvé me planter devant la TV :D
 
Encore merci :)


---------------
Gamertag: CoteBlack YeLL
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
MYSQL: la question con du jour...PHP MyAdmin et MySQL
Je recherche un comparatif entre PostgreSQL et Oraclenouvelle en mysql, besoin de tuto pour les debutants .... merci à tous
Connexion sécurisée SSL entre un prog C++ et une base MySQLacceder a un mysql sous linux a partir d'une appli java sous windows
Erreur Mysql toute bete mais je blok[PHP] Probleme avec MySql: Erreur que je n'arrive pas à résoudre
je recherche unediteur C sous linuxRecherche dans une table MYSQL
Plus de sujets relatifs à : [MySQL] Comment faire une recherche dans toute la table ?


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