Créer une base pour des evenements sportifs

Eléphanteau du PHP | 36 Messages

18 sept. 2014, 12:15

Impec tout fonctionne :D

Ah c'est beau la magie du php, j'ai pu du coup sortir mes stats, et des delete au cas ou..

et maintenant je bute sur la MAJ des event.

A savoir par exemple, une fois le 'a_venir ' renseigné avec les joueurs ' dispos ' pour le match, et que j'ai posté, j'ai bien les infos Y / S / N / A qui se mettent dans la table JOUES.

J'ai apres fait un ' show event ' ou on voit ( en texte ) la liste des joueurs et leur status pour le match a venir.

Mais je voudrais que leurs status soient ' checké ' dans les input radio, c'est jouable ?

Ainsi, si jamais un joueur ' en attente ' ou ' dispo ' change d'avis, je peux mettre en ' indispo ' ou ' annulé ' etc.. via un UPDATE.

Le truc c'est que je sais pas quelle est la commande pour que mon $res['Dispo'] se place sur le bon bouton radio en checked :?

ViPHP
xTG
ViPHP | 7331 Messages

18 sept. 2014, 13:05

Tu peux faire ainsi :
<?php
echo '<input type="checkbox" name="variable" value="un"';
if( $variable == "un" )
  echo ' checked="checked"';
echo '/>';

echo '<input type="checkbox" name="variable" value="deux"';
if( $variable == "deux" )
  echo ' checked="checked"';
echo '/>';

Eléphanteau du PHP | 36 Messages

18 sept. 2014, 19:21

Marde j'suis obligé de rester en checkbox, car en radio il prend pas :/ bon pas grave.

En revanche, j'ai vu que si je retournais sur ' a_venir ' et que je recochais a nouveau les joueurs ( vu qu'ils sont toujours ' dispos ' au moment du match ) bah ca m'integre deux fois les joueurs dans la liste JOUES... par quelle méthode, je pourrais faire en sorte qu'il ne s'affiche plus pour le $match affiché si ils sont identifié ' dispo / Y ' pour celui ci ? :/

ViPHP
xTG
ViPHP | 7331 Messages

18 sept. 2014, 19:49

Marde j'suis obligé de rester en checkbox, car en radio il prend pas :/ bon pas grave.
La seule différence entre checkbox et radio c'est qu'un radio ne peut être coché qu'une seule fois. Donc cela dépend de si tu as besoin d'autoriser le choix multiple ou non.
En revanche, j'ai vu que si je retournais sur ' a_venir ' et que je recochais a nouveau les joueurs ( vu qu'ils sont toujours ' dispos ' au moment du match ) bah ca m'integre deux fois les joueurs dans la liste JOUES... par quelle méthode, je pourrais faire en sorte qu'il ne s'affiche plus pour le $match affiché si ils sont identifié ' dispo / Y ' pour celui ci ? :/
Il faut ajouter cette condition dans ta clause WHERE qui récupère la liste des joueurs.
Si je veux prendre par exemple dans une table contenant des produits uniquement des pommes ou des bananes :
SELECT * FROM produits WHERE categorie = 'pomme' OR categorie = 'banane'
C'est le même principe pour toi.

Mammouth du PHP | 2278 Messages

19 sept. 2014, 10:36

a_venir est destiné à une saisie initiale. On pouttait interdire d'y paser plusieurs fois pour la meme rencontre. (Ewst-ce qu'il faut prévoir la préparation parallèle de plusieurs rencontres ?)
Il est plus simple, et de loin, de concevoir un script qui modifie les disponibilités.
Bien sûr que si, on peut avoir des boutons radio checkés en fonction de ce qui est dans la table (rappel de xtg : les boutons radio sont des choox exclusis; donc pour que ça ait un sens, il faut qu'il y ait plusieurs choix: c'est le cas par exemple du sexe (pas celui des anges))
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

19 sept. 2014, 12:01

bah en fait je pense que ' a_venir ' va servir a voir les matchs qui vont arriver ( dans un soucis de praticité, je pense ne mettre qu'un seul evenement a venir ) avec la liste des joueurs qui sont ' dispos ' ou ' en attente '.

Ensuite y rajouter 2 liens :
-> Modifier feuille de match ( maj_party )
et -> ajouter des joueurs ( add_party )

du coup en reprenant le code précedent, j'ai c/c ce qu'il y avait dans ' a_venir ' ( les radios ) dans un fichier add_party

et ca ajoute bien les id_joueurs dans JOUES, mais si je le fais plusieurs fois, ca me les rajoute a chaque fois, comment filtrer en ' if Dispo for id_match where id_joueur=(joueur en question ) -> Ne pas l'afficher dans la liste.

Et ensuite la page modifier, serait une reprise des joueurs dans la table JOUES, en forme de radios ( comme add_party en fait ) et pré-renseigné ainsi j'ai juste a bouger le radio si un joueur se désiste ou un ' en attente ' devient dispo.

J'ai fait via radios, mais vu que ca s'incrémente, seul la derniere ligne ( le dernier id_joueur ) a sa radio de renseignée.

en revanche en checkbox, ca renseigne parfaitement... et lorsque je valide par contre, ca fais pas de update, voila ma requete ' modifée ' de l'insert into du ' add_party '.

Code : Tout sélectionner

$nb = count($ids); $requete = "UPDATE JOUES (id_joueur, id_match, dispo) SET"; $valeurs = ""; for ($i = 1; $i <= $nb; $i++) { $id_joueur = $ids[$i]; $dispo = $Dispo[$i]; $virgule = ($i < $nb) ? ",":""; $valeurs .= "($id_joueur, $match,'$dispo')$virgule"; } $requete .= $valeurs; $result = mysql_query($requete);
mais il semblerait que ce soit plus complexe que ca les requetes updates, je vais étudier coté phpmyadmin la requete exacte et tenter d'adapter.

ViPHP
xTG
ViPHP | 7331 Messages

19 sept. 2014, 14:05

ca fais pas de update, voila ma requete ' modifée ' de l'insert into du ' add_party '.
Sauf que ce n'est pas un insert que tu nous montres mais un update. Ce n'est qu'une requête de mise à jour et non de création d'enregistrement.
Ce sont des nouveaux joueurs que tu tentes de rajouter ou bien modifier la dispo d'un joueur déjà ajouté ?
J'ai fait via radios, mais vu que ca s'incrémente, seul la derniere ligne ( le dernier id_joueur ) a sa radio de renseignée.
Le même nom pour chaque joueur je suppose ? Il faut le même nom de radio pour chaque dispo d'un même joueur.
Mais un nom de radio différent entre chaque joueur.
Pour simplifier cela tu peux utiliser une notation tableau et utiliser l'id_joueur comme index :
<input type="radio" name="dispo[<?php echo $id_joueur; ?>]" value="dispo" />
<input type="radio" name="dispo[<?php echo $id_joueur; ?>]" value="non dispo" />

Eléphanteau du PHP | 36 Messages

19 sept. 2014, 14:28

l'update servirait dans la page ' modifier ' dans le cas ou j'ai des désistements, ou dans le cas ou j'ai des ' en attente ' a passer en ' ok ' ou ' indispo ' en effet la faut faire un update.

apres oui, coté ' ajouter joueur au match ' il faut faire un insert, mais faudrait qu'il ' check ' d'abord si le $nom ou l' id_joueur n'est pas déja dans JOUES pour le $idmatch en cours, et si c'est le cas, bah qu'il l'affiche plus comme ca je peux plus le selectionner pour le ' match a venir '.

impec les radios, voila la ligne corrigée :

Code : Tout sélectionner

echo '<td><input type="radio" name="Dispo['.$id_joueur.']" value="A"'; if( $dispochk == "A" ) echo ' checked="checked"';
mais ca update pas :'(

voila ce que j'ai tenté d'adapter :

Code : Tout sélectionner

$nb = count($ids); $requete = "UPDATE JOUES WHERE"; $SET = ""; $WHERE = ""; for ($i = 1; $i <= $nb; $i++) { $id_joueur = $ids[$i]; $dispos = $Dispo[$i]; $virgule = ($i < $nb) ? ",":""; $SET .= "(Dispo=$dispo)$virgule"; $WHERE .= "(SET Dispo=$dispos)(id_match=$match AND id_joueur=$id_joueur)$virgule"; } $requete .= $SET.$WHERE; $result = mysql_query($requete);
et le print_r de la requete me retourne ( presque ) un truc cohérent :
UPDATE JOUES WHERE(Dispo=),(Dispo=),(Dispo=),(Dispo=),(Dispo=),(Dispo=)(SET Dispo=Y)(id_match=4 AND id_joueur=5),(SET Dispo=)(id_match=4 AND id_joueur=4),(SET Dispo=S)(id_match=4 AND id_joueur=3),(SET Dispo=Y)(id_match=4 AND id_joueur=1),(SET Dispo=S)(id_match=4 AND id_joueur=11),(SET Dispo=)(id_match=4 AND id_joueur=7)
je pense que si les ' dispos ' etaient renseignés, ca commencerait a etre pas mal :P

ViPHP
xTG
ViPHP | 7331 Messages

19 sept. 2014, 17:11

Affiches les erreurs mysql et là tu vas voir si ça se passe bien...
$result = mysql_query($requete) or die(mysql_error());
Ta clause WHERE est en fait totalement fausse !
WHERE(Dispo=),(Dispo=),(Dispo=),(Dispo=),(Dispo=),(Dispo=)(SET Dispo=Y)(id_match=4 AND id_joueur=5),
La première partie est nuisible et n'a pas lieu d'être.
La dernière partie est une clause WHERE et non une clause SET.

Eléphanteau du PHP | 36 Messages

19 sept. 2014, 22:14

j'ai buché pour que la requete ressemble a ce qu'elle devrait etre, et pourtant, ca update rien :'(

de plus, je vois que 2 id_joueurs ont leur ' dispo ' qui ne s'affiche pas...

print_r obtenu de la requete
UPDATE JOUES SET (id_joueur= '5', dispo='S'),(id_joueur= '4', dispo=''),(id_joueur= '3', dispo='S'),(id_joueur= '1', dispo='S'),(id_joueur= '11', dispo='S'),(id_joueur= '7', dispo='') WHERE id_match='4'
mon code :

Code : Tout sélectionner

$requete = "UPDATE JOUES SET "; $nb = count($ids); $valeurs = ""; for ($i = 1; $i <= $nb; $i++) { $id_joueur = $ids[$i]; $dispo = $Dispo[$i]; $virgule = ($i < $nb) ? ",":""; $valeurs .= "(id_joueur= '$id_joueur', dispo='$dispo')$virgule"; } $requete .= $valeurs." WHERE id_match='$match'"; $result = mysql_query($requete); print_r($requete);

ViPHP
xTG
ViPHP | 7331 Messages

20 sept. 2014, 19:12

Et que te retournes un mysql_error() ?

Eléphanteau du PHP | 36 Messages

20 sept. 2014, 19:54

Bah il me remonte une erreur a la ligne ' 1 ' mais si il parle de la ligne 1 de ma page, c'est pas possible..
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(id_joueur= '5', dispo='N'),(id_joueur= '4', dispo=''),(id_joueur= '3', dispo='N' at line 1

ViPHP
xTG
ViPHP | 7331 Messages

20 sept. 2014, 20:06

Non la ligne 1 de la requête en fait. ;)
Et franchement je devais pas être réveillé quand j'ai lu ton code...
Un multi-update avec données différentes c'est... IMPOSSIBLE !
Voir la syntaxe de update : http://dev.mysql.com/doc/refman/5.0/fr/update.html

Il te faut donc une requête UPDATE par joueur, tu ne peux pas faire autrement.
Il n'y a que pour une requête INSERT que tu peux faire ce que tu fais actuellement.

Eléphanteau du PHP | 36 Messages

21 sept. 2014, 21:33

arf, j'en ch... dans les Mises a Jour.

déja, bizarrement il me liste bien les joueurs ' a modifier ' ( donc inscrits dans JOUES a l'id_match désiré ) mais il ne me remonte pas les bonnes infos :

Code : Tout sélectionner

$sqlid = "select * from JOUES join players ON players.id = JOUES.id_joueur where id_match='$match'"; $reqid = mysql_query($sqlid); print "<table align=\"center\" border = '0'> <tr><th></th><th>Nom</th><th>Dispo</th><th>En Attente</th><th>Indispo</th><th>Annulé</th><th></th></tr> <form method = 'post' action = 'index.php?page=maj_party' >"; while($res = mysql_fetch_assoc($reqid)) { $id = $res['id']; $dispo = $res['Dispo']; $nom = $res['nom']; $id_joueur = $res['id_joueur']; print "<tr><td><input type='hidden' name='ids' readonly='readonly' value='$id_joueur' /></td> <td>$nom</td>"; echo '<td><input type="radio" name="Dispo['.$id_joueur.']" value="Y"'; if( $dispo == "Y" ) echo ' checked="checked"'; echo '/></td>'; echo '<td><input type="radio" name="Dispo['.$id_joueur.']" value="N"'; if( $dispo == "N" ) echo ' checked="checked"'; echo '/></td>'; echo '<td><input type="radio" name="Dispo['.$id_joueur.']" value="S"'; if( $dispo == "S" ) echo ' checked="checked"'; echo '/></td>'; echo '<td><input type="radio" name="Dispo['.$id_joueur.']" value="A"'; if( $dispo == "A" ) echo ' checked="checked"'; echo '/></td>'; echo '<td><button type = "submit">MAJ</button></td>'; } print "</form><tr><th></th><th></th><th></th><th></th><th></th><th></th><th></th></tr></tr></table>";
ca me sort une erreur pour 2 joueurs, ils apparaissent ' indispos ' alors qu'ils sont bien notés en S dans phpmyadmin..

et enfin, lorsque je veux faire une MAJ, ca ne change rien dans la table JOUES, pourtant je suis pas loin, j'arrive juste pas a recuperer le A dans le tableau la :

Array ( [ids] => 1 [Dispo] => Array ( [1] => A ) )

voila comment je tente de le récupérer :

Code : Tout sélectionner

$id_joueur = $ids['id_joueur']; $disp = $Dispo['id_joueur']; print $disp;
l'ids je l'ai, mais le $disp s'affiche pas :(

Eléphant du PHP | 151 Messages

22 sept. 2014, 08:12

J'ai pas tout suivi, et excusez mon mode qui aime bien les div et plus beaucoup les tableaux...
Mais tu pourrais pas générer un peu de div avec du css plutôt que des print "</form><tr><th></th><th></th><th></th><th></th><th></th><th></th><th></th></tr></tr></table>"; interminables...
Plus joli et surtout plus pratique pour de la belle mise en page responsive, etc...

Je disça, je dis rien moi...
Développeur d'applications pour intranets industriels (IHM), DBA Oracle, auto entrepreneur. Je fuis les frameworks car je pense comme Rasmus Lerdorf : "all PHP frameworks suck"...
Je me suis lancé dans la reprise du projet PhpMyNewsletter (GNU GPL), que je vous invite à essayer.

echo ($user=='enregistré?"je t'aide":"je t'aide pas !");