Créer une base pour des evenements sportifs

d0uz3
Invité n'ayant pas de compte PHPfrance

10 sept. 2014, 10:01

Alors voila ce que je sort sur une page :
Ajouter joueur

Ajouter evenement

Liste des Matchs :

12-09-2014 le S

12-09-2014 le M

10-09-2014 le M

20-09-2014 le S

11-09-2014 le M

Disponible le Midi :

test 7

Disponible le Soir :

test 6

Disponible Midis et Soirs :

test 5
test 5
mais du coup quand j'apelle

Code : Tout sélectionner

' echo $resultat['date_match'].' le '.$resultat['Moment'].'<br> '
ca me sort :
12-09-2014 le S
j'ai tenté de faire un if $resultat['Moment'] = 'M' echo ' Soir ' mais ca marche pas, je trouve pas la commande, replace existe ?!

Donc en rapport a ton précédent commentaire, j'ai bien pu récupérer le dernier id inséré apres mon insert into event, mais la ou je bute c'est lorsque je veux ( on voit bien que j'ai sorti les disponible midi / soirs / les 2 ) pouvoir les cocher ( avec des radios en fait plutot que des checkbox ) en fonction d'une date, bah je capte pas comment faire..

je monte une page, ou je récupere le dernier id de l'event ? en apellant a nouveau le mysqli_insert_id ou je refais un select id from event order by id ?

et en intégrant l'id des joueurs ( j'ai rajouté le champ ' nom ' ) donc leurs noms directement, et proposant a chaque id ( ou nom ) les boutons radio, qui mettront ' dynamiquement ' a jour le total des 'dispo' / ' indispo ' / ' annule ' / ' en att ' en bas de page ?

Mammouth du PHP | 2278 Messages

10 sept. 2014, 10:53

