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

Bibliothèques et frameworks PHP Discussion :

[Smarty] Manipulation des cases à cocher avec Smarty


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 36
    Points : 22
    Points
    22
    Par défaut [Smarty] Manipulation des cases à cocher avec Smarty
    Bonjour tous le monde,
    Je viens de decouvrir Smarty tres recemment.
    Je souhaite ajouter une case a cocher dans un tableau. le tableau est bien affiché avec la case a cocher.

    Maintenant je veux faire un traitement pour les lignes sélectionnées ( cases cochées ) mais je n'arrive pas a récupérer le résultat de mes cases a cocher dans mon code PHP

    dans mon fichier tpl, j'ai utilisé un code html car je n'arrive pas a faire apparaitre les case a cocher par la fonction html_chokboxes :

    <input type="checkbox" name="selection" value="ProdS" />

    mais comment récupérer le résultat de la case a cocher ?

    j'ai essayé d'utiliser la fonction :
    echo $tpl->get_template_vars('selection');

    et je reçois le message d'erreur suivant :

    Fatal error: Call to a member function get_template_vars() on a non-object in E:\wamp\www\ext\synchro-prodSelec.php on line 39

    Merci pour votre aide

  2. #2
    Expert confirmé
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Points : 4 015
    Points
    4 015
    Par défaut
    Bonjour,
    Pour utiliser html_checkboxes c'est simple => http://www.smarty.net/docsv2/fr/lang...checkboxes.tpl

    Tu sais ce que fait get_template_vars() ?

    Pour récupérer les états des checkbox c'est juste une simple opération de récupération à la soumission du formulaire , peux-tu faire voir ton code html dans le template?

  3. #3
    Membre habitué
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2011
    Messages : 146
    Points : 172
    Points
    172
    Par défaut
    même pas eu le tps de répondre lol =)

  4. #4
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 36
    Points : 22
    Points
    22
    Par défaut
    d'abord je vous remercie d'avoir me repondre assez vite.

    voici une partie de fichier tpl

    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
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    {foreach item=row from=$produits}
    		<tr class="item">
    			<td>
    				<input type="checkbox" name="selection" value="ProdS" />
    			</td>
    			<td>
    				<a href="form_update_produit.php?id_produit={$row->id_produit}" class="action"><img src="{$server_path}extranet/Upload/Produits/Thumb/{$row->photo_produit}" alt="{$row->nom_produit}" title="{$row->nom_produit}"></a>
    			</td>
    			<td>
    				<a href="form_update_produit.php?id_produit={$row->id_produit}" class="action">{$row->libelle_produit}</a>
    			</td>
    			<td>
    				<a href="form_update_produit.php?id_produit={$row->id_produit}" class="action">{$row->nom_fournisseur}</a>
    			</td>
    			<td>
    				<a href="form_update_produit.php?id_produit={$row->id_produit}" class="action">{$row->code_produit}</a>
    			</td>
    			<td>
    				<a href="form_update_produit.php?id_produit={$row->id_produit}" class="action">{$row->nom_produit}</a>
    			</td>
    			  <td><!--
    				{assign var=prop value=""}
    				<table style="width: 100%">
    					{foreach from=$val item=val1}
    						{if $row->id_produit eq $val1->id_produit }
    							{if $val1->libelle_prop neq $prop }
    								{if $prop neq "" }													
    								.</td></tr>														
    								{/if}
    								<tr>						
    								<td valign="top">
    								<b>{$val1->libelle_prop} : </b><br/>
    								</td>
    								<td>					
    								{assign var=prop value=$val1->libelle_prop}
    							{else}
    								, 
    							{/if}
    						{/if}
    						{if $row->id_produit eq $val1->id_produit}
    							{$val1->valeur}
    						{/if}
    					{/foreach}
     
    et voici une partie du code de la fonction que je veux créer :
     
    ftp_putSelec($conn_id, $src_dirMedium, $dirMedium);      					 //synchronisation des produits
    ftp_putSelec($conn_id, $src_dirThumb, $dirThumb);		 					 // synchronisation des thumbs des produits
     
    function ftp_putSelec($conn_id, $src_dir, $dst_dir) {						//fonction de synchronisation
     
    //******
    	$d = dir($src_dir);										
        $condition = true;
    	// ICI je souhaite faire un foreach pour recuperer juste les cases cochées pour transferer le resultat du 2eme champs du tableau a $file
    	//foreach ($_POST['selection'] as "ProdS" ) {
    			echo $tpl->get_template_vars('selection');
    			$file = "test_commande.jpg";	//$_POST['photo_produit'];					//recuperation de l'image du produit à synchroniser
    	    	$upload = ftp_put($conn_id, $dst_dir."/".$file, $src_dir."/".$file, FTP_BINARY); // chargement
                if (!$upload) {												//si le chargement a rencontré un probleme
            					echo "FTP upload has failed! $file";
            					echo ("<br>");
            					$condition = false;
    						  } 
        		else {					 									//si le chargement a reussi OK
        		echo "Le fichier $file a &eacute;t&eacute; transf&eacute;r&eacute; sur le serveur $ftp_server"; 
            	echo ("<br>");
       				 }
     
    	// }
        $d->close();
     
    if($condition){															//avertissement de reussite de synchronisation
    				$etat_sync = "1";
    				$message = "Transmission terminée avec succès.";
    			  }
    else{
    $etat_sync = "2";														//avertissement de l'echec de synchronisation
    $message = "Un ou plusieurs fichiers n'ont pas été transmis.";
    }
    echo ("<br \>");
    echo $message;  														//affichage d'avertissement 
     
    }
     
    ftp_close($conn_id);
     
    ?>
    <input type="button" value="Fermer" onclick="window.close()"/>			<!-- Bouton fermer pour quiter la page -->
    J'ai deja consulté plusieurs fois la page mentionnée de html_checkboxes mais je n'ai pas arrivé a faire afficher les cases a cocher

  5. #5
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 36
    Points : 22
    Points
    22
    Par défaut
    j'ai trouvé la fonction get_template_vars() dans un forum et j'ai essayé de l'utiliser. c'est un peu bete Mais c'est comme ça

  6. #6
    Expert confirmé
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Points : 4 015
    Points
    4 015
    Par défaut
    html_checkboxes est pratique quand t'as un groupe case à cocher à utiliser et donc tu lui passera un tableau de données.

    tu dis que t'y arrives pas à les afficher, fais voir le code que tu utilises pour les afficher?

    Dans le code tpl que tu fourni j'ai vu que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="checkbox" name="selection" value="ProdS" />
    sur lequel tu itères sans même changer le value, ça devrait être name="selection[]" et la valeur qui va avec, enfin ça c'est que du HTML

    J'ai deja consulté plusieurs fois la page mentionnée de html_checkboxes mais je n'ai pas arrivé a faire afficher les cases a cocher
    Je ne sais pas quelle version de smarty tu utilises mais pour info dans la version 3.1.3 sortie récemment:
    - improvement html_checkboxes and html_radios to accept null- and object values, and label_ids attribute

  7. #7
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 36
    Points : 22
    Points
    22
    Par défaut
    j'utilise Smarty version 2.6.18

    le code que j'utilise est le suivant dans le fichier tpl

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {html_checkboxes name='Selection' values=$ProdS}
    et dans le code d'affichage je met

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    //traitement
    $produit = new Produit();
    $produits = $produit->getList();
    $val = $produit->getListwithprop();
    
    $tpl = new SmartyYPS();
    $tpl->setExtranetScripts(array('tablefilter.js','sortable.js'));
    $tpl->assign("page_name","Page d'administration : Liste des produits");
    $tpl->assign("produits",$produits);
    $smarty->assign('prods', $produits);
    $tpl->assign("chemin" , "> Produits");
    $tpl->assign("val",$val);
    $tpl->display("ext/liste_produit.tpl");

  8. #8
    Membre chevronné
    Avatar de eric.pommereau
    Homme Profil pro
    Ingénieur, pôle cartographie
    Inscrit en
    Décembre 2004
    Messages
    715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur, pôle cartographie
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2004
    Messages : 715
    Points : 1 790
    Points
    1 790
    Par défaut
    Bonjour,

    Alors c'est pas compliqué... mais tu as différentes façons de faire en voici une :

    Ta fonction utilisateur html_checkboxes (dans le template) a besoin d'un ensemble de données type tableau associatif où l'ID est la clé et l'intitulé est la valeur. Côté PHP cela donne cela par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ...
    $produits = array(1 => 'decapant', 2 => 'pince', 3 => 'ampoule');
    $selected = 2;
    $oSmarty->assign('produits', $produits);
    $oSmarty->assign('selected', $selected);
    ...
    Ensuite côté template :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {html_checkboxes name='id_produit' options=$produits selected=$selected separator='<br />'}
    Le résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <label><input type="checkbox" name="id_produit[]" value="1" />decapant</label><br />
    <label><input type="checkbox" name="id_produit[]" value="2" checked="checked" />pince</label><br />
    <label><input type="checkbox" name="id_produit[]" value="3" />ampoule</label><br />
    Donc, si je reprends ton exemple, il faudrait que aies une idée de la structure de la variable $produits :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ...
    $produits = $produit->getList();
    var_dump($produits);
    ...
    Voilà... @ suivre

  9. #9
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 36
    Points : 22
    Points
    22
    Par défaut
    Merci pour votre aide précieux.

    Pour vous mettre dans mon contexte :

    j'ai une table produit . je l'affiche avec la méthode de la classe produit produit->getList() dans un tableau (ceci est déjà fait par quelqu'un)

    Maintenant je veux ajouter une case a cocher devant chaque produit (chaque ligne), je me base sur la colonne id_produit qui est sous forme de 242,244,246,...
    la table produit contient id_produit, libelle_produit, photo_produit, ...

    j'ai essayé de créer mes propres values pour les case a cocher mais ça ne marche pas :
    soit une dizaine de case a cocher devant chaque produit ou une case a cocher pour certains, deux pour d'autres, 3 , 4 et le programme se plante dans une boucle infinie.

    le but de ma fonction est : sélectionner les produits a synchroniser (synchro FTP )

  10. #10
    Membre chevronné
    Avatar de eric.pommereau
    Homme Profil pro
    Ingénieur, pôle cartographie
    Inscrit en
    Décembre 2004
    Messages
    715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur, pôle cartographie
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2004
    Messages : 715
    Points : 1 790
    Points
    1 790
    Par défaut
    j'ai essayé de créer mes propres values pour les case a cocher mais ça ne marche pas :
    soit une dizaine de case a cocher devant chaque produit ou une case a cocher pour certains, deux pour d'autres, 3 , 4 et le programme se plante dans une boucle infinie.
    Je ne comprends pas... c'est une case par produit ou plusieurs cases par produit ?

  11. #11
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 36
    Points : 22
    Points
    22
    Par défaut
    Je souhaite avoir une seule case a cocher par produit

  12. #12
    Membre chevronné
    Avatar de eric.pommereau
    Homme Profil pro
    Ingénieur, pôle cartographie
    Inscrit en
    Décembre 2004
    Messages
    715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur, pôle cartographie
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2004
    Messages : 715
    Points : 1 790
    Points
    1 790
    Par défaut
    tu peux faire un var_dump() de ton tableau de produits ?

  13. #13
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 36
    Points : 22
    Points
    22
    Par défaut
    voici les 4 ers éléments du resultat de var_dump() de la variable produits
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    array(828) { [0]=> object(stdClass)#6 (18) { ["produit_largeur"]=> string(1) "0" ["produit_hauteur"]=> string(1) "0" ["capacite"]=> string(1) "1" ["id_produit"]=> string(2) "50" ["id_tproduit"]=> string(1) "8" ["nom_produit"]=> string(15) "GALLERY Support" ["prix_produit"]=> string(3) "300" ["photo_produit"]=> string(21) "813220_yapas17107.jpg" ["libelle_produit"]=> string(11) "Accessoires" ["impression"]=> string(1) "0" ["gestion_stock"]=> string(1) "1" ["stock"]=> string(1) "1" ["web"]=> string(1) "1" ["promo"]=> string(1) "0" ["code_produit"]=> string(10) "306008-009" ["qstock"]=> string(2) "15" ["id_fournisseur"]=> string(1) "2" ["nom_fournisseur"]=> string(5) "Umbra" } [1]=> object(stdClass)#7 (18) { ["produit_largeur"]=> string(1) "0" ["produit_hauteur"]=> string(1) "0" ["capacite"]=> string(3) "700" ["id_produit"]=> string(3) "122" ["id_tproduit"]=> string(1) "8" ["nom_produit"]=> string(14) "CD VIERGE SONY" ["prix_produit"]=> string(2) "10" ["photo_produit"]=> string(21) "911810_yapas17317.jpg" ["libelle_produit"]=> string(11) "Accessoires" ["impression"]=> string(1) "0" ["gestion_stock"]=> string(1) "1" ["stock"]=> string(1) "1" ["web"]=> string(1) "1" ["promo"]=> string(1) "0" ["code_produit"]=> string(6) "CDSONY" ["qstock"]=> string(2) "98" ["id_fournisseur"]=> string(1) "4" ["nom_fournisseur"]=> string(6) "Divers" } [2]=> object(stdClass)#8 (18) { ["produit_largeur"]=> string(1) "0" ["produit_hauteur"]=> string(1) "0" ["capacite"]=> string(1) "0" ["id_produit"]=> string(3) "236" ["id_tproduit"]=> string(1) "8" ["nom_produit"]=> string(28) "Clé USB Kingston 8 GB" ["prix_produit"]=> string(3) "300" ["photo_produit"]=> string(21) "506752_yapas17072.jpg" ["libelle_produit"]=> string(11) "Accessoires" ["impression"]=> string(1) "0" ["gestion_stock"]=> string(1) "1" ["stock"]=> string(1) "1" ["web"]=> string(1) "1" ["promo"]=> string(1) "0" ["code_produit"]=> string(7) "USBK8GB" ["qstock"]=> string(1) "1" ["id_fournisseur"]=> string(1) "4" ["nom_fournisseur"]=> string(6) "Divers" } [3]=> object(stdClass)#9 (18) { ["produit_largeur"]=> string(1) "0" ["produit_hauteur"]=> string(1) "0" ["capacite"]=> string(1) "0" ["id_produit"]=> string(3) "342" ["id_tproduit"]=> string(1) "8" ["nom_produit"]=> string(7) "Kit USB" ["prix_produit"]=> string(3) "100" ["photo_produit"]=> string(21) "527190_yapas17081.jpg" ["libelle_produit"]=> string(11) "Accessoires" ["impression"]=> string(1) "0" ["gestion_stock"]=> string(1) "1" ["stock"]=> string(1) "1" ["web"]=> string(1) "1" ["promo"]=> string(1) "0" ["code_produit"]=> string(6) "KITUSB" ["qstock"]=> string(1) "0" ["id_fournisseur"]=> string(1) "4" ["nom_fournisseur"]=> string(6) "Divers" }

  14. #14
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 36
    Points : 22
    Points
    22
    Par défaut
    J'ai arrivé a résoudre la moitié de mon problème, c'est l'affichage via html_checkboxes , voici la partie du code de mon template :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {html_checkboxes name="selection" values=$produis->id_produit[]  selected=$produis->id_produit[1] }
    dans mon code PHP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tpl->assign("produis",$produits);
    La partie qui me reste maintenant c'est comment je peux récupérer le résultat des cases cochées dans ma fonction PHP situé dans un fichier nommé synchroProd.php sachant que le fichier dont j'ai défini le code ci-dessus s'appelle liste_prod.php.

    Je compte sur votre aide pour résoudre ce problème.

  15. #15
    Membre chevronné
    Avatar de eric.pommereau
    Homme Profil pro
    Ingénieur, pôle cartographie
    Inscrit en
    Décembre 2004
    Messages
    715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur, pôle cartographie
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2004
    Messages : 715
    Points : 1 790
    Points
    1 790
    Par défaut
    Si tu veux qu'on t'aide alors un :
    dans le fichier synchroProd.php serait un plus...

  16. #16
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 36
    Points : 22
    Points
    22
    Par défaut
    Bonjour Eric,
    J'ai fais ce que vous m'avez dis : la fonction var_dump($_REQUEST) m'a donné le resultat suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Warning: ftp_chmod() [function.ftp-chmod]: Command not implemented for that parameter in E:\ypd\www\ext\synchro-prodSelec.php on line 21
    
    array(7) { ["tf_com"]=> string(24) " , , , , , , , , , , ,11" ["tf_prods"]=> string(30) " , , , , , , , , , , , , , ,14" ["tf_users"]=> string(26) " , , , , , , , , , , , ,12" ["tf_rep"]=> string(34) " , , , , , , , , , , , , , , , ,16" ["__utma"]=> string(55) "171588776.1774662639.1315328291.1315565802.1315567701.4" ["__utmz"]=> string(70) "171588776.1315328291.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)" ["PHPSESSID"]=> string(26) "s6l9j4m152e2muineuk09qp9q4" }
    
    
    Un ou plusieurs fichiers n'ont pas �t� transmis.
    array(7) { ["tf_com"]=> string(24) " , , , , , , , , , , ,11" ["tf_prods"]=> string(30) " , , , , , , , , , , , , , ,14" ["tf_users"]=> string(26) " , , , , , , , , , , , ,12" ["tf_rep"]=> string(34) " , , , , , , , , , , , , , , , ,16" ["__utma"]=> string(55) "171588776.1774662639.1315328291.1315565802.1315567701.4" ["__utmz"]=> string(70) "171588776.1315328291.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)" ["PHPSESSID"]=> string(26) "s6l9j4m152e2muineuk09qp9q4" }

  17. #17
    Membre chevronné
    Avatar de eric.pommereau
    Homme Profil pro
    Ingénieur, pôle cartographie
    Inscrit en
    Décembre 2004
    Messages
    715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur, pôle cartographie
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2004
    Messages : 715
    Points : 1 790
    Points
    1 790
    Par défaut
    J'ai fait le test avec le même exemple que je t'ai donné :

    Dans le fichier source :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <label><input type="checkbox" name="id_produit[]" value="1" />decapant</label><br />
    <label><input type="checkbox" name="id_produit[]" value="2" checked="checked" />pince</label><br />
    <label><input type="checkbox" name="id_produit[]" value="3" />ampoule</label><br />
    Donne dans le fichier de destination :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // Les deux premières valeurs ont été sélectionnées...
    array
      'id_produit' => 
        array
          0 => string '1' (length=1)
          1 => string '2' (length=1)
    C'est cela que tu dois obtenir.

    @+

  18. #18
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 36
    Points : 22
    Points
    22
    Par défaut
    voici le code de mon fichier tpl

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {html_checkboxes name="selection" values=$produis->id_produit[]  selected=$produis->id_produit[1]}
    voici le code php qui affiche les cases a cocher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tpl->assign("produis",$produits);
    voici le code généré par le navigateur de mes case a cocher
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <label><input type="checkbox" name="selection[]" value="Array-&gt;id_produit[]" /></label>
    <label><input type="checkbox" name="selection[]" value="Array-&gt;id_produit[]" /></label>
    <label><input type="checkbox" name="selection[]" value="Array-&gt;id_produit[]" /></label>
    et voici le résultat de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    array(7) { ["tf_com"]=> string(24) " , , , , , , , , , , ,11" 
    ["tf_prods"]=> string(30) " , , , , , , , , , , , , , ,14" 
    ["tf_users"]=> string(26) " , , , , , , , , , , , ,12" 
    ["tf_rep"]=> string(34) " , , , , , , , , , , , , , , , ,16" 
    ["__utma"]=> string(55) 171588776.1774662639.1315328291.1315565802.1315567701.4" ["__utmz"]=> string(70) "171588776.1315328291.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)" 
    ["PHPSESSID"]=> string(26) "s6l9j4m152e2muineuk09qp9q4" }
    a votre avis , pourquoi je n'ai pas de résultats comme les votre ?

  19. #19
    Membre chevronné
    Avatar de eric.pommereau
    Homme Profil pro
    Ingénieur, pôle cartographie
    Inscrit en
    Décembre 2004
    Messages
    715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur, pôle cartographie
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2004
    Messages : 715
    Points : 1 790
    Points
    1 790
    Par défaut
    Alors plusieurs choses

    La récupération des valeurs n'est pas bonne ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {html_checkboxes name="selection" values=$produis->id_produit[]  selected=$produis->id_produit[1]}
    Devrait donner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {html_checkboxes name="id_produit" values=$produis->id_produit}
    Ce qui devrait te permettre de récupérer en php (dans le script de destintation) qqch du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    array
      'id_produit' => 
        array
          0 => string '1' (length=1)
          1 => string '2' (length=1)
    Pour la sélection c'est une autre histoire, a mon avis règle d'abord le pb de HTML > PHP.

    Ensuite pour tes tests essaie de virer tout ce qui est parasite... (fais des essais à part par exemple... c'est comme ça que je fais pour tester ton code).

    Dernière chose, quand tu regardes ton code source (page d'origine) es-tu bien dans un bloc formulaire ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form action="synchroProd.php">...</form>

  20. #20
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 36
    Points : 22
    Points
    22
    Par défaut
    Bonjour Eric,

    j'ai basé sur les autres champs pour detecter mon probléme, mais j'ai rencontré un autre probleme.
    Ou est l'erreur dans cette ligne a votre avis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    {html_checkboxes name='selection' values={$row->id_produit} }
    voici l'erreur affiché

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Catchable fatal error: Object of class stdClass could not be converted to string in E:\ypd\www\Smarty\templates_c\%%2D^2DF^2DF36CAC%%liste_produit.tpl.php on line 106
    comme tu voix la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="form_update_produit.php?id_produit={$row->id_produit}" class="action">{$row->libelle_produit}</a>
    génère le résultat suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="form_update_produit.php?id_produit=122" class="action">Accessoires</a>
    et c'est exactement ce que je cherche.

    j'ai réussi a l'avoir par les balises
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <INPUT type="checkbox" name="nom" value={$row->id_produit}>
    de HTML qui affiche le resultat suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <INPUT type="checkbox" name="nom" value=122>
    mais je n'arrive pas a le faire fonctionner avec les html_checkboxes de smarty

Discussions similaires

  1. Réponses: 3
    Dernier message: 29/04/2015, 14h44
  2. Mise à jour avec des cases à cocher
    Par jiojio dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 25/02/2009, 11h53
  3. Sélection avec des case à cocher
    Par Harmony dans le forum IHM
    Réponses: 5
    Dernier message: 08/03/2007, 16h33
  4. [MySQL] Creer un formulaire avec un tableau et des cases à cocher ??
    Par shawn12 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 04/04/2006, 10h23
  5. Problèmes avec des cases à cocher et une liste déroulante
    Par rob2-9 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 25/01/2006, 10h52

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