Petite aide pour faire un truc simplement :D

Petite aide pour faire un truc simplement :D - PHP - Programmation

Marsh Posté le 18-04-2008 à 10:42:54    

Bonjour,
 
J'ai une liste d'élément éditable entierement du style
 
Ordre         Element               Nom

0              Element1              Nom1
1              Element2              Nom2
2              Element3              Nom3
3              Element4              Nom4
4              Element5              Nom5


 
Maintenant si je veux changer l'ordre des éléments, j'édite la colonne ordre et je me retrouve par ex avec :
 
Ordre         Element               Nom

0              Element1              Nom1
1              Element2              Nom2
2              Element3              Nom3
1              Element4              Nom4
4              Element5              Nom5


 
Une fois enregistré je veux retrouver :

Ordre         Element               Nom
0              Element1              Nom1
1              Element2              Nom2
2              Element4              Nom4
3              Element3              Nom3
4              Element5              Nom5


 
 
(pour éviter de tout décaler à la main, je mets 2 fois le même ordre )
Maintenant pour enregistrer (tout ça part en $_POST) je cherche un moyen de réindexer cette colonne ordre, sans partir dans un script de barbare.
Je suis sur et certain qu'on peu faire ça en deux lignes mais je m'y perds :D
 
Une idée?  
 
Merci  
Seb

Reply

Marsh Posté le 18-04-2008 à 10:42:54   

Reply

Marsh Posté le 18-04-2008 à 12:31:47    

Alisteroid a écrit :

Bonjour,
 
J'ai une liste d'élément éditable entierement du style
 
Ordre         Element               Nom

0              Element1              Nom1
1              Element2              Nom2
2              Element3              Nom3
3              Element4              Nom4
4              Element5              Nom5




 
C'est pas clair, c'est quoi un formulaire ? éditable de quelle façon tu veu dire?
tu fait quoi de tes données, tu les insère dans une base de donnée ou un fichier ?

Reply

Marsh Posté le 18-04-2008 à 13:35:43    

Oui c'est un formulaire ou je peux éditer plusieurs lignes à la fois (pour gerer l'affichage de smileys en fait .... element = url de l'image , nom = bbcode, et ordre = ordre d'affichage dans la liste des smileys ...)
Je veux pouvoir modifier facilement l'ordre sans avoir à retaper tout à la main de 0 à n ....
 
Donc lorsque je modifie cette liste (chaque élement est un input texte)
Donc je récupère par exemple:
 

Array
(
    [nom] => Array
        (
            [0] => :dfhdjnd:
            [1] => :dfhdjnd:
            [2] => :dfh:
            [3] => :qsd:
            [4] => :dftgj:
            [5] => :1ysdg:
        )
 
    [element] => Array
        (
            [0] => http://forum-images.hardware.fr/icones/smilies/pt1cable.gif
            [1] => http://forum-images.hardware.fr/icones/smilies/sleep.gif
            [2] => http://forum-images.hardware.fr/icones/smilies/heink.gif
            [3] => http://forum-images.hardware.fr/icones/smilies/jap.gif
            [4] => http://forum-images.hardware.fr/icones/redface.gif
            [5] => http://forum-images.hardware.fr/icones/smilies/pfff.gif
        )
 
    [ordre] => Array
        (
            [0] => 0
            [1] => 1
            [2] => 2
            [3] => 1
            [4] => 3
            [5] => 4
        )


)
Je voudrais donc enregistrer en base tout ça mais en réindexant correctement la colonne ordre pour qu'il n'y ai pas 2 fois "1" comme dans l'exemple ...

Reply

Marsh Posté le 18-04-2008 à 13:44:25    

Comment deux lignes peuvent avoir le même ordre ?


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 18-04-2008 à 13:47:38    

Si j'ai bien compris tu veu créer un table contenant:
 
id du smiley | adresse de l'image du smiley | code correspondant
 
si c'est bien ça laisse tomber la colonne ordre, dans une bd tu peu créer un champ qui s'auto incremente pour chaque entrée. Donc tu créer ta table vide, avec un champ 'id_smiley' en auto increment, un champ contenant ton adresse et un autre le code.
puis dans ton script tu insère dans la bd tes lignes une par une et a chaque fois l'id sera incrémenté.

Reply

Marsh Posté le 18-04-2008 à 13:57:33    

Non mais c'est un script de modification :D
Je veux pouvoir modifier l'ordre d'affichage des smileys dans la liste.
Mais bon, je demande, la réponse va être toute conne et je vais encore me payer la honte


Message édité par Alisteroid le 18-04-2008 à 13:58:40
Reply

Marsh Posté le 18-04-2008 à 14:01:58    

mdr je comprend rien!
 
Poste un ptit bout de code ça nous mettra peut être plus en phase parce que là...
 
Tu as déjà une base de donnée?
tu veu modifier cette base ?
tu connais un peu SQL ?
 
et sielfried pose une bonne question: comment tu t'es debrouillé pour avoir 2 numeros d'ordes (id ?) identiques ?

Reply

Marsh Posté le 18-04-2008 à 14:09:09    

sielfried a écrit :

Comment deux lignes peuvent avoir le même ordre ?


Parce que justement quand j'édite je veux pas éditer tous les ordre pour en changer un seul, imagine que je veuilles mettre juste le dernier smiley avant le premier, je serais obligé de modifier tous les ordres de la liste à la main, la je permet de mettre 2 fois le même ordre, mais je veux justement les traiter en php pour que ça soit une suite de 0 à n.

wrksx a écrit :

mdr je comprend rien!

 

Poste un ptit bout de code ça nous mettra peut être plus en phase parce que là...

 

Tu as déjà une base de donnée?
tu veu modifier cette base ?
tu connais un peu SQL ?

 

et sielfried pose une bonne question: comment tu t'es debrouillé pour avoir 2 numeros d'ordes (id ?) identiques ?


Ba je vois pas ce qu'il y a de pas compréhensible, j'ai expliqué 3 fois ce que je voulais faire !
Oui j'ai une DB, je connais bien le SQL, je veux modifier la colonne ordre de tous les élements en base, sans qu'il y ai 2 éléments avec le même ordre, mais permettre la saisie des 2 elements avec le même ordre, en retraitant les ordre en php .

Message cité 1 fois
Message édité par Alisteroid le 18-04-2008 à 14:11:08
Reply

Marsh Posté le 18-04-2008 à 14:16:52    

Bon laissez tomber j'suis sur une solution simple ... je repasse la mettre ici pour vous montrer que ma question était débile :D


Message édité par Alisteroid le 18-04-2008 à 14:17:03
Reply

Marsh Posté le 18-04-2008 à 14:21:04    

Alisteroid a écrit :


Parce que justement quand j'édite je veux pas éditer tous les ordre pour en changer un seul, imagine que je veuilles mettre juste le dernier smiley avant le premier, je serais obligé de modifier tous les ordres de la liste à la main, la je permet de mettre 2 fois le même ordre, mais je veux justement les traiter en php pour que ça soit une suite de 0 à n.


 
Ben dans ce cas fait en sorte que Javascript te le fasse à ta place. Genre t'as 1, 2, 3, 4, 5 en ordre, tu veux passer le 4 en 1, alors automatiquement en JS le 1 devient 4 (va falloir un bouton pour valider à chaque fois par contre). Sinon si t'as deux lignes avec le même ordre t'as aucun moyen de savoir lequel a "changé" autre qu'aller refetcher ta base de données, ce qui est con. Et puis si plusieurs ordres changent, ça va être le foutoir. [:petrus75]


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 18-04-2008 à 14:21:04   

Reply

Marsh Posté le 18-04-2008 à 14:21:34    

je vois pas la difficulé...
 
tu tries ton array en PHP selon le champ "ordre".
 
puis tu parcoures ton array en écrasant "ordre" par $i++ :spamafote:

Reply

Marsh Posté le 18-04-2008 à 14:35:58    

MagicBuzz a écrit :

je vois pas la difficulé...

 

tu tries ton array en PHP selon le champ "ordre".

 

puis tu parcoures ton array en écrasant "ordre" par $i++ :spamafote:


Exactement :D
Dès fois j'ai la gueule dans le paté et je me prends la tête avant d'avoir essayé, vivement le WE :D

 

Ca donne donc [:ddr555] (sous Zend framework donc c'est normal si y a des trucs bizarre mais ça reste comprehensible)

 


$ordres = $this->_request->getPost('order');
$codes = $this->_request->getPost('code');
$imgs  = $this->_request->getPost('img');

 

if (is_array($ordres) && !empty($ordres))
{
    asort($ordres);
    $i = 0;
    foreach ($ordres as $id_smiley=>$ordre)
    {
        $data = array('code' => $codes[$id_smiley] , 'img' => $imgs[$id_smiley], 'order'=>$i);
        $where = 'id = ' . $id_smiley;
        $smiley->update($data, $where);
        $i ++;
    }
}
....


 [:prozac]
Je vais demander un changement de pseudo  :lol:


Message édité par Alisteroid le 18-04-2008 à 14:37:13
Reply

Marsh Posté le 18-04-2008 à 14:46:08    

Pour ajouter un element a un tableau array c'est array_push() il me semble et pour le classer, tu peut utiliser natcasesort() peut être mais si tu veut les classer dans un ordre particulier, il faudra modifier toutes les entrées à chaque fois.
 
[EDIT]je vois que tu as résolu ton problème


Message édité par masterpsx le 18-04-2008 à 14:48:34
Reply

Marsh Posté le 18-04-2008 à 15:05:48    

Je comprends toujours pas comment quoi que ce soit peut marcher quand ton formulaire a deux lignes avec le même ordre avant de submitter. [:autobot]


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 18-04-2008 à 15:16:06    

sielfried a écrit :

Je comprends toujours pas comment quoi que ce soit peut marcher quand ton formulaire a deux lignes avec le même ordre avant de submitter. [:autobot]


l'ordre c'est pas l'indice du tableau, mais une colonne du tableau, et le tableau est trié selon cette colonne :o
 
jusqu'à preuve du contraire, y'a pas de contrainte d'unicité dans une colonne d'un tableau :o

Message cité 1 fois
Message édité par MagicBuzz le 18-04-2008 à 15:16:36
Reply

Marsh Posté le 18-04-2008 à 15:21:55    

MagicBuzz a écrit :


l'ordre c'est pas l'indice du tableau, mais une colonne du tableau, et le tableau est trié selon cette colonne :o
 
jusqu'à preuve du contraire, y'a pas de contrainte d'unicité dans une colonne d'un tableau :o


 
Ben non mais il va bien devoir le stocker, l'ordre, non ? Il faut que le formulaire lui balance des infos qui ont un sens. :o


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 18-04-2008 à 15:26:42    

Ok, je pense avoir saisi, je croyais que quand il changeait un ordre dans son formulaire c'était censé switcher avec l'ancienne ligne qui avait cet ordre. Genre je change 4 en 1, et il devine que je veux switcher les deux. Mais en fait non, j'avais lu trop vite.


Message édité par sielfried le 18-04-2008 à 15:27:17

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed