Merci encore pour vos réponses, je suis perdu de chez perdu
Nolem a écrit :
Cependant, je te conseille grandement de regarder le tut de Jerome A afin de mieux comprendre cette bonne pratique. Tu le trouveras en cherchant dans les cours d'Alsacreations.
Il s'agit du tuto intitulé "Gérer les erreurs MySQL en PHP sans or die" ?
Nolem a écrit :
Ta table tournois devrait avoir à peu près cette figure là :
CREATE TABLE tournois(
id_tournois INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
libelle TEXT NOT NULL,
date_tournois DATE NOT NULL,
nb_place TINYINT(32) NOT NULL,
id_lieu INT NOT NULL,
# etc.
CONSTRAINT `FK_lieu_tournois_id_lieu` FOREYGN KEY (id_lieu) REFERENCES lieu_tournois(id_lieu) ON DELETE CASCADE ON UPDATE CASCADE,
# etc.
);
CREATE TABLE lieu_tournois (
id_lieu INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
lieu VARCHAR(128) NOT NULL
);
Nolem la date est nécessaire pour identifier le tournoi c'est ça ? Il faut que je rajoute un champ date dans mon formulaire donc ? Dans les tables que tu as crée je note un certain "CONSTRAINT" ça sert à lier les tables entre elles ?
Dans phpmyadmin lors de la création d'une table "CONSTRAINT" se définit comment ?
En fait je n'ai crée que deux tables, une table
modtournoi_inscriptions et une table
modtournoi_tournois. J'ai utilisé le préfixe
modtournoi_ pour désigner "module tournoi". Je vais peut-être retiré ce préfixe, car ça perd en lisibilité ?
Je n'ai pas crée de table
participants car utilisant un forum phpBB, je me sert des sessions du forum, les membres du forum sont ainsi potentiellement des participants aux tournois. Il leur suffit juste de s'inscrire au tournoi de leur choix.
Voici les tables que j'ai crée :
CREATE TABLE `modtournoi_tournois` (
`id_tournoi` int(9) NOT NULL auto_increment,
`libelle` text collate latin1_german2_ci NOT NULL,
`lieu` varchar(100) collate latin1_german2_ci NOT NULL,
`nb_places` varchar(3) collate latin1_german2_ci NOT NULL,
KEY `id_tournoi` (`id_tournoi`)
) ENGINE=MyISAM AUTO_INCREMENT=13 DEFAULT CHARSET=latin1 COLLATE=latin1_german2_ci AUTO_INCREMENT=13 ;
CREATE TABLE `modtournoi_inscriptions` (
`id_participants` mediumint(9) NOT NULL auto_increment,
`id_tournoi` varchar(5) collate latin1_german2_ci NOT NULL,
`inscr_prenom` varchar(80) collate latin1_german2_ci NOT NULL,
`inscr_pseudoFORUM` varchar(80) collate latin1_german2_ci NOT NULL,
`inscr_joueur` varchar(80) collate latin1_german2_ci NOT NULL,
`inscr_dispo_journaliere` varchar(200) collate latin1_german2_ci NOT NULL,
`inscr_dispo_horaire` varchar(200) collate latin1_german2_ci NOT NULL,
`inscr_email` varchar(100) collate latin1_german2_ci NOT NULL,
KEY `id` (`id_participants`)
) ENGINE=MyISAM AUTO_INCREMENT=67 DEFAULT CHARSET=latin1 COLLATE=latin1_german2_ci AUTO_INCREMENT=67 ;
Concernant les images en fait je n'ai pas nommé mes images : image1, image2, image3, image4, c'était à titre d'exemple

. J'ai leur ai donné le nom : logo_rolandgarros.png, logo_usopen.png, logo_wimbledon.png, logo_openaustralie.png. Dans mon formulaire j'ai assigné une valeur numérique à chaque image, pensant pouvoir récupérer cette valeur dans ma table et ainsi ré-afficher l'image dans mon tableau HTML.
Voici la partie concernant les images dans mon formulaire :
<dl>
<dt><label for="lieu">Lieu du tournoi : </label></dt>
<dd><input name="lieu" type="radio" value="1" />
<img src="../images/logo_openaustalie.png" width="45" height="45" align="absmiddle" /><label for="openaustralie"> Open d'Australie</label></dd>
<dd><input name="lieu" type="radio" value="2" />
<img src="../images/logo_rolandgarros.png" width="45" height="45" align="absmiddle" /><label for="rolandgarros"> Roland Garros</label></dd>
<dd><input name="lieu" type="radio" value="3" />
<img src="../images/logo_usopen.png" width="45" height="45" align="absmiddle" /><label for="usopen"> US Open</label></dd>
<dd><input name="lieu" type="radio" value="4" />
<img src="../images/logo_wimbledon.png" width="45" height="45" align="absmiddle" /><label for="wimbledon"> Wimbledon</label></dd>
</dl>
Heyoan a écrit :
Par exemple le nom de l'image devrait se trouver dans la table tournoi : cela n'a aucun sens de refaire un test dans le code PHP... Ensuite, si l'image ne s'affiche pas c'est que le code html généré est faux (chemin vers l'image) : il suffit d'afficher la source de la page pour voir ce qui ne va pas.
Ce qui veut dire que je dois mettre comme valeur le nom de mes images et non des chiffres ? (1, 2, 3 ou 4) ?
Nolem a écrit :
$sql = "SELECT nb_place FROM tournois WHERE id_tournois=1";
$resultat = mysql_query($sql) or die ('Erreur : '.mysql_error()); //mauvaise pratique !
$nb_places_disponibles = mysql_fetch_row($resultat);
$sql = "SELECT COUNT(*) AS inscrit FROM inscription WHERE id_tournois=1";
$resultat = mysql_query($sql) or die ('Erreur : '.mysql_error()); //mauvaise pratique !
$nb_participants_inscris = mysql_fetch_row($resultat);
//conditionnel ternaire
echo ($nb_participants_inscris[0]<$nb_places_disponibles)? $nb_participants_inscris[0] : "mon_chemin/image_incription_complet.png";
Je remarque, dans le code ci-dessus : "nb_participants_inscris" et "nb_places_disponibles", ce sont des champs qui doivent appartenir à quelle table ? Sachant que je n'ai pas crée de table
participants, comment dois-je faire ?
Oula, je vous embête, et du coup je suis un peu perdu

. Moi qui pensait que c'était plus simple et qu'avec mes petites connaissances je pouvais m'en sortir, mais finalement c'est bien plus compliqué que je ne le pensais.
J'ai le pressentiment que je vais devoir tout reprendre à zéro, en commençant par la réorganisation de mes tables

.
Modifié par draklane (13 Jul 2009 - 16:04)