Si tu arrives à créer le match dans joues et à récupérer l'id du match, tu peux le mettre en session:
Pour le match lui même:
en début de script, sans rien avant
<?PHP
session_start();
?>
Tu sais aussi si le match est du matin ou du soir: $momant (pour l'exemple)
et quand tu as récupéré cet id ($id_nouveau, pour l'exemple) tu écris
$_SESSION['id_match'] = $id_nouveau;
$_SESSION['moment'] = $moment;
comme ça tu est tranquille pour ces deux valeurs.
Pour les joueurs possibles tu fais un select sur ceux qui ont le champ moment = $moment ou le champ moment ='T';
SELECT * from players where moment = '$moment' or moment = 'T';
Quand tu en es là sans erreur tu remets un message.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

d0uz3
Invité n'ayant pas de compte PHPfrance

10 sept. 2014, 12:02

En fait quand je fait un ' event ' ca m'ajoute les infos dans la table correspondante.

J'ai compris depuis le formulaire renseigné, comment récupérer apres le mysql_insert_id et l'afficher.

Mais la ou je capte pas, c'est a quoi sert la table ' JOUE ' et comment la renseigner, je recrée une page par exemple ' match a venir ' ?

Sur laquelle serait rapellé l'id du dernier match inséré ( je peux donc faire un select id from event limit 0,1 ? ) et ou chaque id de joueurs serait repertoriés ?

Mammouth du PHP | 2278 Messages

10 sept. 2014, 13:36

La table joues sert à ,savoir qui joue a joué ou jouera quel match.
Cette structure est un classique de bases de données.
Quand on a créé le match dans events, on consulte la table des joueurs pour savoir ceux qui sont disponibles : ($moment est le moment où aura lieu le match)
select * from players where moment= '$moment' ot moment = 'T';
Le résultat de cette requete fournit les joueurs disponibles qu'on va afficher da,ns une page HTML
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 36 Messages

10 sept. 2014, 14:07

tain je patoge... je récap ce que j'ai :
un index :

Code : Tout sélectionner

<a href="add_player.htm">Ajouter joueur</a><br /><br /> <a href="add_event.htm">Ajouter evenement</a><br /><br /> <a href="a_venir.php">A Venir</a><br /><br /> <a href="listing.php">Voir liste des matchs et joueurs</a> <?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); $req1 = mysql_query('SELECT * FROM `event` order by id DESC') or die(mysql_error()); $req2 = mysql_query('SELECT * FROM `players` order by id DESC') or die(mysql_error()); $players = mysql_fetch_array($req2); $last_player = mysql_fetch_array($req2); $events = mysql_fetch_array($req1); $last_event = mysql_fetch_array($req1); echo "<br><br>Total Joueurs : {$players['id']}"; echo "<br>Dernier inscrit : {$last_player['nom']} le {$last_player['Moment']}"; echo "<br><br>Total Matchs : {$events['id']}"; echo "<br>Dernier match : {$last_event['date_match']} le {$last_event['Moment']}"; ?>
la j'ai les infos que je veux en premiere page ( ormis bizarement, les last player et last event qui sont en -1.. )

Et sur les liens que j'ai fait en haut de cette page, mon add_event, ou add_player fonctionnent et inscrivent bien tout dans mes tables.

maintenant je capte pas, ou, et pourquoi j'apelle la table ' JOUE ' ?!

apres le add_event, je devrais créer une nouvelle page html/php pour ' afficher ' la date du prochain evenement ( j'ai crée a_venir.php ), et dedans je devrais avoir la liste des joueurs ( automatique ) avec les boutons radio dispo etc c'est ca ?

car la je bute un peu...

Eléphanteau du PHP | 36 Messages

10 sept. 2014, 22:29

Bon j'ai tenté d'avancer un peu, voila comment j'ai listé dans ' a_venir.php ' :

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); $evnt = mysql_query('SELECT * FROM `event` order by id DESC') or die(mysql_error()); echo '<a href="index.php">Retour a l\'accueil</a><br><br>'; echo 'Match a venir :<br><br>'; $last_event = mysql_fetch_array($evnt); $last_event2 = $last_event['Moment']; $last_event2 = str_replace('M' ,'le Midi',$last_event2); $last_event2 = str_replace('S' ,'le Soir',$last_event2); echo "{$last_event['date_match']} $last_event2"; echo '<br><br>Liste des joueurs disponibles pour ce match :<br><br>'; $req = mysql_query('SELECT * FROM `players` WHERE `Moment`="$last_event[Moment]" OR `Moment`="T"')or die(mysql_error()); while($player_list = mysql_fetch_assoc($req)) { echo $player_list['nom'].'<br>'; } ?>
et j'ai ca comme retour :
Retour a l'accueil

Match a venir :

22-02-2015 le Midi

Liste des joueurs disponibles pour ce match :

d0uz3
hu1t
Mais... je n'ai que les ' OR `Moment`="T"' ' dans ma liste des joueurs dispos... pourquoi ? :/

donc l'idée, c'est que j'ajoute apres :
echo $player_list['nom'].'';
<input type="radio" name="dispo">Dispo

puis indispo etc.. ?

Mammouth du PHP | 2278 Messages

11 sept. 2014, 10:33

Puisque tu crées l'évènement ici :
<a href="add_event.htm">Ajouter evenement</a>
Tu as forcément dans cette page un champ (input) indiquant s'il est du matin ou du soir;
<!--ADD_EVENT.HTML-->
<form method = 'post' action = 'ajouter_match.php'>
<select name = 'moment'>
	<option value = 'M'>Midi</option>
	<option value = 'S'>Soir</option>
</select>
<!-- affiche un calendrier avec OPera et certains smartphones; une zone texte ailleurs-->
<input type = 'datetime' name = 'ladate'  required = 'required'/>
<button type = 'submit'>Créer</button>
</form
>
<?PHP
session_start()
print_r($_POST);
extract($_POST); //crée des variables du nom des champ du html : $moment, $ladate
$_SESSION['moment'] = $moment;
/*ici tu insères le match dans joues et tu notes son id*/

/*ici tu consultes la table des joueurs en te servant de la variable $moments :
$requete = "SELECT ....";
tu écri
print "<br>$requete";
avant de lancer l'exécution de la requete pour voir si ta variable est bien passée


?>
Il est plus commode d'avoir des modules séparés pour faire des taches séparées.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 36 Messages

11 sept. 2014, 10:43

Ayant eu des erreurs avec la table datetime dans sql, j'ai transformé en varchar provisoirement, je verrais apres pour faire fonctionner ce ' détail '.

du coup mon add_event.htm ressemble a ca actuellement :

Code : Tout sélectionner

<html><body> <form method="post" action="traitement_event.php"> <p>Date: <input type="text" name="date_match"></p> <input type="radio" name="Moment" value="M" />Midi <input type="radio" name="Moment" value="S" />Soir <p id="bouton"> <input type="submit" value="Envoyer" /> </p> </form> </body></html>
et fonctionne, il m'ajoute bien dans le varchar $date_match la date renseignée, et dans $moment si c'est M ou S

du coup ce que tu me dis, c'est de séparer dans ' traitement_event.php ' le ' INSERT INTO ' des infos récupérées par le formulaire, des lignes que tu mas écrit ici :

Code : Tout sélectionner

<?PHP session_start() print_r($_POST); extract($_POST); //crée des variables du nom des champ du html : $moment, $ladate $_SESSION['moment'] = $moment; /*ici tu insères le match dans joues et tu notes son id*/ /*ici tu consultes la table des joueurs en te servant de la variable $moments : $requete = "SELECT ...."; tu écri print "<br>$requete"; avant de lancer l'exécution de la requete pour voir si ta variable est bien passée ?>
?

Ca veut dire qu'il garde dans ' $_post ' en mémoire ce que j'ai envoyé en INSERT INTO sur la table, ou il faut que je fasse un $_post = $resultat ( des contenu du formulaire ) ?

Mammouth du PHP | 2278 Messages

11 sept. 2014, 11:17

Ce page d'injures du capitaine Haddock de forum s'est planté pendant que je te répondaisun certain te
La date dans la BDD ça n'a pas une grosse importance si tu ne pense pas avoir à faire des trucs du genre : entre deux dates, date +/- n jours...
Pour le reste ajouter_match.php qui sert à ajouter le match et afficher les joueurs dispo:
<?PHP
session_start()
print_r($_POST); //$_POST est une variable qui contient les valeurs du formulaire qui avait comme action ce script. Cette varuiable existe tant que tu restes dans ce script-ci ajouter_match.php
extract($_POST); //crée des variables du nom des champ du formulaire  html : $moment, $ladate
$_SESSION['moment'] = $moment; /*$_SESSION variable stockant ce que tu y mets, vit jusqu'à ce que tu quittes l'application, ou la fermes Les variables qui y sont définies sont disponibles de tous les scripts de ton application, peuvent être modifiées, supprimées par toi...*/
/*ici tu insères le match dans joues et tu notes son id. Sais tu récipéer l'id qui vient d'être créé? Fondamental pour la suite. L'appeler $id_match pour la suite de la discussion.*/

/*ici tu consultes la table des joueurs en te servant de la variable $moments créée par extract au début.... :
$requete = "SELECT ....";
tu écris
print "<br>$requete";
avant de lancer l'exécution de la requete pour voir si ta variable est bien passée
?>
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 36 Messages

11 sept. 2014, 17:01

ah ok, en fait ' ajouter_match.php ' c'est la page apellée par le formulaire ' add_event ' bon moi je l'ai apellé traitement_event mais c'est idem, voila ce que j'y ait mis :

Code : Tout sélectionner

<?PHP session_start(); print_r($_POST); //$_POST est une variable qui contient les valeurs du formulaire qui avait comme action ce script. Cette varuiable existe tant que tu restes dans ce script-ci ajouter_match.php extract($_POST); //crée des variables du nom des champ du formulaire html : $moment, $date_match $_SESSION['moment'] = $moment; /*$_SESSION variable stockant ce que tu y mets, vit jusqu'à ce que tu quittes l'application, ou la fermes Les variables qui y sont définies sont disponibles de tous les scripts de ton application, peuvent être modifiées, supprimées par toi...*/ /*ici tu insères le match dans joues et tu notes son id. Sais tu récipéer l'id qui vient d'être créé? Fondamental pour la suite. L'appeler $id_match pour la suite de la discussion.*/ /*ici tu consultes la table des joueurs en te servant de la variable $moments créée par extract au début.... : $requete = "SELECT ...."; tu écris print "<br>$requete"; avant de lancer l'exécution de la requete pour voir si ta variable est bien passée */ 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 = "INSERT INTO event(ID, date_match, Moment) VALUES ('','$date_match','$Moment')"; $id_match = mysql_insert_id(); echo mysql_insert_id(); $sql2 = "INSERT INTO JOUES(ID, id_match) VALUES ('','$id_match')"; echo '<br><br><a href="index.php">Retour a l\'accueil</a>'; echo '<br><br>Joueurs disponibles pour ce match :'; $req = mysql_query('SELECT * FROM `players` WHERE `Moment`="$moment" OR `Moment`="T"')or die(mysql_error()); while($player_list = mysql_fetch_assoc($req)) { echo '<br><br>'.$player_list['nom'].'<br>'; } ?>
du coup en haut j'ai bien le print_r qui me ressort ca :
Array ( [date_match] => 3-3-2 [Moment] => M ) 0
et le 0 correspond a mon echo mysql_insert_id, commande qui je pensais, etre pour apeller l'id crée.. mais ca me met un zéro, du coup doit me manquer quelque chose..

et du coup, je n'ai pourtant rien d'inséré dans ma table JOUES, ca m'a bien la premiere fois crée un id 1 dans la table, mais ca m'a mis un 0 dans id_match et c'est tout, depuis ca s'incrémente pas..

et concernant l'affichage des players, le select * from player where moment='$moment' ne semble pas fonctionner, ca ne m'affiche QUE, les ' OR moment='T' :(

Mammouth du PHP | 2278 Messages

11 sept. 2014, 20:05

Il faudrait peut-être , mais je sis ellement stupide que j'hésite, exécuter cette requete $sql, pour avoir des chances que mysql_insert_id(); donne une valeur... :(
Par ailleurs, je suppose que ton champ s'appelait <input name = 'Moment' />
$sql = "INSERT INTO event(ID, date_match, Moment) VALUES ('','$date_match','$Moment')";
$id_match = mysql_insert_id();
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 36 Messages

11 sept. 2014, 20:49

mdr, en effet, autant pour moi, j'ai supprimé plusieurs lignes quand je testais mes resultats en ' echo ' et elle y est passée :D

du coup betise reglée, et j'ai bien mes id qui s'affichent, et s'integrent dans la table JOUES :) ( ca fait dresser le kiki quand ca marche ces petites lignes )

en revanche, j'ai beau enchainé avec ' echo $Moment; ' ca me mets bien M ou S, mais ca a pas l'air d'etre reconnu dans la requete select * from players car ca ne m'affiche que les ' T ' :/

Mammouth du PHP | 2278 Messages

11 sept. 2014, 21:09

Je t'ai déja dit de créer la requete :
$requete = "SELECt ...";
puis de l'afficher pour voir quelle tête elle a :
print "<br>$requete"; //ce qui permet de la tester avec phpmyadmin et de la montrer ici (c'est aussi intéressant que la syntaxe utilisée.)
essaie ça.
Il ne faut jamais faire des trucs du genre query("SELECt ..."); (contrairement aux exemples de la doc). Pas plus que or die(...);

Avec PHPmyadmin tu pourrais essayer SELECT * from players pour voir ce que ça donne...
et SHOW columns from players;
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 36 Messages

11 sept. 2014, 21:33

Ok ca y es ca marche, voici la requete ecrite correctement :
$req = mysql_query('SELECT * FROM players WHERE Moment="'.$Moment.'" OR Moment="T"')
"$Moment" renvoyait $Moment dans mysql, du coup j'ai testé comme ca et ca fonctionne niquel.

Du coup maintenant, j'integre mes boutons a la suite de chaque 'nom' et je fais un action="$post" pour récupérer les changements d'états a chaque ' submit ' ?

Eléphanteau du PHP | 36 Messages

11 sept. 2014, 22:13

Voila ma page ' a_venir.php ' :

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 id_match FROM `JOUES` order by id DESC"; $res = mysql_query($sql); echo '<a href="index.php">Retour a l\'accueil</a><br><br>'; $res2 = mysql_fetch_assoc($res); $sql2 = ('SELECT * FROM `event` WHERE id="'.$res2['id_match'].'"'); $res3 = mysql_query($sql2); $res4 = mysql_fetch_assoc($res3) ; $res5 = $res4['Moment']; $res5 = str_replace('M' ,'- Midi',$res5); $res5 = str_replace('S' ,'- Soir',$res5); echo 'Match a venir :<br><br>'; echo 'Le '.$res4['date_match'].' '.$res5.''; echo '<br><br>Liste des joueurs disponibles pour ce match :<br><br>'; $req = mysql_query('SELECT * FROM players WHERE Moment="'.$res4['Moment'].'" OR Moment="T"')or die(mysql_error()); while($player_list = mysql_fetch_assoc($req)) { echo $player_list['nom'].'<br>'; } ?>
ca marche niquel, j'essai l'integration des boutons radio, restera la partie ' MAJ Automatique '