Choisir l'ordre d'affichage PHP/ MYSQL
Résolu
baba_cool
Messages postés
183
Date d'inscription
Statut
Membre
Dernière intervention
-
baba_cool Messages postés 183 Date d'inscription Statut Membre Dernière intervention -
baba_cool Messages postés 183 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Sur un site que je develloppe, j'ai créé une page liens et une page albums photos. J'aimerais pouvoir choisir l'ordre dans lequel afficher les liens ou les albums. J'ai donc afficher les albums dans l'ordre, avec un bouton monter et un descendre. J'enregistre dans ma DB un numero que j'appel "ordre".
Ca donne ca:
// ORDRE DES ALBUMS PHOTOS
@ $monter = $_POST['monter'];
@ $descendre = $_POST['descendre'];
@ $ordre = $_POST['ordre'];
@ $id = $_POST['id'];
if ($monter != NULL)
{
$bas =''.$ordre.''+1;
$haut =''.$ordre.''-1;
$req = mysql_query("UPDATE fralbums SET ordre='0' WHERE ordre='$haut' ");
$req = mysql_query("UPDATE fralbums SET ordre='$haut' WHERE ordre='$ordre' ");
$req = mysql_query("UPDATE fralbums SET ordre='$ordre' WHERE ordre='0' ");
}
if ($descendre != NULL)
{
$bas =''.$ordre.''+1;
$haut =''.$ordre.''-1;
$req = mysql_query("UPDATE fralbums SET ordre='0' WHERE ordre='$bas' ");
$req = mysql_query("UPDATE fralbums SET ordre='$bas' WHERE ordre='$ordre' ");
$req = mysql_query("UPDATE fralbums SET ordre='$ordre' WHERE ordre='0' ");
}
@ $subordre = $_POST['subordre'];
if($subordre != NULL)
{
echo '<strong>Ordre d\'affichage des albums:<br><br></strong>';
echo '<table width="200" border="1">';
$req = mysql_query("SELECT * FROM fralbums ORDER by ordre");
while($data = mysql_fetch_assoc($req))
{
@ $titrealbum = ''.$data['titrealbum'].'';
$id = ''.$data['id_album'].'';
$ordre = ''.$data['ordre'].'';
if ($id == 1){ echo ''; }
// Affichage des albums
else {
echo '<form action="adminalbums.php" method="post">';
echo '<tr>';
echo '<td>'.$titrealbum.'</td>';
echo '<input type="hidden" value="'.$id.'" name="id">';
echo '<input type="hidden" value="Choisir l\'ordre d\'affichage des albmus" name="subordre">';
echo '<input type="hidden" value="'.$ordre.'" name="ordre">';
echo '<td><input type="submit" value="Monter" name="monter"></td>';
echo '<td><input type="submit" value="Descendre" name="descendre"></td>';
echo '</tr>';
echo '</form>';
}
}
echo '</table><br><br><br>';
}
else
{
echo '<form action="adminalbums.php" method="post">';
echo '<input type="submit" value="Choisir l\'ordre d\'affichage des albmus" name="subordre">';
echo '</form>';
}
ca marche nickel, a part une chose: si je supprime un album, (par exemple le 5eme), je me retrouve avec un classement qui fait : 1,2,3,4,6,7,... ce qui fait que ma fonction monter et descendre se retrouve avec un "vide". J'essaye donc de reatribuer automatiquement les numeros du champ "ordre" lorsque je supprime ou ajoute un nouvel album:
// Reinisialisation automatique des valeurs de l'ordre d'afffichage
$req = mysql_query("SELECT * FROM fralbums ORDER BY ordre");
while($data = mysql_fetch_assoc($req))
{
$ordre = ''.$data['ordre'].'';
$ordre++;
$req = mysql_query("UPDATE fralbums SET ordre='$ordre'");
}
mais voila, malgré que le UPDATE se fasse dans une boucle, il augmente bien la valeur de 1, mais pour tout les enregistrements d'un coup...
Sur un site que je develloppe, j'ai créé une page liens et une page albums photos. J'aimerais pouvoir choisir l'ordre dans lequel afficher les liens ou les albums. J'ai donc afficher les albums dans l'ordre, avec un bouton monter et un descendre. J'enregistre dans ma DB un numero que j'appel "ordre".
Ca donne ca:
// ORDRE DES ALBUMS PHOTOS
@ $monter = $_POST['monter'];
@ $descendre = $_POST['descendre'];
@ $ordre = $_POST['ordre'];
@ $id = $_POST['id'];
if ($monter != NULL)
{
$bas =''.$ordre.''+1;
$haut =''.$ordre.''-1;
$req = mysql_query("UPDATE fralbums SET ordre='0' WHERE ordre='$haut' ");
$req = mysql_query("UPDATE fralbums SET ordre='$haut' WHERE ordre='$ordre' ");
$req = mysql_query("UPDATE fralbums SET ordre='$ordre' WHERE ordre='0' ");
}
if ($descendre != NULL)
{
$bas =''.$ordre.''+1;
$haut =''.$ordre.''-1;
$req = mysql_query("UPDATE fralbums SET ordre='0' WHERE ordre='$bas' ");
$req = mysql_query("UPDATE fralbums SET ordre='$bas' WHERE ordre='$ordre' ");
$req = mysql_query("UPDATE fralbums SET ordre='$ordre' WHERE ordre='0' ");
}
@ $subordre = $_POST['subordre'];
if($subordre != NULL)
{
echo '<strong>Ordre d\'affichage des albums:<br><br></strong>';
echo '<table width="200" border="1">';
$req = mysql_query("SELECT * FROM fralbums ORDER by ordre");
while($data = mysql_fetch_assoc($req))
{
@ $titrealbum = ''.$data['titrealbum'].'';
$id = ''.$data['id_album'].'';
$ordre = ''.$data['ordre'].'';
if ($id == 1){ echo ''; }
// Affichage des albums
else {
echo '<form action="adminalbums.php" method="post">';
echo '<tr>';
echo '<td>'.$titrealbum.'</td>';
echo '<input type="hidden" value="'.$id.'" name="id">';
echo '<input type="hidden" value="Choisir l\'ordre d\'affichage des albmus" name="subordre">';
echo '<input type="hidden" value="'.$ordre.'" name="ordre">';
echo '<td><input type="submit" value="Monter" name="monter"></td>';
echo '<td><input type="submit" value="Descendre" name="descendre"></td>';
echo '</tr>';
echo '</form>';
}
}
echo '</table><br><br><br>';
}
else
{
echo '<form action="adminalbums.php" method="post">';
echo '<input type="submit" value="Choisir l\'ordre d\'affichage des albmus" name="subordre">';
echo '</form>';
}
ca marche nickel, a part une chose: si je supprime un album, (par exemple le 5eme), je me retrouve avec un classement qui fait : 1,2,3,4,6,7,... ce qui fait que ma fonction monter et descendre se retrouve avec un "vide". J'essaye donc de reatribuer automatiquement les numeros du champ "ordre" lorsque je supprime ou ajoute un nouvel album:
// Reinisialisation automatique des valeurs de l'ordre d'afffichage
$req = mysql_query("SELECT * FROM fralbums ORDER BY ordre");
while($data = mysql_fetch_assoc($req))
{
$ordre = ''.$data['ordre'].'';
$ordre++;
$req = mysql_query("UPDATE fralbums SET ordre='$ordre'");
}
mais voila, malgré que le UPDATE se fasse dans une boucle, il augmente bien la valeur de 1, mais pour tout les enregistrements d'un coup...
A voir également:
- Choisir l'ordre d'affichage PHP/ MYSQL
- Excel trier par ordre croissant chiffre - Guide
- Affichage double ecran - Guide
- Easy php - Télécharger - Divers Web & Internet
- Windows 11 affichage classique - Guide
- Mysql community server - Télécharger - Bases de données
4 réponses
J'ai compris !!!!
je n'ai pas trouvé la syntaxe pour le classement alphabétique, mais en fait c'est tout bete... pour que mysql classe correctement les chiffres, il suffit de lui dire que ce champ est numérique (INT) et nom pas alphabétique (TEXT )...
maintenant tout marche impeccable !!!
// Remise dans l ordre des albums a chaque ouverture de la page
$reqa = mysql_query("UPDATE fralbums SET ordre='0' WHERE id_album='1'");
$plus = "0";
$reqb = mysql_query("SELECT * FROM fralbums ORDER by ordre");
while($data = mysql_fetch_assoc($reqb))
{
$id = ''.$data['id_album'].'';
$plus++;
echo "$plus";
$reqc = mysql_query("UPDATE fralbums SET ordre='$plus' WHERE id_album='$id'");
}
// ORDRE DES ALBUMS PHOTOS
@ $monter = $_POST['monter'];
@ $descendre = $_POST['descendre'];
@ $ordre = $_POST['ordre'];
@ $id = $_POST['id'];
if ($monter != NULL)
{
$bas = ''.$ordre.''+1;
$haut = ''.$ordre.''-1;
$req = mysql_query("UPDATE fralbums SET ordre='0' WHERE ordre='$haut' ");
$req = mysql_query("UPDATE fralbums SET ordre='$haut' WHERE ordre='$ordre' ");
$req = mysql_query("UPDATE fralbums SET ordre='$ordre' WHERE ordre='0' ");
}
if ($descendre != NULL)
{
$bas = ''.$ordre.''+1;
$haut = ''.$ordre.''-1;
$req = mysql_query("UPDATE fralbums SET ordre='0' WHERE ordre='$bas' ");
$req = mysql_query("UPDATE fralbums SET ordre='$bas' WHERE ordre='$ordre' ");
$req = mysql_query("UPDATE fralbums SET ordre='$ordre' WHERE ordre='0' ");
}
@ $subordre = $_POST['subordre'];
if($subordre != NULL)
{
echo '<strong>Ordre d\'affichage des albums:<br><br></strong>';
echo '<table width="200" border="1">';
$req = mysql_query("SELECT * FROM fralbums ORDER by ordre");
while($data = mysql_fetch_assoc($req))
{
@ $titrealbum = ''.$data['titrealbum'].'';
$id = ''.$data['id_album'].'';
$ordre = ''.$data['ordre'].'';
if ($id == 1){ echo ''; }
// Affichage des albums
else {
echo '<form action="adminalbums.php" method="post">';
echo '<tr>';
echo '<td>'.$titrealbum.'</td>';
echo '<input type="hidden" value="'.$id.'" name="id">';
echo '<input type="hidden" value="Choisir l\'ordre d\'affichage des albmus" name="subordre">';
echo '<input type="hidden" value="'.$ordre.'" name="ordre">';
echo '<td><input type="submit" value="Monter" name="monter"></td>';
echo '<td><input type="submit" value="Descendre" name="descendre"></td>';
echo '</tr>';
echo '</form>';
}
}
echo '</table><br><br><br>';
}
else
{
echo '<form action="adminalbums.php" method="post">';
echo '<input type="submit" value="Choisir l\'ordre d\'affichage des albmus" name="subordre">';
echo '</form>';
}
je n'ai pas trouvé la syntaxe pour le classement alphabétique, mais en fait c'est tout bete... pour que mysql classe correctement les chiffres, il suffit de lui dire que ce champ est numérique (INT) et nom pas alphabétique (TEXT )...
maintenant tout marche impeccable !!!
// Remise dans l ordre des albums a chaque ouverture de la page
$reqa = mysql_query("UPDATE fralbums SET ordre='0' WHERE id_album='1'");
$plus = "0";
$reqb = mysql_query("SELECT * FROM fralbums ORDER by ordre");
while($data = mysql_fetch_assoc($reqb))
{
$id = ''.$data['id_album'].'';
$plus++;
echo "$plus";
$reqc = mysql_query("UPDATE fralbums SET ordre='$plus' WHERE id_album='$id'");
}
// ORDRE DES ALBUMS PHOTOS
@ $monter = $_POST['monter'];
@ $descendre = $_POST['descendre'];
@ $ordre = $_POST['ordre'];
@ $id = $_POST['id'];
if ($monter != NULL)
{
$bas = ''.$ordre.''+1;
$haut = ''.$ordre.''-1;
$req = mysql_query("UPDATE fralbums SET ordre='0' WHERE ordre='$haut' ");
$req = mysql_query("UPDATE fralbums SET ordre='$haut' WHERE ordre='$ordre' ");
$req = mysql_query("UPDATE fralbums SET ordre='$ordre' WHERE ordre='0' ");
}
if ($descendre != NULL)
{
$bas = ''.$ordre.''+1;
$haut = ''.$ordre.''-1;
$req = mysql_query("UPDATE fralbums SET ordre='0' WHERE ordre='$bas' ");
$req = mysql_query("UPDATE fralbums SET ordre='$bas' WHERE ordre='$ordre' ");
$req = mysql_query("UPDATE fralbums SET ordre='$ordre' WHERE ordre='0' ");
}
@ $subordre = $_POST['subordre'];
if($subordre != NULL)
{
echo '<strong>Ordre d\'affichage des albums:<br><br></strong>';
echo '<table width="200" border="1">';
$req = mysql_query("SELECT * FROM fralbums ORDER by ordre");
while($data = mysql_fetch_assoc($req))
{
@ $titrealbum = ''.$data['titrealbum'].'';
$id = ''.$data['id_album'].'';
$ordre = ''.$data['ordre'].'';
if ($id == 1){ echo ''; }
// Affichage des albums
else {
echo '<form action="adminalbums.php" method="post">';
echo '<tr>';
echo '<td>'.$titrealbum.'</td>';
echo '<input type="hidden" value="'.$id.'" name="id">';
echo '<input type="hidden" value="Choisir l\'ordre d\'affichage des albmus" name="subordre">';
echo '<input type="hidden" value="'.$ordre.'" name="ordre">';
echo '<td><input type="submit" value="Monter" name="monter"></td>';
echo '<td><input type="submit" value="Descendre" name="descendre"></td>';
echo '</tr>';
echo '</form>';
}
}
echo '</table><br><br><br>';
}
else
{
echo '<form action="adminalbums.php" method="post">';
echo '<input type="submit" value="Choisir l\'ordre d\'affichage des albmus" name="subordre">';
echo '</form>';
}
Merci, ton idée fonctionne nickel, mais un nouveau probeleme se pose:
lorsque l'on effectu un tri sur des chiffres, il classe de cette maniere : 1,2,3,31,32,4... donc marche pas pour moi. J'ai donc remplacé les chiffres par des lettres. Impeccable !!! sauf que si la commande $ordre++ fonctionne bien, la commande $ordre-- reste sans effet... donc, quel est le contraire de ++ ???
if ($monter != NULL)
{
$bas =''.$ordre++.'';
$haut =''.$ordre--.'';
$req = mysql_query("UPDATE fralbums SET ordre='0' WHERE ordre='$haut' ");
$req = mysql_query("UPDATE fralbums SET ordre='$haut' WHERE ordre='$ordre' ");
$req = mysql_query("UPDATE fralbums SET ordre='$ordre' WHERE ordre='0' ");
}
if ($descendre != NULL)
{
$bas =''.$ordre++.'';
$haut =''.$ordre--.'';
$req = mysql_query("UPDATE fralbums SET ordre='0' WHERE ordre='$bas' ");
$req = mysql_query("UPDATE fralbums SET ordre='$bas' WHERE ordre='$ordre' ");
$req = mysql_query("UPDATE fralbums SET ordre='$ordre' WHERE ordre='0' ");
}
lorsque l'on effectu un tri sur des chiffres, il classe de cette maniere : 1,2,3,31,32,4... donc marche pas pour moi. J'ai donc remplacé les chiffres par des lettres. Impeccable !!! sauf que si la commande $ordre++ fonctionne bien, la commande $ordre-- reste sans effet... donc, quel est le contraire de ++ ???
if ($monter != NULL)
{
$bas =''.$ordre++.'';
$haut =''.$ordre--.'';
$req = mysql_query("UPDATE fralbums SET ordre='0' WHERE ordre='$haut' ");
$req = mysql_query("UPDATE fralbums SET ordre='$haut' WHERE ordre='$ordre' ");
$req = mysql_query("UPDATE fralbums SET ordre='$ordre' WHERE ordre='0' ");
}
if ($descendre != NULL)
{
$bas =''.$ordre++.'';
$haut =''.$ordre--.'';
$req = mysql_query("UPDATE fralbums SET ordre='0' WHERE ordre='$bas' ");
$req = mysql_query("UPDATE fralbums SET ordre='$bas' WHERE ordre='$ordre' ");
$req = mysql_query("UPDATE fralbums SET ordre='$ordre' WHERE ordre='0' ");
}
apres plusieurs essais, je comprends encore moins... avec des valeurs numériques, la syntaxe $ordre-- fonctionne... mysql ne sait pas lire l'alphabet à l'envers???
donc deux solutions : ou je trouve comment classer mes valeurs numerique d'une maniere cohérente (8,9,10,11 et pas 1,10,11,2) ou je trouve comment oter 1 à une lettre.
J'avais bien pensé utiliser mon champ id qui est auto incrémenté mais ca m'arrange pas vraiment.
A l'aide !
donc deux solutions : ou je trouve comment classer mes valeurs numerique d'une maniere cohérente (8,9,10,11 et pas 1,10,11,2) ou je trouve comment oter 1 à une lettre.
J'avais bien pensé utiliser mon champ id qui est auto incrémenté mais ca m'arrange pas vraiment.
A l'aide !
Salut,
Il faut que tu mette dans une variable l'indice du "trou"
Ensuite dans ton while tu fais ceci :
$trou="tontrou"
$compteur=0;
$req = mysql_query("SELECT * FROM fralbums ORDER BY ordre");
while($data = mysql_fetch_assoc($req))
{
if($compteur<$trou){
$ordre = ''.$data['ordre'].'';
$ordre++;
}
$req = mysql_query("UPDATE fralbums SET ordre='$ordre'");
}
A adapter bien evidemment. mais l'idée est de faire la modif qu'à partir de l'indice ou tu en a besoin.
ciao
zz
Il faut que tu mette dans une variable l'indice du "trou"
Ensuite dans ton while tu fais ceci :
$trou="tontrou"
$compteur=0;
$req = mysql_query("SELECT * FROM fralbums ORDER BY ordre");
while($data = mysql_fetch_assoc($req))
{
if($compteur<$trou){
$ordre = ''.$data['ordre'].'';
$ordre++;
}
$req = mysql_query("UPDATE fralbums SET ordre='$ordre'");
}
A adapter bien evidemment. mais l'idée est de faire la modif qu'à partir de l'indice ou tu en a besoin.
ciao
zz