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 :

aide sur un script avec position


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 6
    Points : 6
    Points
    6
    Par défaut aide sur un script avec position
    Bonjour,

    Je suis sur un script php/MySQL qui vas me permettre de créer un classement (positions de chaque ligne qui peut évoluer dans ce classement)
    Pour la partie mise à jour, j'aimerais pouvoir mettre en plce un système de glisser/déplacer qui me permettre de modifier le champs position de MySQL a^rès validation.

    Je m'explique:

    j'ai un affichage de mes id comme ceci:

    id1 | id2 | id3
    id4 | id5 | id6
    id7....

    Je connais le nombre de colonnes mais pas forcément le nombre de lignes..

    je voudrais pour changer un id de position pouvoir le cliquer et le déplacer là où je le veux, sachant que les suivant seraient en toute logique leur position déplacés de +1 si je le remonte dans le classement ou de -1 en cas de descente.

    savez vous vers quel type d'outil (jquery peut etre) je dois me diriger pour obtenir ce type de script?

    Merci à vous

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2008
    Messages : 64
    Points : 98
    Points
    98
    Par défaut
    Salut,

    Si tu veux faire du cosmétique sans chargement de page, oui, il faut se tourner vers jQuery, voire même jQueryUI (plugin qui intègre, entre autre, le drag & drop).

    Quoi qu'il en soit, il te faudra via des requêtes AJAX mettre à jour ta BDD. Pour ça il te faudra connaître l'ancienne et la nouvelle position de ton élément. Tu n'as plus qu'à faire deux updates : un pour MAJ tous les éléments entre l'ancienne et la nouvelle position (position = position + 1) et l'autre pour MAJ la position de ton élément sélectionné.

    Exemple de requête pour passer de position 7 à position 3 :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE matable SET position = position + 1 WHERE position BETWEEN 3 AND 6;
    UPDATE matable SET position = 3 WHERE id = [ID];

    Attention : penses à prendre en compte le cas de figure inverse : passer de la position 3 à 7, auquel cas il faudra faire position = position - 1 pour tous les éléments entre 4 et 7.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Hello!
    Merci pour ton aide !
    Je mets déjà un équivalent de mon code en php dur et qui fonctionne (si ça peut aider certains(nes) )

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
     
    $posnow = $valeuractuelle;
    $posnew = $_POST['position'];
    $posadd = $posnow + 1;
    $posless = $posnow - 1;
     
    if($_SERVER['REQUEST_METHOD'] == "POST") 
    {
     
     
    if ($posnow == $posnew)			//si on ne change rien
    { 
    echo "rien n'a changé !";
    }
     
    elseif (($posnow == "0") AND ($posnew != '0'))			//si on ajoute un membre à l'affichage
    { 
    echo "on ajoute un membre dans l'affichage";
     
    $maj1 = "UPDATE matable SET position = position + 1 WHERE position >= '$posnew' ";
    $req_maj1 = mysqli_query($maconnexion, $maj1) or die($maj1. mysqli_error());
     
    $maj2 = "UPDATE matable SET position = '$posnew' WHERE id = '$idmembre'";
    $req_maj2 = mysqli_query($maconnexion, $maj2) or die($maj2. mysqli_error());
     
    }
     
    elseif ($posnew == "0")		//si on retire un membre de l'affichage
    {
    echo "Le membre a bien été retiré de la liste d'affichage";
     
    $maj1 = "UPDATE matable SET position = position - 1 WHERE position >= '$posnow' ";
    $req_maj1 = mysqli_query($maconnexion, $maj1) or die($maj1. mysqli_error());
     
    $maj2 = "UPDATE matable SET position = '$posnew' WHERE id = '$idmembre'";
    $req_maj2 = mysqli_query($maconnexion, $maj2) or die($maj2. mysqli_error());
     
    }
     
    elseif (($posnow != "0") AND ($posnew > $posnow))	//si on envoie le membre vers la fin de la liste
    {
    echo "Le membre est bien déplacé vers la fin de la liste";
     
    $maj1 = "UPDATE matable SET position = position - 1 WHERE position BETWEEN '$posadd' AND '$posnew' ";
    $req_maj1 = mysqli_query($maconnexion, $maj1) or die($maj1. mysqli_error());
     
    $maj2 = "UPDATE matable SET position = '$posnew' WHERE id = '$idmembre'";
    $req_maj2 = mysqli_query($maconnexion, $maj2) or die($maj2. mysqli_error());
    }
     
    elseif (($posnew < $posnow) AND ($posnew != "0"))						//si on envoie le membre vers le début de la liste
    {
    echo "Le membre est bien déplacé vers le début de la liste";
     
    $maj1 = "UPDATE matable SET position = position + 1 WHERE position BETWEEN '$posnew' AND '$posless' ";
    $req_maj1 = mysqli_query($maconnexion, $maj1) or die($maj1. mysqli_error());
     
    $maj2 = "UPDATE matable SET position = '$posnew' WHERE id = '$idmembre'";
    $req_maj2 = mysqli_query($maconnexion, $maj2) or die($maj2. mysqli_error());
    }
     
    else
    {
    echo "choix par défaut";
    }
     
    }
    Je vais m'atteler à jqueryui mais j'ai un peu de mal à comprendre comment je vais pouvoir lui passer toutes mes variables...

    Merci encore à toi

Discussions similaires

  1. Besoin d'aide sur un script bash avec redirection et tail
    Par Invité dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 15/09/2014, 13h31
  2. Besoin d'aide sur comment partir avec mon projet
    Par brutus111 dans le forum Développement 2D, 3D et Jeux
    Réponses: 17
    Dernier message: 01/09/2006, 12h08
  3. Aide sur un script
    Par odrimont dans le forum Linux
    Réponses: 13
    Dernier message: 03/07/2006, 23h03
  4. [Mail] Besoin d'aide sur code email avec PJ
    Par flysurfer dans le forum Langage
    Réponses: 1
    Dernier message: 23/02/2006, 10h52
  5. Besoin d'aide sur un script SQL de recherche
    Par agougeon dans le forum Langage SQL
    Réponses: 5
    Dernier message: 26/10/2005, 11h40

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