logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 08-12-2018 15:15:38

jahfly
Membre
Lieu : Aquitaine
Distrib. : raspbian Buster
Noyau : Raspberry pi 3
Inscription : 05-09-2017

Séparer valeur dans un script php

Bonjour,

J'ai un script qui récupérer des valeurs mais le souci est que ces valeurs sont les une à la suite des autres
ex:(table, maison, portail, ...)

j'aimerais que ces valeurs soit indépendantes et pas un ensemble.
ex:(table) (maison) (portail) (...)

mon code est:

 $content = $this->getPage("devicelist");
                if ( $content !== false ) {
                        $eqLogic_cmd = $this->getCmd(null, 'devicelist');
                        $devicelist = array();
                        if ( isset($content["status"]) )
                        {
                                foreach ( $content["status"] as $equipement ) {
                                        if ( $equipement["active"] )
                                        {
                                                array_push($devicelist, $equipement["hostName"]);
 


bloc à supprimer si la commande n’affiche rien



J'ai essaye de remplacer array() par explode() et preg_split()
mais rien n'y fait
mes compétences en prog sont limités, un petit coup de pousse est pas de reffut.

merci par avance:D

Hors ligne

#2 08-12-2018 15:39:39

bendia
Chadministrateur
Distrib. : openSUSE Tumbleweed, Buster
Noyau : Linux 5.9.1-2-default + Linux 4.19.0-12-amd64
(G)UI : Gnome + Console et un peu Fluxbox
Inscription : 20-03-2012
Site Web

Re : Séparer valeur dans un script php

Salut smile

Ton ensemble s'appelle un tableau (array en anglais donc). Pour avoir accès tour à tour à chaque élément individuel d'un tableau, tu utilises la boucle foreach, comme dans ton code.

foreach ($devicelist as $equipment) {
    /* Ton code ici qui utilise chaque élément du tableau référencé par la variable $equipment
   Par exemple, pour afficher la variable en question : */

    echo $equipment
}



Tu peux aussi accéder à un élement précis par son numéro d'index, mais il faut savoir à l'avance à quel emplacement il se trouve, ce qui, à la lecture de ton code ,ne sera pas le cas.


Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.

Hors ligne

#3 09-12-2018 10:47:11

jahfly
Membre
Lieu : Aquitaine
Distrib. : raspbian Buster
Noyau : Raspberry pi 3
Inscription : 05-09-2017

Re : Séparer valeur dans un script php

Bonjour et merci bendia
Désolé de te demander ça et ça doit paraître logique pour toi,
mais à ce que je comprend,et c'est pas gagné lol:lol:, ton bout de code doit remplacer mon code d'origine au niveau de "foreach" tout en gardant les formules comme "status","actif"...
J'ai fait:

$content = $this->getPage("devicelist");
                if ( $content !== false ) {
                        $eqLogic_cmd = $this->getCmd(null, 'devicelist');
                        $devicelist = array();
                        if ( isset($content["status"]) )
                        {
                                foreach ( $content["status"] as $equipement ) {
                                      echo $equipement
                                        if ( $equipement["active"] )
                                        {
                                                array_push($devicelist, $equipement["hostName"]);
                                }


et

$content = $this->getPage("devicelist");
                if ( $content !== false ) {
                        $eqLogic_cmd = $this->getCmd(null, 'devicelist');
                        $devicelist = array();
                        if ( isset($content["status"]) )
                        {
                                foreach ($devicelist as $equipement) {
                                      echo $equipement
                                }
 


mais rien n'y fait hmmscratchhead.gif
où est ce que je me trompe?
La variable $equipement doit être propre à chaque élément du tableau, pour pouvoir avoir des variables indépendantes.

merci par avance

Hors ligne

#4 09-12-2018 11:22:58

bendia
Chadministrateur
Distrib. : openSUSE Tumbleweed, Buster
Noyau : Linux 5.9.1-2-default + Linux 4.19.0-12-amd64
(G)UI : Gnome + Console et un peu Fluxbox
Inscription : 20-03-2012
Site Web

Re : Séparer valeur dans un script php

En fait, mon bout de code ne remplace rien dans le tiens. Il faut l'utiliser à suivre du reste Il te permet juste d'accéder à ce que tu souhaites, à savoir, tour à tour, les éléments individuel de ton tableau. Je vais essayer de commenter le code quue tu as mis, mais sans quelque pré-requis, ça ne sera pas forcemment évident à comprendre. Essayons malgré tout smile

$content = $this->getPage("devicelist"); /*On récupère dans la variable $content le retour de la "methode" getPage.
Sans le reste du code, on ne peut pas savoir exactement ce que c'est.*/

                if ( $content !== false ) { //si la variable n'est pas vide
                        $eqLogic_cmd = $this->getCmd(null, 'devicelist'); /*Encore l'utilisation d'une méthode inconnue,
                                                                                                    non utilisée dans l'extrait de toute façon*/

                        $devicelist = array(); /*On initialise la variable $devicelist qui sera un tableau. A priori, c'est un tableau associatif.
On peut voir ça comme un dictionnaire qui regroupe des données sous forme "Clé=>valeur"*/

                        if ( isset($content["status"]) ) //Si il existe une clé "status"
                        {
                                foreach ( $content["status"] as $equipement ) {/*Pour chaque élément "status", on donne tour à tour une valeur unique à la variable $equipement.
A priori, cette variable sera elle même un tableau*/

                                      echo $equipement /*On affiche la valeur de cette variable.
                                                                  tu dois bien voir à ce moment là que c'est un tableau associatif*/

                                        if ( $equipement["active"] ) //Si il existe une valeur "active" dans ce tableau
                                        {
                                                array_push($devicelist, $equipement["hostName"]);//On ajoute la valeur de "hostName" dans le tableau $devicelist précédemment créé
                                        }
                        }
                                }
    //Pour utiliser le bout de code que je t'ai donné, il suffit de l'utiliser à la suite
                                foreach ($devicelist as $equipement) {
                                      echo $equipement
                                }
 



J'ai appris des rudiments de PHP avec le tuto du Site du Zero. Depuis que ce site est devenu Openclasrooms, il n'est plus accessible au format PDF, mais encore au format HTML je pense. Je l'ai en PDF et il est librement partageable, donc, si tu le veux, je peux te le transferer.

La documentation de PHP est traduite en français également, c'est une bonne source d'information une fois que tu as compris les bases smile


Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.

Hors ligne

#5 09-12-2018 16:25:50

jahfly
Membre
Lieu : Aquitaine
Distrib. : raspbian Buster
Noyau : Raspberry pi 3
Inscription : 05-09-2017

Re : Séparer valeur dans un script php

Je vais regarder la doc des que j’aurais un peu plus de temps, ça a l'air intéressante. je suis aller sur la doc php c'est qui m'avait orienté vers explode et preg_split.
Par contre je doit une b.... parce que ça marche pas c'est peu être du au fait qu'il y a encore un bout de code "if" après avant de vraiment fermé la partie tableau.

$content = $this->getPage("devicelist");
                if ( $content !== false ) {
                        $eqLogic_cmd = $this->getCmd(null, 'devicelist');
                        $devicelist = array();
                        if ( isset($content["status"]) )
                        {
                                foreach ( $content["status"] as $equipement ) {
                                        if ( $equipement["active"] )
                                        {
                                                array_push($devicelist, $equipement["hostName"]);
                                        }
                                }
                        }
                                }
                                foreach ($devicelist as $equipement) {
                                      echo $equipement
                                }
                        if ($eqLogic_cmd->execCmd() != $eqLogic_cmd->formatValue(join(', ', $devicelist))) {
                                log::add('livebox','debug','Maj devicelist');
                                $eqLogic_cmd->setCollectDate('');
                                $eqLogic_cmd->event(join(', ', $devicelist));
                        }
                }
 



Je m'embrouille avec les espaces et les parentheses ops.gif

Dernière modification par jahfly (09-12-2018 16:26:27)

Hors ligne

#6 09-12-2018 17:32:08

bendia
Chadministrateur
Distrib. : openSUSE Tumbleweed, Buster
Noyau : Linux 5.9.1-2-default + Linux 4.19.0-12-amd64
(G)UI : Gnome + Console et un peu Fluxbox
Inscription : 20-03-2012
Site Web

Re : Séparer valeur dans un script php

jahfly a écrit :

parce que ça marche pas

Pour qu'on puisse t'aider, et même, que tu puisses t'aider tout seul, il faut être assez précis sur ce qui ne marche pas.
Il faut que tu saches  :

  1. A quel resultat tu t'attends exactement

  2. Quel resultat obtiens-tu (page blanche, message d'erreur, ce qui s'affiche n'est pas le résultat attendu

  3. Émettre des hypothèse sur les causes qui amène à se résultat. Et tester en éliminant les causes possibles une par une



Pour développer, si tu obtiens une page blanche, tu peux régler PHP pour qu'il soit bavard et donne des indices sur les erreurs. Tu peux également regarder dans le fichier d'enregistrement des erreurs de ton serveur web.

Pour les parenthèses  et crochets, un bon éditeur de texte devrait t'indiquer les blocs et à quel crochet ouvrant correspond le fermant wink

Force et courage comme dit smolski smile


Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.

Hors ligne

#7 09-12-2018 18:16:32

jahfly
Membre
Lieu : Aquitaine
Distrib. : raspbian Buster
Noyau : Raspberry pi 3
Inscription : 05-09-2017

Re : Séparer valeur dans un script php

en fait je récupère ce bout de code sur le plugin livebox dans jeedom.
car j'aimerai avoir ces valeurs indépendantes pour pouvoir les inclure plus facilement dans un scenario.
le résultat c'est que le plugin ne marche plus, j’accède plus à rien quand le code n'est plus bon.
j' ai une page blanche.
j'utilise nano pour l'editeur de texte sur mon rpi3
je vais voir avec le log du cron

Hors ligne

#8 09-12-2018 18:38:29

jahfly
Membre
Lieu : Aquitaine
Distrib. : raspbian Buster
Noyau : Raspberry pi 3
Inscription : 05-09-2017

Re : Séparer valeur dans un script php

je m'arrache les cheveux je test dans tous les sens et j'ai toujours page blanche.
même le mode debug du plugin dans jeedom enregistre rien

Hors ligne

#9 09-12-2018 18:44:48

Debian Alain
Membre
Lieu : Bretagne
Distrib. : sid (unstable) / bullseye (stable)
Noyau : Linux sid 6.4.0-3-amd64
(G)UI : Gnome X.org (X11) / GDM3
Inscription : 11-03-2017
Site Web

Re : Séparer valeur dans un script php

excuse ma question bête jahfly ,

c'est un script P.H.P. ou un script BASH ?

si c'est un script P.H.P. , tu peux créer  un fichier "phpinfo.php"

avec ceci :

cat phpinfo.php


<?php phpinfo(); ?>



pour tester ta config php .
normalement , tu dois obtenir un rapport complet de ton install .

si c'est un script BASH , n'oublie pas le shebang .

Dernière modification par Debian Alain (09-12-2018 18:51:41)

Hors ligne

#10 09-12-2018 18:57:48

bendia
Chadministrateur
Distrib. : openSUSE Tumbleweed, Buster
Noyau : Linux 5.9.1-2-default + Linux 4.19.0-12-amd64
(G)UI : Gnome + Console et un peu Fluxbox
Inscription : 20-03-2012
Site Web

Re : Séparer valeur dans un script php

jahfly a écrit :

je vais voir avec le log du cron

Tu devrais l'avoir dans les logs d'apache plutôt que ceux de cron. C'est là pour Jeedom a priori si tu lis le code source sur github /var/www/html/log/http.error


Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.

Hors ligne

#11 09-12-2018 19:24:56

bendia
Chadministrateur
Distrib. : openSUSE Tumbleweed, Buster
Noyau : Linux 5.9.1-2-default + Linux 4.19.0-12-amd64
(G)UI : Gnome + Console et un peu Fluxbox
Inscription : 20-03-2012
Site Web

Re : Séparer valeur dans un script php

Bon, le code de ton plugin est ici https://github.com/jeedom/plugin-livebo … .class.php

Vu ce que tu expliques, es-tu certain que c'est du coté du plugin qu'il faut regarder, ou plutôt du script de ton scenario. Je ne me suis intéressé que de très loin à Jeedom, mais il y a peut-être moyen de scripter plutôt au niveau du scénario que du plugin en lui même ?

Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.

Hors ligne

#12 09-12-2018 20:41:40

jahfly
Membre
Lieu : Aquitaine
Distrib. : raspbian Buster
Noyau : Raspberry pi 3
Inscription : 05-09-2017

Re : Séparer valeur dans un script php

J'ai retourné les scenarios dans tous les sens et rien n'y fait, tant que mes valeurs ne sont pas indépendantes. C'est pour ça que je suis parti sur l'idée d'aller à la source et de toucher au code du plugin.
Après je sais pas faire de script j'ai pas le niveau et le temps de m'y pencher, même si c'est super intéressant.
et oui c'est un script php.
sinon je suis aller dans le fichier que tu m'as indiqué pour le log. c'est exactement le même log que j'ai dans jeedom et le log ne fonctionne pas quand j'ai une page blanche.

Hors ligne

#13 09-12-2018 21:26:35

bendia
Chadministrateur
Distrib. : openSUSE Tumbleweed, Buster
Noyau : Linux 5.9.1-2-default + Linux 4.19.0-12-amd64
(G)UI : Gnome + Console et un peu Fluxbox
Inscription : 20-03-2012
Site Web

Re : Séparer valeur dans un script php

Si je comprends bien, tu cherches à récupérer la liste des équipements connus connecté au WIFI.

Je viens de voir dans la doc de jeedom, il y a moyen d'intégrer du code PHP dans les scenarios. C'est peut-être là qu'il faut utiliser une boucle foreach pour isoler les valeurs du tableau ?

Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.

Hors ligne

Pied de page des forums