L'exploitation de donnée

Eléphant du PHP | 174 Messages

17 juil. 2005, 20:11

Maintenant que tes tables sont crées, tu les remplies à la main avec 2-3 jeux de données, tu fais tes pages d'affichage et tu vois si ca convient et ensuite, tu fais le formulaire de saisie.
J'ai remplis manuellement mes tables, mais concernant mes tables de liaison
comment celà se passe t'il ?

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

17 juil. 2005, 20:26

quand tu ouvres un sujet, rappelle toi que ceux qui viennent dessus n'ont pas forcément suivi tes aventures depuis le début et ne savent pas forcément de quoi tu parles
alors situer un peu le contexte c'est bien

mais bon moi j'ai suivi...

quel est le problème ? pourquoi as-tu des difficultés avec des tables de liaisons ce sont des tables comme les autres

Eléphant du PHP | 174 Messages

17 juil. 2005, 20:59

La citation du premier post provient de jpl de l'ancien sujet.
donc je voulais savoir comment je devais faire pour remplir mes tables de liaisons manuellement pour faire correspondent les données ?

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

17 juil. 2005, 21:04

La citation du premier post provient de jpl de l'ancien sujet.
oui ça j'avais bien compris merci, mais justement je te dis que les gens qui viennent sur ce sujet ne savent pas forcément qu'il y en a un autre
donc je voulais savoir comment je devais faire pour remplir mes tables de liaisons manuellement pour faire correspondent les données ?
bah c'est plutôt simple, si t'as enregistré un concours qui a l'identifiant 1, et que tu veux lui associer le mode "téléphonie" qui a l'id 2, ben tu inserts une ligne 1,2 dans concours_mode

Eléphant du PHP | 174 Messages

17 juil. 2005, 21:31

Ok,
Ensuite
comment extraire les données de la base ? pour les affichés
j'ai commencé à faire un fichier mais il manque des parametres
mysql_connect("localhost","root","") or die ("Impossible de se connecter à MySQL");
mysql_select_db("bconcours") or die("Impossible de sélectionner la base de données");
$query_string="SELECT `concours`.*, `bandes`.*
FROM concours, bandes";
$query=mysql_query($query_string);

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

17 juil. 2005, 21:39

va faire un tour ici : http://www.phpdebutant.org/

dans la colonne de droite tu as des petits tutos très simple dans lesquels tu trouveras toutes les pistes pour faire ce que tu veux :)

Eléphant du PHP | 174 Messages

17 juil. 2005, 22:07

Voici un exemple de mon fichier :
// on se connecte à MySQL
$db = mysql_connect('localhost', 'root', '');

// on sélectionne la base
mysql_select_db('bconcours',$db);

// on crée la requête SQL
$sql = 'SELECT nom,mois,dmois,bande,mode,report,lien,info FROM concours,bandes,modes WHERE id_concours LIKE 1';

// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

// on fait une boucle qui va faire un tour pour chaque enregistrement
while($data = mysql_fetch_assoc($req))
    {
    // on affiche les informations de l'enregistrement en cours
   echo ' <i>Nom : '.$data['nom'].'</i><br>';
   echo ' <i>Mois : '.$data['mois'].'</i><br>';
   echo ' <i>Détails : '.$data['dmois'].'</i><br>'; 
   echo ' <i>Bande : '.$data['bande'].'</i><br>'; 
   echo ' <i>Mode : '.$data['mode'].'</i><br>'; 
   echo ' <i>Report : '.$data['report'].'</i><br>';  
   echo ' <i>lien : '.$data['lien'].'</i><br>';  
   echo ' <i>info : '.$data['info'].'</i><br>';  

    }

// on ferme la connexion à mysql
mysql_close();
pour afficher mon 1er enregistrement dois je utilisé les jointures ?

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

17 juil. 2005, 22:20

le premier enregistrement de quoi ???!

Eléphant du PHP | 174 Messages

17 juil. 2005, 22:23

j'ai entrée des donnée dans la base et j'arrive à les extraires mais il m'affiche tous.
je ne veux voir apparaitre que mon premier enregistrement

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

17 juil. 2005, 22:28

LIMIT x,y => affiche y enregistrement(s) à partir de l'enregistrement x

Code : Tout sélectionner

SELECT * FROM concours LIMIT 0,1

Eléphant du PHP | 174 Messages

