Page 1 sur 6

Créer une base pour des evenements sportifs

Posté : 08 sept. 2014, 12:06
par d0uz3
Bonjour a vous,
je m'explique.. j'ai crée une page sur excel, qui recense tous mes joueurs potentiels pour faire des matchs de foot, et ce en fonction de leurs dispos ( midis ou soirs )
j'aimerais, passer cette base en sql, afin que tout soit géré dynamiquement, en gros, que lorsque j'ajoute une date d'evenement, je précise ( via une checkbox ) si je veux que ce soit le midi ou le soir, et qu'automatiquement, ca me donne les joueurs qui sont rangés dans ' midis ' / ' soirs ' ou les 2.

Aussi ensuite, lorsque cette liste s'affiche, pouvoir cocher si ils sont ' OK ' / ' PAS DISPO ' / ' EN ATTENTE DE REPONSE '

Ainsi en dessous de ce listing, avoir affiché ' X OK ' / ' X PAS DISPOS ' / ' X ATTENTE DE REPONSES '

J'ai chiné a droite a gauche, des idées pour la réalisation de ce bout de code, mais en vain, mes connaissances en php etant minces, je fais appel a vous savoir si quelqu'un a déja réalisé cela, ou une voie sur laquelle me mettre.

Dans l'attente de voir vos idées fuser :)

Re: Créer une base pour des evenements sportifs

Posté : 08 sept. 2014, 12:30
par Kal747
Pour créer une base tu devrais plutôt regarder du coté de SQL.

Essayes de poster une capture d'écran de ton fichier Excel (les colonnes) pour que l'on ai une meilleure idée. Je pourrais te faire la traduction en SQL.

Ensuite nous travaillerons l'élaboration de ta page.

Re: Créer une base pour des evenements sportifs

Posté : 08 sept. 2014, 13:36
par d0uz3
Voici une partie de mon fichier excel, on y voit la liste des joueurs, leurs dispos.
Image
Et ensuite en fonction des evenements, en vert si OK, en rouge si NOK et en bleu si annulé, en blanc c'est que j'ai pas proposé parce que j'avais le compte..

En bas des evenements, on voit que j'atteint mon total ( j'en veux au moins 12.. ) et du coup j'aimerais qu'automatiquement ca ajoute les NOK et les annulés et en attente. ( mais bon une fois qu'une select OK from db.. sera faite, je saurais réecrire pour les autres )

j'ai piqué quelques sources, mais me manque des connaissances pour tout faire communiquer...

Code : Tout sélectionner

<form method='POST' action='add_player.php'> <input type="text' name='players' value=''><br> <input type='checkbox' name='Midis' value='midis'><br> <input type='checkbox' name='Soirs' value='soirs'> <br><input type='submit' name='submit' value='Ajouter'> </form>

Code : Tout sélectionner

<form method='POST' action='add_event.php'> <table border="1"> <tr> <td width=''>Joueurs</td> <td width=''>Dispo</td> <td width=''>Indispo</td> <td width=''>En attente</td> <td width=''>Annulé</td> </tr> < ? $db = mysql_connect('localhost', 'login', 'password') or die('<font color=red>Désolé mais vous ne pouvez voir les infos de la data-base</font>'); mysql_select_db('nomdelabase',$db); $query="Select * from urban" ; $result = mysql_query( $query )or exit ('Erreur SQL !'.$query.'<br>'.mysql_error()); while($data = mysql_fetch_array($result)) { echo"<tr><td>".$data['players']."</td>"; echo"<td><input type='checkbox' name='Dispo' value='Dispo'></td>"; echo"<td><input type='checkbox' name='Indispo' value='Indispo'></td>"; echo"<td><input type='checkbox' name='En Attente' value='En_attente'></td>"; echo"<td><input type='checkbox' name='Annulé' value='Annule'></td>"; echo"<td><input class="bouton" name="Ajouter" value="Ajouter" type="submit"></td>"; echo"</tr>"; } mysql_close(); ?> </form> </table>
et la db sql devrait etre dans ce style je pense.. :

Code : Tout sélectionner

CREATE TABLE players ( id int NOT NULL auto_increment, nb_match varchar (5) NOT NULL, Dispo varchar(5) NOT NULL, Indispo varchar(5) NOT NULL, En_attente varchar(5) NOT NULL, Annule varchar(5) NOT NULL, Midis varchar(5) NOT NULL, Soirs varchar(5) NOT NULL, PRIMARY KEY (id) ); CREATE TABLE event ( id int NOT NULL auto_increment, date_match varchar(20) NOT NULL, Midis varchar (5) NOT NULL, Soirs varchar(5) NOT NULL, PRIMARY KEY (id) );

Re: Créer une base pour des evenements sportifs

Posté : 09 sept. 2014, 10:40
par sirakawa
Bjr,
La colonne NB c'est quoi?

Re: Créer une base pour des evenements sportifs

Posté : 09 sept. 2014, 11:22
par d0uz3
La colonne NB, je pensais l'inclure dans la base players, afin que lorsque les joueurs sont cochés comme présents a un événement, en plus de mettre a jour le nb de joueurs qui y seront présent, ça me renseigne le nb de fois qu'un joueur a participé a un match ( x midis / x soirs ) si je regarde ' sa fiche '.

Re: Créer une base pour des evenements sportifs

Posté : 09 sept. 2014, 14:12
par Nestecha
T'es sur la bonne voie. Te manque par contre quelques fichiers PHP.

En gros voilà ce qu'il te faut :

Un fichier PHP qui va lire les données entrées dans la base de données, puis qui va les afficher. Donc dans l'idée, tu vas récupérer à l'aide d'une requête SQL ces informations, que tu vas stocker dans un tableau, dans lequel tu boucleras afin d'afficher son contenu.

Ensuite c'est selon si tu veux un backoffice ou non si c'est pour un usage personnel. C'est toujours beaucoup plus pratique que de travailler dans la BDD directement.
Là, l'idée c'est de faire une page dans laquelle il y aura des champs à remplir pour ajouter ou enlever les disponibilités des joueurs. Ca peut paraître compliqué, ça ne l'est pas tant que ça.
Commence par mettre les inputs dans tous les sens, juste afficher les champs que tu aimerais pouvoir utiliser pour modification/ajout/suppression etc. Essaie de faire tout ça de façon organisée et logique.

Après ça, il te suffira d'appeler des pages PHP dans les <form> de tes champs qui enverront dans des requêtes SQL les informations que tu auras rentrées.

Donc pour résumer, t'as une page qui interprète les informations et les affiche en conséquence, et une autre qui va permet la modification de ces informations.

Re: Créer une base pour des evenements sportifs

Posté : 09 sept. 2014, 14:38
par d0uz3
merci pour tes conseils et encouragements :)
dans un premier temps, j'essai déja rien que d'importer mes champs dans la bdd, mais sur ma bdd postgre de free, rien ne s'importe..

voici la manip :

Code : Tout sélectionner

<html><body><form method='POST' action='add_player.php'> <label>Joueur</label><input type="text" name="player" value="$nick"> <br> <label>Midis ?</label><input type='checkbox' name='Midis' value=$'midis'><br> <label>Soirs ?</label><input type='checkbox' name='Soirs' value='$soirs'> <br><input type='submit' name='submit' value='Ajouter'> </form> </body></html>
et mon add_player.php :

Code : Tout sélectionner

<?php // on se connecte à notre base $base = mysql_connect ('sql.free.fr', 'login', 'mdp'); mysql_select_db ('players') ; ?> <html> <body> <?php // lancement de la requete $sql = 'INSERT INTO players VALUES ("$nick", "$midis", "$soirs")'; mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error()); // on ferme la connexion à la base mysql_close(); ?> $nick a été ajouté a la liste de joueurs</body> </html>
J'ai pour message d'amour en retour :
Erreur SQL !INSERT INTO players VALUES ("$nick", "$midis", "$soirs")
Table 'login.players' doesn't exist

Re: Créer une base pour des evenements sportifs

Posté : 09 sept. 2014, 14:46
par Nestecha
Utilise vraiment mysqli, pas mysql. Regarde sur PHP.net, ta syntaxe n'est pas bonne c'est pour ça que tu as une erreur :)

Re: Créer une base pour des evenements sportifs

Posté : 09 sept. 2014, 15:02
par d0uz3
bon j'ai tenté... j'ai modifié pour que ca fonctionne avec mysqli et voila ma modif :

Code : Tout sélectionner

<?php if($bdd = mysqli_connect('sql.free.fr', 'login', 'mdp', 'players')) { // Si la connexion a réussi, rien ne se passe. } else // Mais si elle rate… { echo 'Erreur'; // On affiche un message d'erreur. } ?> <html> <body> <?php // lancement de la requete $sql = 'INSERT INTO players VALUES ("$nick", "$midis", "$soirs")'; mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error()); // on ferme la connexion à la base mysql_close(); ?> <?php $req_pre = mysqli_prepare($bdd, 'INSERT INTO players (nick, midis, soirs) VALUES ( $nick, $midis, $soirs)'); mysqli_stmt_bind_param($req_pre, "sid", $nick, $midis, $soirs); ?> <?php echo ('$nick a été ajouté a la liste de joueurs') ?></body> </html>
Mais... :
le message d'amour change :

Fatal error: Call to undefined function mysqli_connect() in /mnt/1...add_player.php on line 2

Free n'integre pas le msqli ?!

Ou j'ai encore mardé quelque part... php.net ? j'ai été voir vite fait, c'est pour voir si mon erreur est recensée c'est ca ?

Re: Créer une base pour des evenements sportifs

Posté : 09 sept. 2014, 17:19
par d0uz3
bon j'avance doucement...

j'ai monté la base sql players et pu intégrer les joueurs via un formulaire et des checkbox.

je les visualise bien dans mysql, mais j'ai voulu monter un ' listing.php ' pour voir les inscrits pour le midis, ou le soir, et la j'ai mis ca :

Code : Tout sélectionner

<?php require ('conf.php'); // Connexion au serveur mysql $connect = mysql_connect(DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD) or die('Impossible de se connecter : ' . mysql_error()); // sélection de la base de données mysql_select_db(DB_DATABASE, $connect); $sql = "SELECT * FROM `players` ORDER BY `players`.`midis`"; $res = mysql_query($sql); echo $res; ?>
pour avoir ( dans un premier temps ) ceux du midi.. et j'ai ca en retour :
Resource id #3
Une fois que je me dépatouillerais de ca, restera plus qu'a faire en sorte que lorsque je crée un evenement, via l'heure du rdv il me donne d'office la liste des joueurs du midi ou soir, et que je puisse cocher ' ok ' ou ' non ok ' afin que ca se mette a jour tout seul sur un ' récap ' de cet evenement..

Re: Créer une base pour des evenements sportifs

Posté : 09 sept. 2014, 20:12
par sirakawa
Il est inutile de perdre de la place comm tu fais:
tinyint va jusqu'à 127
Dispo et En_attente et Annule peuvent valoir O ou N
Moment peut valoir M(idi) S(oir) T (midi et soir)

CREATE TABLE players (
id tinyint NOT NULL auto_increment,
Dispo varchar(1) NOT NULL,
En_attente varchar(1) NOT NULL,
Annule varchar(1) NOT NULL,
Moment varchar(1) NOT NULL,
PRIMARY KEY (id)
);

datetime ou date complique un peu au début mais simplifie par la suite
CREATE TABLE event (
id tinyint NOT NULL auto_increment,
date_match datetime NOT NULL,
Moment varchar(5) NOT NULL,
PRIMARY KEY (id)
);


id_match valeur de id dans events
id_joueur valeur d id dans players
CREATE TABLE JOUES (
id tinyint NOT NULL auto_increment,
id_match tinyint,
id_joueur tinyint, PRIMARY KEY (id)
)

Pour mysqli, tout est là :
http://us2.php.net/manual/fr/mysqli.qui ... ements.php
où tu as intéret à remplacer :
$res = $mysqli->query("SELECT id FROM test ORDER BY id ASC");
oar $requete = "SELECT id FROM test ORDER BY id ASC";
$res = $mysqli->query($requete);

Re: Créer une base pour des evenements sportifs

Posté : 09 sept. 2014, 21:44
par d0uz3
Super les sql, j'ai donc suivi tes conseils, integré les tables, crée les formulaires et ils inscrivent bien dans les tables respectives ( bon a part pour dispo / en_attente et annule car ceux la, je suppose qu'ils se renseigneront en fonction des ' JOUE '.

Mais c'est la que j'ai un sushi.. a quoi sert cette table ? a regrouper les id des players, en fonction des id event ?

je comprends pas comment faire un select sur ca, sachant que c'est vide et que y'a pas de liaisons avec les event et players..

Sinon j'ai assimilé, qu'en fait en fonction de ' Moment ' dans event, je peux demander a avoir les ' Moment ' compatibles dans player, mais comment il va reconnaitre ' T ' ? :/

Re: Créer une base pour des evenements sportifs

Posté : 09 sept. 2014, 21:52
par sirakawa
Quand un joueur joue un match, on insère dans la table joue son id et l'id du match joué.

Re: Créer une base pour des evenements sportifs

Posté : 09 sept. 2014, 22:35
par d0uz3
Ah du coup, faut je rentre les données manuellement ?

Je pensais plutot qu'en créant l'evenement, j'ai acces a une page de ce type :

Match du xx/xx/xx a 12h

( calculé automatiquement en fonction des check effectués plus bas ) 5 Ok - 3 En attente - 1 Annulé

Joueurs : ( en fonction de l'heure Midi ou Soir )

joueur 1 : (en checkbox)OK - En_Att - Annulé
Joueur 2 : (en checkbox)OK - En_Att - Annulé
etc..

Re: Créer une base pour des evenements sportifs

Posté : 10 sept. 2014, 08:43
par sirakawa
On n'intervient pas à la main dans mysql. Sauf en cas d'erreurs lors de la mise au point ou pour vérifier ses requetes avec phpmyadmin ou équivalent.
Il faudra un peu de travail, au début; mais une fois les choses mises en place, ca va tout seul.
1) Quand un crée un évènement (une page HTML), on crée une page indiquant date et moment de l'événement (INSERT into events...),
et on a un id que l'on récupère par mysqli_insert_id
2) on consulte la table players pour savoir ceux qui sont libres (matin ou am) on crée une page PHP+HTML avec ce résultat, en mettant leur id en champ (caché) et des checkbox
3) on sélectionne et on met à jour la table joues (pur PHP suffit)
à partir de joue on peut sortir la feuille d ematch ou toutes statistiques qu'on veut...