Problème "ORDER BY"

kinslow
Invité n'ayant pas de compte PHPfrance

23 nov. 2012, 00:04

Bonsoir à tous,

Je suis administrateur du site de mon club de football et j'utilise phpleague afin d’enregistrer les résultats. Dans l'adminstration de phpleague j'ai la possibilité d'entrer le nom des titulaires et les joueurs de ma base de données sont mis dans un menu déroulant trier par ordre alphabétique :

Image

Pas de problème jusque là, seulement après je les choisis de façon à les mettre dans l'ordre afin de créer mon équipe suivant le numéro des maillots de chacun :


Image

Le problème c'est que lorsque je clique sur "envoi" celui me les enregistre et les classe malheureusement par ordre alphabétique et non dans l'ordre que j'ai choisi :

Image

Serait-il possible de les enregister suivant mon classement ?

Voici le code de la page d'administration.

Code : Tout sélectionner

<?php if (empty($numero)) { $REQ1 = mysql_query('SELECT MAX(phpl_journees.numero) FROM phpl_journees, phpl_matchs WHERE phpl_journees.id=phpl_matchs.id_journee AND buts_dom IS NOT NULL AND phpl_journees.id_champ='.$champ); while ($ROW1 = mysql_fetch_array($REQ1)) { $numero = $ROW1[0]; } mysql_free_result($REQ1); if (empty($numero)) { $numero = 1; } } if (empty($numero)) { $numero = 1; } if ($action3 == 2) { $a = 0; $b = 0; $x = 0; while ($x < $nb_matchs) { $r = 0; $y = 0; if (isset($nbdom[$x]) OR isset($joueursDom[$a])) { while($nbdom[$x] > $y) { if (!isset($nbdom[$x]) OR !isset($joueursDom[$a])) { $REQ1 = ''; $REQ2 = ''; break; } else { if (!isset($nbdom[$x]) == '' AND !isset($nbdom[$x]) == 0 AND !isset($joueursDom[$a]) == 0) { $REQ1 = @mysql_query('INSERT INTO phpl_compo (id_match, matchs, id_effectif) VALUES ('.$matchs_id[$x].', "1", '.$joueursDom[$a].')'); $REQ2 = @mysql_query('DELETE FROM phpl_compo WHERE id_effectif="0"'); } } $a++; $y++; } } if (isset($nbext[$x]) OR isset($joueursExt[$b])) { while($nbext[$x] > $r) { if (!isset($nbext[$x]) OR !isset($joueursExt[$b])) { $REQ3 = ''; $REQ4 = ''; break; } else { if (!isset($nbext[$x]) == '' AND !isset($nbext[$x]) == 0 AND !isset($joueursExt[$b]) == 0) { $REQ3 = @mysql_query('INSERT INTO phpl_compo (id_match, matchs, id_effectif) VALUES ('.$matchs_id[$x].', "1", '.$joueursExt[$b].')'); $REQ4 = @mysql_query('DELETE FROM phpl_compo WHERE id_effectif="0"'); } } $b++; $r++; } } $x++; } if ($REQ1) { echo InfoReqSql('InfJoueurDom', 1, 'highlight', 'check', ADMIN_TIT_DOM_ADD1); } if ($REQ3) { echo InfoReqSql('InfJoueurExt', 1, 'highlight', 'check', ADMIN_TIT_EXT_ADD2); } } if ($action4 == 'supp') { $REQ = mysql_query('DELETE FROM phpl_compo WHERE id='.$id_compo_supp); if ($REQ) { echo InfoReqSql('InfDel', 1, 'highlight', 'check', ADMIN_TIT_DEL1); } else { echo InfoReqSql('InfDel', 0, 'error', 'alert', GestErreur(ADMIN_TIT_DEL2, $REQ)); } } journees($champ, $numero, $action, $annee); $REQ1 = mysql_query('SELECT phpl_clubs.nom, CLEXT.nom, phpl_matchs.buts_dom, phpl_matchs.buts_ext, phpl_matchs.id, phpl_equipes.id, EXT.id, date_reelle FROM phpl_clubs, phpl_clubs AS CLEXT, phpl_matchs, phpl_journees, phpl_equipes, phpl_equipes AS EXT WHERE phpl_clubs.id = phpl_equipes.id_club AND CLEXT.id = EXT.id_club AND phpl_equipes.id = phpl_matchs.id_equipe_dom AND EXT.id = phpl_matchs.id_equipe_ext AND phpl_matchs.id_journee = phpl_journees.id AND phpl_journees.numero='.$numero.' AND phpl_journees.id_champ='.$champ.' AND CLEXT.nom!="exempte" AND phpl_clubs.nom!="exempte" ORDER BY date_reelle'); $NBR_MATCH = mysql_num_rows($REQ1); if ($NBR_MATCH > 0) { $e = 0; while($ROW1 = mysql_fetch_array($REQ1)) { $CLUB_DOM = stripslashes($ROW1[0]); $CLUB_EXT = stripslashes($ROW1[1]); $TXT_J = '<div class="User"><a href="index.php?page=championnat&action=joueurs&champ='.$champ.'&annee='.$annee.'">Ajouter des joueurs</a></div>'."\n"; // Liste joueurs domicile à supprimer $REQ3 = 'SELECT phpl_joueurs.nom, phpl_joueurs.prenom, phpl_compo.id FROM phpl_joueurs, phpl_compo, phpl_effectif WHERE phpl_effectif.id_joueur=phpl_joueurs.id AND phpl_effectif.id=phpl_compo.id_effectif AND phpl_effectif.id_equipe='.$ROW1[5].' AND phpl_compo.id_match='.$ROW1[4].' AND phpl_compo.matchs="1" ORDER BY phpl_joueurs.nom ASC, phpl_joueurs.prenom ASC'; $RES3 = mysql_query($REQ3); $NBR3 = mysql_num_rows($RES3); // Liste joueurs domicile choix $REQ4 = 'SELECT phpl_effectif.id, phpl_effectif.id_equipe, phpl_joueurs.nom, phpl_joueurs.prenom, phpl_effectif.id_joueur FROM phpl_joueurs, phpl_clubs, phpl_equipes, phpl_effectif WHERE phpl_effectif.id_equipe=phpl_equipes.id AND phpl_equipes.id_club=phpl_clubs.id AND phpl_equipes.id='.$ROW1[5].' AND phpl_joueurs.id=phpl_effectif.id_joueur ORDER BY phpl_joueurs.nom ASC, phpl_joueurs.prenom ASC'; $RES4 = mysql_query($REQ4); $NBR_J_DOM = mysql_num_rows($RES4); // Liste joueurs extérieur à supprimer $REQ5 = 'SELECT phpl_joueurs.nom, phpl_joueurs.prenom, phpl_compo.id FROM phpl_compo, phpl_joueurs, phpl_effectif WHERE phpl_effectif.id_joueur=phpl_joueurs.id AND phpl_effectif.id=phpl_compo.id_effectif AND phpl_effectif.id_equipe='.$ROW1[6].' AND phpl_compo.id_match='.$ROW1[4].' AND phpl_compo.matchs="1" ORDER BY phpl_joueurs.nom ASC, phpl_joueurs.prenom ASC'; $RES5 = mysql_query($REQ5); $NBR5 = mysql_num_rows($RES5); // Liste joueurs extérieur choix $REQ6 = 'SELECT phpl_effectif.id, phpl_effectif.id_equipe, phpl_joueurs.nom, phpl_joueurs.prenom, phpl_effectif.id_joueur FROM phpl_joueurs, phpl_clubs, phpl_equipes, phpl_effectif WHERE phpl_effectif.id_equipe=phpl_equipes.id AND phpl_equipes.id_club=phpl_clubs.id AND phpl_effectif.id_joueur=phpl_joueurs.id AND phpl_effectif.id_equipe='.$ROW1[6].' ORDER BY phpl_joueurs.nom ASC, phpl_joueurs.prenom ASC'; $RES6 = mysql_query($REQ6); $NBR_J_EXT = mysql_num_rows($RES6); if ($NBR_J_DOM != 0) { $VAL_DOM = ''; $TXT_DOM = ''; } else { $VAL_DOM = ' disabled="disabled" style="display: none;"'; $TXT_DOM = $TXT_J; } if ($NBR_J_EXT != 0) { $VAL_EXT = ''; $TXT_EXT = ''; } else { $VAL_EXT = ' disabled="disabled" style="display: none;"'; $TXT_EXT = $TXT_J; } if ($NBR_J_DOM != 0 OR $NBR_J_EXT != 0) { echo ' <form method="post" action=""> <table class="Large100P ui-widget ui-widget-content"> <thead> <tr class="ui-widget-header"> <th class="Large20P">&nbsp;</th> <th class="Large25P TxtRight">'.$CLUB_DOM.'</th> <th class="Large10P">'.$ROW1[2].' - '.$ROW1[3].'</th> <th class="Large25P TxtLeft">'.$CLUB_EXT.'</th> <th class="Large20P">&nbsp;</th> </tr> </thead> <tbody> <tr> <td class="TxtRight"> <input type="hidden" name="matchs_id[]" value="'.$ROW1[4].'" />'."\n"; $x = 0; while ($x < (11 - $NBR3)) { if ($x < (11 - $NBR3)) { echo '<select name="joueursDom[]"'.$VAL_DOM.' class="Large200M"> <option value="0">&nbsp;</option>'."\n"; $RES4 = mysql_query($REQ4); while ($ROW4 = mysql_fetch_array($RES4)) { echo '<option value="'.$ROW4[0].'">'.stripslashes($ROW4[2].' '.$ROW4[3]).'</option>'."\n"; } mysql_free_result($RES4); echo '</select>'."\n"; } else { echo '<input type="hidden" name="joueursDom[]" value="">'."\n"; } $x++; } echo ' </td> <td class="TxtRight">'.$TXT_DOM.''."\n"; $RES3 = mysql_query($REQ3); while ($ROW3 = mysql_fetch_array($RES3)) { echo '<div class="DeleteRight"><a href="?page=championnat&champ='.$champ.'&annee='.$annee.'&action=compo&action4=supp&id_journee='.$id_journee.'&numero='.$numero.'&id_compo_supp='.$ROW3[2].'" class="Large200M"><span>'.stripslashes($ROW3[0].' '.$ROW3[1]).'</span></a></div>'."\n"; } mysql_free_result($RES3); echo ' </td> <td class="ligne2">&nbsp;</td> <td class="TxtLeft">'.$TXT_EXT.''."\n"; while ($ROW5 = mysql_fetch_array($RES5)) { echo '<div class="DeleteLeft"><a href="?page=championnat&champ='.$champ.'&annee='.$annee.'&action=compo&action4=supp&id_journee='.$id_journee.'&numero='.$numero.'&id_compo_supp='.$ROW5[2].'" class="Large200M"><span>'.stripslashes($ROW5[0].' '.$ROW5[1]).'</span></a></div>'."\n"; } mysql_free_result($RES5); echo ' </td> <td class="TxtLeft">'."\n"; $y = 0; while ($y < (11 - $NBR5)) { if ($y < (11 - $NBR5)) { echo '<select name="joueursExt[]"'.$VAL_EXT.' class="Large200M"> <option value="0">&nbsp;</option>'."\n"; $RES6 = mysql_query($REQ6); while ($ROW6 = mysql_fetch_array($RES6)) { echo '<option value="'.$ROW6[0].'">'.stripslashes($ROW6[2].' '.$ROW6[3]).'</option>'."\n"; } mysql_free_result($RES6); echo '</select>'."\n"; } else { echo '<input type="hidden" name="joueursExt[]" value="" />'."\n"; } $y++; } echo ' </td> </tr> </tbody> <tfoot class="ui-widget-footer"> <tr> <td colspan="5" class="TxtCenter"> <input type="hidden" name="page" value="championnat" /> <input type="hidden" name="champ" value="'.$champ.'" /> <input type="hidden" name="annee" value="'.$annee.'" /> <input type="hidden" name="action" value="compo" /> <input type="hidden" name="action3" value="2" /> <input type="hidden" name="numero" value="'.$numero.'" /> <input type="hidden" name="journee_suivante" value="1" /> <input type="hidden" name="nb_matchs" value="'.nb_matchs($numero, $champ).'" /> <input type="hidden" name="nbdom[]" value="11" /> <input type="hidden" name="nbext[]" value="11" /> <input type="submit" value="'.ENVOI.'" /> </td> </tr> </tfoot> </table> </form>'."\n\n"; } else { echo ' <table class="Large100P ui-widget ui-widget-content"> <thead> <tr class="ui-widget-header"> <th class="Large45P TxtRight">'.$CLUB_DOM.'</th> <th class="Large10P TxtCenter">'.$ROW1[2].' - '.$ROW1[3].'</th> <th class="Large45P TxtLeft">'.$CLUB_EXT.'</th> </tr> </thead> <tbody> <tr> <td colspan="3" class="TxtCenter">'.$TXT_J.'</td> </tr> <tbody> </table>'."\n"; } $e++; } } else { echo InfoReqSql('InfTitMatch', 0, 'highlight', 'alert', 'Aucun matchs renseign&eacute;s pour cette journ&eacute;e. Allez dans la rubrique [ <a href="index.php?page=championnat&action=matchs&champ='.$champ.'&annee='.$annee.'&numero='.$numero.'">Matchs</a> ]'); } mysql_free_result($REQ1); ?>
Je vous remercie par avance pour vos réponses,

Kinslow :wink:

ViPHP
AB
ViPHP | 5818 Messages

23 nov. 2012, 01:10

Il faut que tu crée dans ta bdd (si ce n'est déjà fait) un champ qui enregistrera l'ordre que tu as choisi. Et ensuite à la lecture tu fais ton ORDER BY en fonction de ce champ

kinslow
Invité n'ayant pas de compte PHPfrance

23 nov. 2012, 01:28

Ok ça marche je vais créer le champ "numéro" dans la bdd et trier par ordre ensuite. Par contre comment et où je dois modifier le code pour que le joueur sélectionné en premier soit enregistré dans le champ "numéro" et ai pour valeur le "1" ?

Merci, Kinslow

Avatar du membre
Mammouth du PHP | 1609 Messages

23 nov. 2012, 01:55

Tu dois avoir une boucle, pour enregistrer les données, qui traite les listes déroulantes dans l'ordre ?
Dans cette boucle tu rajoutes un compteur et tu injectes sa valeur dans le champ "numéro".
Développeur web depuis + de 20 ans

Kinslow
Invité n'ayant pas de compte PHPfrance

23 nov. 2012, 12:40

C'est possible mais j'ai un niveau débutant et je n'arriverais malheureusement pas à modifier le code suivant ton conseil :|

Kinslow

Avatar du membre
Mammouth du PHP | 1609 Messages

23 nov. 2012, 13:09

T'es peut être débutant mais si tu veux progresser tu dois y arriver par toi même.
S'il y a quelque chose que tu ne comprends pas tu peux poser des questions pour qu'on t'aide à avancer pas à pas.
Développeur web depuis + de 20 ans