17 juil. 2005, 22:51

ok ça fonctionne merci ouckileou.

ViPHP
pjl
ViPHP | 2119 Messages

18 juil. 2005, 17:28

on peut revoir la structure finale des tables ainsi que ta requête.

La requete que tu montre ici m'étonne beaucoup.
Il n'y a aucune condition de jointure.

Eléphant du PHP | 174 Messages

19 juil. 2005, 10:08

Voici ma base :
CREATE TABLE `bandes` (
`id_bande` smallint(5) unsigned NOT NULL auto_increment,
`bande` varchar(255) NOT NULL default '',
PRIMARY KEY (`id_bande`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=13 ;

--
-- Contenu de la table `bandes`
--

INSERT INTO `bandes` VALUES (1, '160m');
INSERT INTO `bandes` VALUES (2, '80m');
INSERT INTO `bandes` VALUES (3, '40m');
INSERT INTO `bandes` VALUES (4, '30m');
INSERT INTO `bandes` VALUES (5, '20m');
INSERT INTO `bandes` VALUES (6, '17m');
INSERT INTO `bandes` VALUES (7, '15m');
INSERT INTO `bandes` VALUES (8, '12m');
INSERT INTO `bandes` VALUES (9, '10m');
INSERT INTO `bandes` VALUES (10, '6m');
INSERT INTO `bandes` VALUES (11, '2m');
INSERT INTO `bandes` VALUES (12, '70cm');

CREATE TABLE `concours` (
`id_concours` smallint(5) unsigned NOT NULL auto_increment,
`nom` varchar(255) NOT NULL default '',
`mois` varchar(255) NOT NULL default '',
`dmois` varchar(255) NOT NULL default '',
`report` varchar(255) NOT NULL default '',
`lien` varchar(255) NOT NULL default '',
`info` varchar(255) NOT NULL default '',
PRIMARY KEY (`id_concours`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;


CREATE TABLE `concours_bande` (
`id_concours` smallint(5) unsigned NOT NULL default '0',
`id_bande` smallint(5) unsigned NOT NULL default '0',
PRIMARY KEY (`id_concours`,`id_bande`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

CREATE TABLE `concours_mode` (
`id_concours` smallint(5) unsigned NOT NULL default '0',
`id_mode` smallint(5) unsigned NOT NULL default '0',
PRIMARY KEY (`id_concours`,`id_mode`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

CREATE TABLE `modes` (
`id_mode` smallint(5) unsigned NOT NULL auto_increment,
`mode` varchar(255) NOT NULL default '',
PRIMARY KEY (`id_mode`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

--
-- Contenu de la table `modes`
--

INSERT INTO `modes` VALUES (3, 'mode digitaux');
INSERT INTO `modes` VALUES (2, 'télégraphie');
INSERT INTO `modes` VALUES (1, 'phonie');
Et la requete utiliser
$sql = 'SELECT nom,mois,dmois,bande,mode,report,lien,info FROM concours,bandes,modes LIMIT 0,1';

ViPHP
pjl
ViPHP | 2119 Messages

19 juil. 2005, 21:34

Et la requete utiliser
$sql = 'SELECT nom,mois,dmois,bande,mode,report,lien,info FROM concours,bandes,modes LIMIT 0,1';
Bon, je suis tétu, borné ou ce que l'on veut, mais quand je vois cette requête, pour moi, le PB est loin d'être résolu.
Et tant que tu n'auras pas compris la logique pour exploiter tes résultats, tu coinceras dans ton formulaire.
Alors tu te prends une dizaine de concours, tu les rentres à la main et tu vois ce que ca donne sur ta page.

Un petit résumé sur les jointures : http://www.iut.univ-st-etienne.fr/cours ... inture.htm
Modifié en dernier par pjl le 20 juil. 2005, 07:58, modifié 1 fois.

Eléphant du PHP | 174 Messages

19 juil. 2005, 22:29

Code : Tout sélectionner

SELECT * FROM concours, concours_bande, bandes WHERE concours.id_concours=concours_bande.id_concours AND concours_bande.id_bande=bandes.id_bande
Voilà ma jointure repris de :
SELECT * FROM table1, table2, table3, ...
WHERE table1.attribut1=table2.attribut1 AND table2.attribut2=table3.attribut2 AND ...;
ça doit être mieux maintenant. :wink: