Récupérer des variables, les modifier et les ré-insérer dans un code PHP
Posté : 29 mai 2022, 19:55
Bonjour à tous,
Pour rappel, mon niveau PHP est proche de 0 ! J'ai installer un plugin WP pour la gestion de graphique en ligne. J'ai 6 graphiques au total avec des variables gérées par le plugin pour filtrer la date et choisir l'heure de début et de fin d'affichage des données.

Les variables sont définies en back office du plugin avec les ~ entre paramètres et des | entre variables :
Elles sont ensuite exploitées dans la requete SQL qui va récupérer les données dans le DB :
Mon souhait serait :
Merci d'avance de votre aide.
Cédric
Pour rappel, mon niveau PHP est proche de 0 ! J'ai installer un plugin WP pour la gestion de graphique en ligne. J'ai 6 graphiques au total avec des variables gérées par le plugin pour filtrer la date et choisir l'heure de début et de fin d'affichage des données.

Les variables sont définies en back office du plugin avec les ~ entre paramètres et des | entre variables :
Code : Tout sélectionner
date_filtre~CURDATE()~Date (AAAA-MM-JJ)~date | heure_debut~00:00~Heure de début~text | heure_fin~23:59~Heure de fin~textUse this format: variable_name~default_value~variable_label~variable_type | variable_name~default_value~variable_label~variable_type etc.
variable_name - any single name you want.
default_value - default value when no any variable chosen by a user
variable_label - Label which would be visible at a form above the chart
variable_type - number, text or date
~ is a separator between variable elements.
| is a separator between variables
Elles sont ensuite exploitées dans la requete SQL qui va récupérer les données dans le DB :
Code : Tout sélectionner
SELECT * FROM pool_table WHERE Date={date_filtre} AND Time BETWEEN {heure_debut} AND {heure_fin} ORDER BY Time ASCMon souhait serait :
- de masquer les champs en CSS des filtres qui s'affichent pour chaque graphique et de les gérer de manière groupé pour les 6 graphiques avec plus de souplesse.
- D'avoir par défaut la date du filtre qui correspond à celle du jour. J'ai réussi avec le CURDATE() dans la requête SQL mais je préfère le gérer avec le PHP pour pouvoir par exemple avoir un bouton "Jour d'avant" et "Jour d'après" pour naviguer facilement entre les journées.
- D’avoir l'heure de début et de fin qui correspond à la tranche horaire des 6 dernières heures.
Code : Tout sélectionner
function gvn_chart_top_form($atts){
if (get_post_meta($atts["id"],'guaven_sqlcharts_formpartrole',true)!='' and !is_user_logged_in()) return;
$topform='';$dateexists=false;
$variables_raw=get_post_meta($atts['id'],'guaven_sqlcharts_variables',true);
$variables_raw=explode("|",$variables_raw);
foreach ($variables_raw as $vrow){
$vrow_arr=explode("~",$vrow);
$vrow_arr=array_map("trim",$vrow_arr);
if (empty($vrow_arr[3])) continue;
$gvalue=!empty($_GET[$vrow_arr[0]])?esc_attr(urldecode($_GET[$vrow_arr[0]])):'';
$dvalue=(strpos($vrow_arr[1],'()')===false)?esc_attr($vrow_arr[1]):'';
//Affichage de la ligne des variables
//echo $vrow_arr[1];
if ($vrow_arr[3]=='date') {
$dateexists=true;
$topform.= '<label for="'.$vrow_arr[0].'">'.$vrow_arr[2].'</label>'.' <input autocomplete="off" style="max-width:210px" type="text"
value="'.$gvalue.'"
data-toggle="datepicker" name="'.$vrow_arr[0].'" placeholder="'.$dvalue.'">
';}
else {
$topform.= '<label for="'.$vrow_arr[0].'">'.$vrow_arr[2].'</label>'.' <input autocomplete="off" style="max-width:210px;'.($vrow_arr[3]=='number'?'width:100px;':'').'"
type="'.$vrow_arr[3].'"
value="'.$gvalue.'" name="'.$vrow_arr[0].'" placeholder="'.$dvalue.'">
';
}
}
if (!empty($topform)) {
$topform='<form method="get" action="" class="guaven_sqlcharts_form">'.$topform.'
<input type="submit"
value="'.(get_post_meta($atts['id'], 'guaven_sqlcharts_formpartbutton', true)!=''?esc_attr(get_post_meta($atts['id'], 'guaven_sqlcharts_formpartbutton', true)):'OK').'"></form>';
if ($dateexists) $topform.='<script>setTimeout(function(){jQuery(\'[data-toggle="datepicker"]\').datepicker({format: \'yyyy-mm-dd\'});
},300);</script>';
return $topform ;
}
return;
}Merci d'avance de votre aide.
Cédric