Changeset 7910 in spip-zone


Ignore:
Timestamp:
Dec 13, 2006, 3:21:45 PM (13 years ago)
Author:
cedric@…
Message:

la reinjection de $row dans $valeurs etait un peu rapide : on perdait les champs multiples et les mots cles multiples dans la bataille.

Location:
_plugins_/_stable_/forms/forms_et_tables_1_9_1
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/_stable_/forms/forms_et_tables_1_9_1/balise/forms.php

    r7901 r7910  
    6969                }
    7070        }
    71         elseif (!_DIR_RESTREINT && $id_donnee=_request('id_donnee')){
    72                 $res = spip_query("SELECT * FROM spip_forms_donnees_champs WHERE id_donnee="._q($id_donnee));
    73                 while ($row2 = spip_fetch_array($res)){
    74                         $valeurs[$row2['champ']]= $row2['valeur'];
    75                 }
    76         }
     71        elseif (!_DIR_RESTREINT && $id_donnee=_request('id_donnee'))
     72                $valeurs = Forms_valeurs($id_form,$id_donnee);
    7773        elseif (_DIR_RESTREINT!="" && $row['modifiable']=='oui'){
    7874                global $auteur_session;
     
    8076                $cookie = $_COOKIE[Forms_nom_cookie_form($id_form)];
    8177                //On retourne les donnees si auteur ou cookie
    82                 $q = "SELECT donnees_champs.* " .
    83                         "FROM spip_forms_donnees_champs AS donnees_champs, spip_forms_donnees AS donnees " .
    84                         "WHERE donnees.id_donnee=donnees_champs.id_donnee " .
    85                         "AND donnees.id_form="._q($id_form)." ".
     78                $q = "SELECT donnees.id_donnee " .
     79                        "FROM spip_forms_donnees AS donnees " .
     80                        "WHERE donnees.id_form="._q($id_form)." ".
    8681                        "AND donnees.statut='publie' ";
    8782                if ($cookie) $q.="AND (cookie="._q($cookie)." OR id_auteur="._q($id_auteur).") ";
     
    9287                                $q.="AND 0=1 ";
    9388                //si unique, ignorer id_donnee, si pas id_donnee, ne renverra rien
    94                 if ($row['multiple']=='oui' && $id_donnee) $q.="AND donnees_champs.id_donnee="._q($id_donnee);
     89                if ($row['multiple']=='oui' && $id_donnee) $q.="AND donnees.id_donnee="._q($id_donnee);
    9590                $res = spip_query($q);
    96                 while ($row2 = spip_fetch_array($res)){
    97                         $valeurs[$row2['champ']]= $row2['valeur'];
     91                if($row2 = spip_fetch_array($res)){
     92                        $valeurs = Forms_valeurs($id_form,$row2['id_donnee']);
    9893                }
    9994        }
     
    10499                        $affiche_sondage=' ';
    105100        }
    106         include_spip('inc/filtres');
     101        include_spip('inc/filtres');var_dump($valeurs);
    107102        return array('formulaires/forms', 0,
    108103                array(
  • _plugins_/_stable_/forms/forms_et_tables_1_9_1/inc/forms.php

    r7909 r7910  
    5252                }
    5353                return $structure;
     54        }
     55        function Forms_valeurs($id_form,$id_donnee){
     56                static $unseul = array();
     57                $valeurs = array();
     58                $res = spip_query("SELECT * FROM spip_forms_donnees_champs AS d JOIN spip_forms_champs AS c ON c.champ=d.champ AND c.id_form="._q($id_form)." WHERE id_donnee="._q($id_donnee));
     59                while ($row = spip_fetch_array($res)){
     60                        if ($row['type']=='multiple')
     61                                $valeurs[$row2['champ']][]= $row2['valeur'];
     62                        elseif ($row['type']=='mot'){
     63                                $id_groupe = intval($row['extra_info']);
     64                                if (!isset($unseul[$id_groupe])){
     65                                        $res2 = spip_query("SELECT unseul FROM spip_groupes_mots WHERE id_groupe="._q($id_groupe));
     66                                        $row2=spip_fetch_array($res2);
     67                                        $unseul[$id_groupe] = $row2['unseul'];
     68                                }
     69                                if ($unseul[$id_groupe]=='oui')
     70                                        $valeurs[$row2['champ']]= $row2['valeur'];
     71                                else
     72                                        $valeurs[$row2['champ']][]= $row2['valeur'];
     73                        }
     74                        else
     75                                $valeurs[$row2['champ']]= $row2['valeur'];
     76                }
     77                return $valeurs;
    5478        }
    5579       
Note: See TracChangeset for help on using the changeset viewer.