Submitted by Mannhoy on
Bonjour à tous
Après avoir fait le tour du web à chercher la solution à mom problème, j'ai finalement décider de poster ce sujet sur le forum.
J'ai créé un formulaire qui s'affiche bien dans un bloc.Mon désire est qu' après validation les données soient postées vers un noeud nommé "seachinm". Sur ce noeud je veux récupérer les données du formulaire afin de les utiliser pour sélectionner des données dans ma base de données. voici les codes:
/*
* Implementation of hook_menu()
*/
function searchimm_menu() {
$items['searchimm'] = array(
'title' => 'Formulaire de recherche des immeubles ',
'access arguments' => array('access content'),
'type' => MENU_CALLBACK,
'page callback' => 'searchimm_content',
);
return $items;
}
le code du formulaire:
function searchimm_formulaire()
{
// execution de requete affichant les différents type d'immeble
$query = 'SELECT distinct field_type_immeuble_value FROM field_data_field_type_immeuble order BY 1';
$result = db_query($query)->fetchAllAssoc('field_type_immeuble_value');
foreach($result as $row) {
$tab[$row->field_type_immeuble_value]=$row->field_type_immeuble_value;
}
// constitution du formulaire
// la liste des types immeuble
$form['type_imm'] = array(
'#type' => 'select',
'#title' => t('Type immeuble'),
'#options' => $tab,
'#default_value' => '',
'#description' => t('Type immeuble'),
'#required' => true,
'#weight' => 0,
);
// la liste des types opération : à vendre ou louer
$query = 'SELECT distinct field_type_op_ration_value FROM field_data_field_type_op_ration order BY 1';
$result = db_query($query)->fetchAllAssoc('field_type_op_ration_value');
foreach($result as $row) {
$tabop[$row->field_type_op_ration_value]=$row->field_type_op_ration_value;
}
$form['type_op'] = array(
'#type' => 'select',
'#title' => t('Immeuble'),
'#options' => $tabop,
'#default_value' => '',
'#description' => t('Immeuble à'),
'#required' => false,
'#weight' => 1,
);
// la liste des endroits des immeubles
$query = 'SELECT distinct field_situation_value FROM field_data_field_situation order BY 1';
$result = db_query($query)->fetchAllAssoc('field_situation_value');
foreach($result as $row) {
$tabsit[$row->field_situation_value]=$row->field_situation_value;
}
$form['situation'] = array(
'#type' => 'select',
'#title' => t('Situation'),
'#options' => $tabsit,
'#default_value' => '',
'#description' => t('Situation des immeubles'),
'#required' => false,
'#weight' => 2,
);
// la zone des prix
$form['prix'] = array(
'#type' => 'textfield',
'#title' => t('Prix'),
'#required' => false,
'#weight' => 3,
);
// bouton valider
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('OK'),
'#weight' => 12,
);
return $form;
}
Code de soumission du formulaire
function searchimm_formulaire_submit($form, &$form_state) {
$data=array(
'typeop' => $form_state['values']['type_op'],
'situationim' => $form_state['values']['situation'],
'prixim' => $form_state['values']['prix'],
);
$form_state['storage']['para']=$data;
}
Code traitant les données du formulaire et affichant le résultat
function searchimm_content() {
if (isset($form_state['storage']['para'])){
$requete = "select * from node where type='immeuble'";
$rep = db_query($requete)->fetchAllAssoc('title');
// ICI, tu boucles sur tes données et tu génères ton tableau :
$affichage = '';
$affichage .= "<TABLE BORDER='2'
<CAPTION> Resultat de la recherche </CAPTION>
<TR>
<TH> Nom </TH>
<TH> Prenom </TH>
<TH> Institution </TH>
<TH> Fonction </TH>
</TR>";
foreach($rep as $tuple) {
$affichage .= "
<TR>
<TD>".$tuple->title."</TD>
<TD>".$tuple->title."</TD>
<TD>".$tuple->title."</TD>
<TD>".$tuple->title."</TD>
</TR>";
}
$affichage .= "";
$output= $affichage;
}
return $output;
}
La page s'ouvre bien mais je n'obtiens rien au niveau du résultat. Cela veut dire que ma variable $form_state['storage']['para'] est inexistante. Quand je fais un dpm($form_state['storage']['para']) au niveau de la fonction searchimm_formulaire_submit, je vois bien les données du formulaire mais si je fais la même chose qu niveau de la fonction searchimm_content(), elle est vide.
Quelqu'un pourrat-il m'aider?
Merci d'avance