Récupérer des variables, les modifier et les ré-insérer dans un code PHP

Eléphanteau du PHP | 10 Messages

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.

Image

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~text
Use 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 ASC

Mon souhait serait :
  1. 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.
  2. 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.
  3. D’avoir l'heure de début et de fin qui correspond à la tranche horaire des 6 dernières heures.
J'ai trouvé en lisant l'explication de chaque balise l'endroit ou les balises sont insérer dans le INPUT (ligne 387). J’arrive au mieux avec un écho [echo $vrow_arr[1];] à afficher le contenu de ce qui semble être une ligne d'un tableau. Comment puis-je remplacer le contenu d'une cellule de ce tableau d'après une variable?

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

Eléphanteau du PHP | 10 Messages

30 mai 2022, 21:52

Personne ? :-)

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

31 mai 2022, 12:05

J'avoue que ta demande est complexe, tu veux faire un hack d'un plugin Wordpress que personne ne connait, du coup c'est difficile de t'aider à l'aveugle :-/

Voici quelques pistes :
1) Pour masquer des blocs en CSS, il faut que tu ajoute la propriété display:none, à toi de voir sur quels blocs tu peux appliquer cela.
2) L'équivalent de la fonction SQL CURDATE() est celle ci en PHP :
date("Y-m-d")
3) Si je comprends bien ta question de tranche horaire, l'heure de fin c'est l'heure courante donc
date("H:i")
et l'heure de début celle d'il y a 6h donc
date("H:i", strtotime("6 hours ago"))
A noter, si tu lances cette dernière commande entre minuit et 6h du matin, tu vas être à cheval sur 2 jours. Par exemple à 5h05 du matin, ça va te donner comme résultat 23h05, pas sûr que ton script l'accepte. Dans ce cas il faut peut etre que tu ajoutes un test et le mettre à 00:00 ?
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 10 Messages

02 juin 2022, 07:50

Salut,

Ce n’est pas tout à fait ça mon problème. Ce n’est pas la modification mais l’accès à ces variables qui me pose problème. Elles sont dans

Code : Tout sélectionner

echo $vrow_arr[1];