IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Changer l'ordre d'apparition de mes articles [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 181
    Points : 78
    Points
    78
    Par défaut Changer l'ordre d'apparition de mes articles
    Bonjour,
    J'ai une base d'articles avec des articles qui apparaîssent à partir du dernier numéro d'article saisi. Ce que j'aimerais, c'est pouvoir afficher plusieurs articles mais dans l'ordre que je souhaite.
    Je n'ai aucune idée comment m'y prendre.
    Je pense créer dans ma table article un champ "ordre" mais après, comment faire pour que dans ma base d'administration, je puisse cliquer sur une flèche haut pour monter l'article ou une flèche bas pour descendre l'article plus bas ????? car lorsque je cliquerais sur la flèche du haut pour monter un article, l'ordre de tous les autres articles va devoir changer
    Je n'ai pas trouver d'aide à ce sujet. Donc si vous avez une idée, juste une p'tite aide pour m'orienter, ça m'aiderait bien, merci beaucoup.
    Sandy.

  2. #2
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 288
    Points : 375
    Points
    375
    Par défaut
    je pense que ton idée est la meilleur : mettre un ordre

    Lorsque tu veux le monter (clique sur la fleche du haut) mise à jour seulement de l'article qui est en dessous et inversement si tu veux le descendre

    Exemple Article X (ordre 30)

    tu veux le passer en ordre 29

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE ARTICLE SET ORDRE = 30 WHERE ID_ARTICLE = ARTICLE_ORDRE_29
    UPDATE ARTICLE SET ORDRE = 29 WHERE ID_ARTICLE = ARTICLE_ORDRE_30

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 181
    Points : 78
    Points
    78
    Par défaut
    Ah merci pour cette piste, je vais essayer de faire ça

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 181
    Points : 78
    Points
    78
    Par défaut
    Mais comment faire pour que lorsqu'on clique sur la flèche, le update soit pris en compte svp ?? Où dois-je mettre UPDATE ???

    Le lien doit-il se trouver sur la même page ?? là, j'ai mis index.php mais je n'ai aucune idée pour comment ça va marcher.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo "<td align=center><a href=\"index.php?ordre=".$donnees['ordre']."\"><img src=\"../images/fleche_haut.gif\" border=0></a> <a href=\"index.php?ordre=".$donnees['ordre']."\"><img src=\"../images/fleche_bas.gif\" border=0></a></td>";
    Merci d'avance

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 181
    Points : 78
    Points
    78
    Par défaut
    Je reformule car j'ai dû mal m'exprimer :
    Comment faire pour que lorsque l'on clique sur la flèche du haut, l'article monte ??? Le update se met-il dans le a href ???


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    $reponse = mysql_query('SELECT * FROM '.$table4.' ORDER BY ordre DESC LIMIT ' . $premierUrlAafficher . ', ' . $nombreDArticlesParPage);
    $n2 = mysql_num_rows($reponse);
     
     
    while ($donnees = mysql_fetch_array($reponse))
    {
    $donnees0=$donnees['ordre']-1;
    $donnees1=$donnees['ordre']+1;
    echo "<td align=center>".$donnees['ordre']."";
    if ($donnees1<=$n2) {
    echo "<a href=\"index.php?ordre=".$donnees1."\"><img src=\"../images/fleche_haut.gif\" border=0></a> ";
    }
    if ($donnees0!='0') {
    echo "<a href=\"index.php?ordre=".$donnees0."\"><img src=\"../images/fleche_bas.gif\" border=0></a>";
    }
    echo "</td>";
     
    }

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 181
    Points : 78
    Points
    78
    Par défaut
    En fait, j'ai fait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    switch ($ordre) { 
    case $donnees0 : 
    $sql="UPDATE ".$table4." SET ordre=".$donnees0." WHERE ordre=".$donnees['ordre']."";
    $sql2="UPDATE ".$table4." SET ordre=".$donnees['ordre']." WHERE ordre=".$donnees0."";
    $reponse = mysql_query($sql) or die(mysql_error()); 
    $reponse2 = mysql_query($sql2) or die(mysql_error()); 
    break;
    case $donnees1 :
    $sql="UPDATE ".$table4." SET ordre=".$donnees1." WHERE ordre=".$donnees['ordre']."";
    $sql2="UPDATE ".$table4." SET ordre=".$donnees['ordre']." WHERE ordre=".$donnees1."";
    $reponse = mysql_query($sql) or die(mysql_error()); 
    $reponse2 = mysql_query($sql2) or die(mysql_error()); 
    break;
    }
    mais je n'ai aucune idée où le mettre.
    SVP, merci de m'orienter car je me perds à force... le switch fonctionnera-t-il comme ça ??? euh... apparemment ça ne marche pas, d'où ma question lol... Où mettre ces update lors du clic sur le haut ou le bas de la flèche pour changer l'ordre d'apparition ??? Merci d'avance

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 181
    Points : 78
    Points
    78
    Par défaut
    Bon, laissez tomber, j'ai réussi à faire ce que je voulais (les update) en chargeant une page lorsqu'on clique sur la fleche du haut et une autre page lorsqu'on clique en bas... dommage car j'aurais voulu que ça se fasse automatiquement sur la meme page (la page des articles) d'où une de mes raisons pourquoi j'ai fait un refresh vers la page des articles...

  8. #8
    Nouveau membre du Club
    Inscrit en
    Juin 2007
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 33
    Points : 31
    Points
    31
    Par défaut J'ai pas tout compris...
    Pourquoi est-ce que tu veux modifier l'ordre dans tes tables? Si c'est juste à l'affichage que tes articles sont présentés dans l'ordre que tu souhaites, ça ne te suffit pas?

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 181
    Points : 78
    Points
    78
    Par défaut
    Jusqu'à présent, je n'avais pas de champ "ordre" dans ma table, j'avais que le numero avec l'article et donc, à l'affichage, en faisant un ORDER BY, cela m'affichait les articles dans l'ordre où je les avais entré dans la base...

    Maintenant, en ayant mis un champ "ordre", tout marche bien... et les articles apparaîssent comme je le souhaite.

    Dans mon index.php, j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    $donnees0=$donnees['ordre']-1;
    $donnees1=$donnees['ordre']+1;
    echo "<td align=center>";
    //if ($donnees1<=$n2) {
    if ($donnees0!='0') {
    echo "<a href=\"index0.php?numero=".$donnees['numero']."&ordre=".$donnees['ordre']."\"><img src=\"../images/fleche_haut.gif\" border=0></a> ";
    }
    //if ($donnees0!='0') {
    if ($donnees1<=$n2) {
    echo "<a href=\"index1.php?numero=".$donnees['numero']."&ordre=".$donnees['ordre']."\"><img src=\"../images/fleche_bas.gif\" border=0></a>";
    }
    echo "<br />";
    echo "<font size=1>".$donnees['ordre']."";
    if ($donnees['ordre']!=1) {
    echo "ème";
    } else { echo "er"; }
    echo "</font>";
    echo "</td>";

    Dans mon index0.php, j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    <?
    include("../haut_page.php");
     
    include ("../variables.php");
    include ("../connect.inc.php");
     
    $ordre2=$_GET['ordre'];
    $numero=$_GET['numero'];
    $sql="SELECT * FROM ".$table4." WHERE ordre=".$ordre2." AND numero=".$numero."";
    $reponse = mysql_query($sql);
     
     
    while ($donnees = mysql_fetch_array($reponse))
    {
     
    $donnees0=$donnees['ordre']-1;
    $donnees1=$donnees['ordre']+1;
    $ordre=$_GET['ordre'];
     
    $sql4="UPDATE ".$table4." SET ordre=".$ordre." WHERE ordre=".$donnees0."";
    $reponse4 = mysql_query($sql4) or die(mysql_error()); 
    $sql3="UPDATE ".$table4." SET ordre=".$donnees0." WHERE ordre=".$ordre." AND numero=".$numero."";
    $reponse3 = mysql_query($sql3) or die(mysql_error()); 
     
     
    echo "L'ordre de l'article a bien &eacute;t&eacute; modifi&eacute; dans la base de donn&eacute;es.";
    echo "<br /><br />";
    echo "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"0; URL=index.php\">";
     
    }
     
    // on ferme la connexion à la base  
    mysql_close();  
     
    echo "<br />";
     
    include("../bas_page.php");
    ?>

    Dans mon index1.php, j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    <?
    include("../haut_page.php");
     
    include ("../variables.php");
    include ("../connect.inc.php");
     
    $ordre2=$_GET['ordre'];
    $numero=$_GET['numero'];
    $sql="SELECT * FROM ".$table4." WHERE ordre=".$ordre2." AND numero=".$numero."";
    $reponse = mysql_query($sql);
     
     
    while ($donnees = mysql_fetch_array($reponse))
    {
    $donnees0=$donnees['ordre']-1;
    $donnees1=$donnees['ordre']+1;
    $ordre=$_GET['ordre'];
     
    $sql4="UPDATE ".$table4." SET ordre=".$ordre." WHERE ordre=".$donnees1."";
    $reponse4 = mysql_query($sql4) or die(mysql_error()); 
    $sql3="UPDATE ".$table4." SET ordre=".$donnees1." WHERE ordre=".$ordre." AND numero=".$numero."";
    $reponse3 = mysql_query($sql3) or die(mysql_error()); 
     
    echo "L'ordre de l'article a bien &eacute;t&eacute; modifi&eacute; dans la base de donn&eacute;es.";
    echo "<br /><br />";
    echo "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"0; URL=index.php\">";
     
    }
     
     
     
    // on ferme la connexion à la base  
    mysql_close();  
     
    echo "<br />";
     
    include("../bas_page.php");
    ?>

    et tout marche comme ça mais j'aurais préféré que tout se fasse dans l'index.php !

    Enfin bref, tant que ça marche... je ne sais pas si vous avez bien compris ce que je voulais ^^

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. PROC GCHART Changer l'ordre d'apparition des sous-groupes
    Par Hélixe dans le forum ODS et reporting
    Réponses: 10
    Dernier message: 15/02/2012, 13h12
  2. Changer l'ordre d'apparition des colonnes dans un LOV
    Par roby_rou dans le forum Oracle
    Réponses: 2
    Dernier message: 07/05/2010, 21h25
  3. GUI pour changer l'ordre de mes données
    Par tristof dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 12/06/2008, 18h21
  4. Rajout colonne - changer l'ordre des colonnes ?
    Par Coptere dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 13/09/2005, 10h56
  5. changer l'ordre des dates dans table
    Par lordyan dans le forum Requêtes
    Réponses: 11
    Dernier message: 14/01/2005, 11h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo