Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
783 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Petite aide pour faire un truc simplement :D

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Petite aide pour faire un truc simplement :D

n°1719705
Alisteroid
Posté le 18-04-2008 à 10:42:54  profilanswer
 

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

mood
Publicité
Posté le 18-04-2008 à 10:42:54  profilanswer
 

n°1719818
wrksx
Posté le 18-04-2008 à 12:31:47  profilanswer
 

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 ?

n°1719847
Alisteroid
Posté le 18-04-2008 à 13:35:43  profilanswer
 

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 ...

n°1719853
sielfried
Posté le 18-04-2008 à 13:44:25  profilanswer
 

Comment deux lignes peuvent avoir le même ordre ?


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1719857
wrksx
Posté le 18-04-2008 à 13:47:38  profilanswer
 

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é.

n°1719863
Alisteroid
Posté le 18-04-2008 à 13:57:33  profilanswer
 

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
n°1719865
wrksx
Posté le 18-04-2008 à 14:01:58  profilanswer
 

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 ?

n°1719871
Alisteroid
Posté le 18-04-2008 à 14:09:09  profilanswer
 

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
n°1719880
Alisteroid
Posté le 18-04-2008 à 14:16:52  profilanswer
 

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
n°1719884
sielfried
Posté le 18-04-2008 à 14:21:04  profilanswer
 

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
mood
Publicité
Posté le 18-04-2008 à 14:21:04  profilanswer
 

n°1719886
MagicBuzz
Posté le 18-04-2008 à 14:21:34  profilanswer
 

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:

n°1719902
Alisteroid
Posté le 18-04-2008 à 14:35:58  profilanswer
 

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
n°1719911
masterpsx
Aigloun foutougrafe
Posté le 18-04-2008 à 14:46:08  profilanswer
 

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
n°1719927
sielfried
Posté le 18-04-2008 à 15:05:48  profilanswer
 

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
n°1719935
MagicBuzz
Posté le 18-04-2008 à 15:16:06  profilanswer
 

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
n°1719940
sielfried
Posté le 18-04-2008 à 15:21:55  profilanswer
 

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
n°1719944
sielfried
Posté le 18-04-2008 à 15:26:42  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Petite aide pour faire un truc simplement :D

 

Sujets relatifs
Besoin d'une petite aide[UML] aide diagramme de classe
URGENT !!! Recherche aide concernant AMFPHP (remoting) pour projetGTA4Besoin d'aide composant DBgrid
Fonction aide.stp j'ai besoin d'aide sur les évènements dans java
[VBA] Petite question pour bouton sur ExcelModif de l'example Dev CPP : aide et explications
Aide script wsh 
Plus de sujets relatifs à : Petite aide pour faire un truc simplement :D


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR