Petite aide pour faire un truc simplement :D - PHP - Programmation
Marsh Posté le 18-04-2008 à 12:31:47
Alisteroid a écrit : Bonjour,
|
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 ?
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 |
)
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 ...
Marsh Posté le 18-04-2008 à 13:44:25
Comment deux lignes peuvent avoir le même ordre ?
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é.
Marsh Posté le 18-04-2008 à 13:57:33
Non mais c'est un script de modification
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
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 ?
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? 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 .
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
Marsh Posté le 18-04-2008 à 14:21:04
Alisteroid a écrit : |
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.
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++
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++ |
Exactement
Dès fois j'ai la gueule dans le paté et je me prends la tête avant d'avoir essayé, vivement le WE
Ca donne donc (sous Zend framework donc c'est normal si y a des trucs bizarre mais ça reste comprehensible)
if (is_array($ordres) && !empty($ordres)) |
Je vais demander un changement de pseudo
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
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.
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. |
l'ordre c'est pas l'indice du tableau, mais une colonne du tableau, et le tableau est trié selon cette colonne
jusqu'à preuve du contraire, y'a pas de contrainte d'unicité dans une colonne d'un tableau
Marsh Posté le 18-04-2008 à 15:21:55
MagicBuzz a écrit : |
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.
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.
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
Une idée?
Merci
Seb