Accueil > Forum > > > > insertions multiples (case à cocher, champs ...)
insertions multiples (case à cocher, champs ...)
vendredi 24 février 2006 à 13:12:09 |
insertions multiples (case à cocher, champs ...)

PatX
|
Bonjour !  J'ai un petit soucis avec l'administration de mon menu : le but du jeu, c'est de créer les liens d'un menu en les insérant dans une table d'une base de données et d'y associer des modules. Quand on clique sur le libelle d'un lien, on charge les modules sur 2 colonnes, ordonnés selon un certain ordre définit par le "poids" de chaque module. Tout ça est géré via une interface d'admin dont vous avez un aperçu ici :  Là où je bloque, c'est lors de l'insertion des infos dans la base pour les modules. J'ai 3 types d'infos à insérer : - le nom du module - la colonne où il doit apparaître - sa position dans la colonne Pour ça, je passe par des cases à cocher et des tableaux (array) : - <input type="checkbox" name="module[]" value="'.$module.'"> - <select name="colonne[]"><option value="1">1 | -</option><option value="2">- | 2</option></select> - <input type="text" name="poids_module[]" maxlength="1" size="1"> Vous avez un aperçu ci-dessus. Lors de l'insertion, j'utilise des foreach qui récupèrent les valeurs des tableaux pour les insérer, mais voilà le problème : les dimensions des tableaux ne sont pas les mêmes. J'obtiens les trois tableaux que vous avez dû voir : Un qui liste les modules cochés : Array ( [0] => event [1] => latest_single [2] => pic [3] => recommand ) Un qui liste les colonnes affectées : Array ( [0] => 1 [1] => 1 [2] => 1 [3] => 2 [4] => 2 [5] => 1 ) Un qui liste les poids à affecter : Array ( [0] => [1] => 1 [2] => 2 [3] => 1 [4] => 2 [5] => ) Comme vous le remarquez, le premier tableau liste les 4 cases cocher, mais les suivant prennent en compte toutes les valeurs des input et select, ce qui produit un décalage à l'insertion des données. La solution la plus simple serait de charger une page qui listerait uniquement les modules cochés avec les options "colonne" et "poids" et de ce fait générerait des tableaux de dimensions identiques. Mais je souhaiterai pouvoir renseigner et insérer toutes les infos depuis une seule page avec une ou deux requêtes. Comment me conseillez-vous de procéder ? D'avance merci pour vos réponses !  PS : j'ai fait des recherches dans les codes sans trouver de réponses et ça fait 3 jours que je planche là dessus, alors le premier qui me fournit la soluce obtient mon éternelle reconaissance lol ! 
|
|
vendredi 24 février 2006 à 13:23:41 |
Re : insertions multiples (case à cocher, champs ...)

malalam
|
Réponse acceptée !
Hello,
je te conseillerais de changer de façon de créer tes tableaux, pour ma part. Puisque tu utilises foreach, tu peux avoir une clef, et une valeur. Donc au lieu de créer tes tableaux ainsi : name="tablo[]" je ferais ceci: name="tablo[',$clef,']"
Ainsi, tu pourras très facilement faire correspondre le tableau crée par tes checkboxes (tableau qui en effet ne renverra quelquechose QUE si une checbox est cochée) et ceux de tes input et de tes select. Parce que tu sauras quelle clef tu dois aller chercher.
Jolie interface, sinon :-)
|
|
vendredi 24 février 2006 à 13:24:37 |
Re : insertions multiples (case à cocher, champs ...)

J_G
|
Réponse acceptée !
Salut,
Tout ce que tu fais est très bien... Ton problème va facilement être résolu et ce sera parfait !
Au lieu de mettre : - <input type="checkbox" name="module[]" value="'.$module.'"> -
<select name="colonne[]"><option value="1">1 |
-</option><option value="2">- |
2</option></select> - <input type="text" name="poids_module[]" maxlength="1" size="1">
mets : $i = ???; // for($i=0;$i<?;$i++) - <input type="checkbox" name="module['.$i.']" value="'.$module.'"> -
<select name="colonne['.$i.']"><option value="1">1 |
-</option><option value="2">- |
2</option></select> - <input type="text" name="poids_module['.$i.']" maxlength="1" size="1">
Tu le comprends, les tableaux retournés seront alors (par exmple) : Un qui liste les modules cochés : Array ( [0] => event [1] => latest_single [4] => pic [5] => recommand ) Un qui liste les colonnes affectées : Array ( [0] => 1 [1] => 1 [2] => 1 [3] => 2 [4] => 2 [5] => 1 ) Un qui liste les poids à affecter : Array ( [0] => [1] => 1 [2] => 2 [3] => 1 [4] => 2 [5] => )
Il sera ensuite facile de faire correspondre les réponses des checkbox avec les autres champs.
//Par exemple, tu peux définir un tableau de réponses par défaut pour le tableau $module : $module_default = array_fill(0,0,5); // puis combler les trous de $module avec : $module = array_merge($module, $module_default);
Voilà
Je te laisse chercher dans cette direction... A+
|
|
vendredi 24 février 2006 à 13:28:10 |
Re : insertions multiples (case à cocher, champs ...)

malalam
|
Lol...grillé J_G ;-)
Mais comme tjrs, ton explication est plus complète que la mienne :-) Je suis bien plus flemmard que toi!
|
|
vendredi 24 février 2006 à 13:32:19 |
Re : insertions multiples (case à cocher, champs ...)

J_G
|
Petit filou va !
|
|
vendredi 24 février 2006 à 13:35:00 |
Re : insertions multiples (case à cocher, champs ...)

PatX
|
Merci à tous les deux pour vos indications ! Je vais tâcher de me remettre au travail bien vite, moi qui croyait n'avoir de réponses que dans l'aprem !  @ bientôt donc !
|
|
vendredi 24 février 2006 à 14:53:34 |
Re : insertions multiples (case à cocher, champs ...)

PatX
|
Alors j'ai regardé de plus près les fonctions array_fill() et array_merge() et je pense avoir compris comment elles fonctionnent : la première rempli un tableau à partir d'une case données, sur un nombre de cases définis avec une même valeur ; la seconde prends en compte deux tableaux en ajoutant les valeur du deuxième tableau à la fin du premier. Mais je ne vous suis pas vraiment dans votre raisonnement de valeur par défaut à ajouter, pourriez-vous m'éclaircir un peu ce sujet s'il vous plaît ? (description ou exemple etc.) Merci pour votre aide 
|
|
vendredi 24 février 2006 à 16:37:28 |
Re : insertions multiples (case à cocher, champs ...)

J_G
|
Exemple 1. Exemple avec array_merge() |
<?php
$array1 = array ("couleur" => "rouge", 2, 4);
$array2 = array ("a", "b", "couleur" => "vert", "forme" => "trapézoÔde");
$result = array_merge ($array1, $array2);
print_r($result);
?>
|
L'exemple ci-dessus va afficher :
Array
(
[couleur] => vert
[0] => 2
[1] => 4
[2] => a
[3] => b
[forme] => trapézoÔde
)
Donc on voit bien dans cet exemple que je me suis trompé de sens dans l'ordre des argument passés à array_merge()...
$array1['couleur'] a été remplacé par $array2['couleur'].
donc, tu parts du tableau par défaut, et tu "merge" le tableau de résultat.
Ainsi, les valeurs du tableau de résultat remplaceront les valeurs du tablea par défaut, SI ELLES EXISTENT. Il en résultera un tableau avec des valeurs par défaut là où il n'y avait pas de valeur choisie...
bon, c'est pas très clair, un petit entrainement te montrera vite l'intéret de cette technique...
A+
|
|
vendredi 24 février 2006 à 20:38:06 |
Re : insertions multiples (case à cocher, champs ...)

PatX
|
J'ai essayé de faire des tests avec array() et array_merge() et j'ai compris une partie du fonctionnement (si une donnée n'existe pas dans le premier tableau elle est ajoutée si elle porte le même titre la donnée est mise à jour etc.) mais je ne sais toujours pas comment m'y prendre pour former mes tableaux correctement, récupérer les bonnes valeurs (après un traitement avec array_merge) et les insérer enfin dans ma base. Ca m'énerve d'autant plus qu'une fois ce problème résolu au niveau de l'administration, je pourrais enfin exploiter réellement ce site !  Je partage mon code original (sans les array) à cette adresse pour ne pas encombrer le topic : http://myspeeding206.free.fr/__DL/code.txt J'espère que vous pourrez soit me faire une petite démo où me renvoyer vers un tutoriel car là, j'avouerai que je nage quand même (ça fait que 4 jours que j'ai réussi à réaliser des traitements avec des checkboxes alors soyez indulgent avec un néophyte  ) Merci à vous !
|
|
samedi 25 février 2006 à 23:40:32 |
Re : insertions multiples (case à cocher, champs ...)
|
Cette discussion est classée dans : liste, cocher, tableaux, array, modules
Répondre à ce message
Sujets en rapport avec ce message
Au secours avec les tableaux [ par defkrie ]
voila j1 un tableau du style$l1 = array("0", "0", "0", "0", "0", "0", "0", "0");$l2 = array("0", "0", "0", "0", "0", "0", "0", "0");$l3 = array("0", "
Liste deroulante avec base de données [ par bandzai87 ]
Donc voilà mon truc g une liste deroulantes qui est liées a une autre, elles marchent mais les infos sont écrites en dure j'aimerai faire appelle a de
tri sur 2 tableaux .... [ par djagger ]
Salut !Voici mon problème.J'ai 2 tableaux, correspondant à des noms et les id associées à ces noms:$mesNoms=array();$mesNoms[0]="FFF";$mesNoms[1]="DDD
Débutant - Renvoi d'un tableau à partir d'un fonction [ par n_o_u_n_o_u ]
Bonjour,un collègue vient de me poser une colle :fonction toto( $liste=array(1,2,3,4,5,6); return $liste;);Cette fonction ne semble pas fonctionne
Recuperation des données d'une requete dans une liste deroulante impossible [ par Maiku ]
BonjourJ'essaye de recuperer toutes les données d'un champ de ma base de donnée dans une liste déroulante. Confronté à ce problème, je ne sais que fai
les tableaux de tableaux... [ par Teclis01 ]
Bonjour, En fait j'aimerais faire des tableaux de tableaux et je n' y arrive pas en php mais en dessin oui donc si vous pouviez m'aider a trouver la
Tableaux Multidimentionnels (question relativement tordue ^^) [ par Tizard ]
Bonjour, alors voilà je m'y connais assez en PHP, mais là je suis bloqué.Donc j'ai un tableau de ce type (c'est un jeu de cartes)Array ( Array (1,
Envoyer un form sans submit ! [ par younes371 ]
Bonjour,j'ai une liste de dossiers "virtuel" dans la base de données.Je les liste dans un menu (comme hotmail : deplacer vers boite reception,Brouilla
[Tableaux] Décaler les valeurs [ par tomix81 ]
bonjour,J'ai un tableau defini comme suit:Code :<pre class="alt2" style="BORDER-RIGHT: 1px inset; PADDING-RIGH
valeur dans un array recup d'une table [ par rduvrac ]
Bonjour Je cherche à générer une liste pour l'insérer dans un tableau. j'ai ce code : $listegeneree = array (1, 2, 5, 6, 7); $result = array_rand ($l
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|