Convertir un tableau en chaîne de caractères en php
RésoluLaChaux78 Messages postés 583 Date d'inscription Statut Membre Dernière intervention -
Bonjour, je viens vous demander de l'aide concernant une erreur que je n'arrive pas à résoudre. Cette erreur concerne 4 lignes différentes. Voici la page correspondantes aux erreurs. Je vous remercie. Cordialement.
Warning: Array to string conversion in C:\wamp64\www\gestion\libs\class.liste.php on line 105 Warning: Array to string conversion in C:\wamp64\www\gestion\libs\class.liste.php on line 107 Warning: Array to string conversion in C:\wamp64\www\gestion\libs\class.liste.php on line 111 Warning: Array to string conversion in C:\wamp64\www\gestion\libs\class.liste.php on line 124
<?php //error_reporting(E_ALL ^ E_NOTICE); //error_reporting(E_ALL); class liste { // Attributs, propriétés de la classe //public $version = "1.13"; //public $release = "15 avr 2016"; //public $auteur = "Pierre FAUQUE"; //public $intranet = ""; //public $internet = "http://www.fauque.fr/"; public $sql = ""; public $champs = ""; public $texte = ""; public $ctrlname = ""; public $style = ""; public $onchange = ""; public $tronque = 0; public $option = ""; public $slimit = ""; public $limit = ""; public $nbrecs = 0; private $obj = ""; // ======================================================================== // Constructeur de la classe liste. // Lecture de la définition de la liste, initialisation des propriétés function __construct($objet, $ctrlname="", $style="", $limit=0) { require("$objet.def.php"); $this->champs = $this->getfieldnames($champs); $this->onchange = !empty($onchange) ? $onchange : ''; $this->texte = $texte; $this->ctrlname = $ctrlname; $this->style = $style; $this->obj = $objet; if($objet != "null") { $slimit = $limit; // sauvegarde du paramètre / fichier .def if($limit) { $this->limit = $limit; } if(!empty($lignes)) { $this->texte = ""; $this->option = " multiple size=\"$lignes\""; } if(!empty($where)) { $insWHERE = "WHERE $where"; } else { $insWHERE = ""; } if(!empty($group)) { $insGROUP = "GROUP BY $group"; } else { $insGROUP = ""; } if($ordre) { $insORDER = "ORDER BY $ordre"; } else { $insORDER = ""; } if($limit) { $insLIMIT = "LIMIT 0,$limit"; } else { $insLIMIT = ""; } if($slimit) { $insLIMIT = "LIMIT 0,$slimit"; } else { $insLIMIT = ""; } $this->sql = "SELECT $champs FROM $table $insWHERE $insGROUP $insORDER $insLIMIT"; $req = executeQuery($this->sql); $resultat = $req->fetchAll(); $this->nbrecs = !empty($resultat) ? count($resultat) : 0; unset($resultat); } } // ======================================================================== // Méthode de la classe liste. Celle-ci exécute la requête appropriée pour écrire la liste déroulante désignée. function write($indice="",$text=0) { $champs = explode(",",$this->champs); $idctrl = $champs[0]; if($this->ctrlname) { $idctrl = $this->ctrlname; } $style = !empty($this->style) ? " class='".$this->style."'": ""; $onchange = !empty($this->onchange) ? " onchange='javascript:".$this->onchange."' ": ""; if(!empty($this->sql)) { $req = executeQuery($this->sql); $resultat = $req->fetchAll(); var_dump(debug_backtrace()); } else { echo "Erreur ! La requête est vide !"; $this->debug(); } //var_dump(count($resultat)); $this->nbrecs = !empty($resultat) ? count($resultat) : 0; $textonly = $text && $indice ? 1 : 0; if(!$textonly) { echo "<select name=\"".$idctrl."\"$this->option".$style.$onchange.">"; if(!$this->option) { if($this->texte) { echo "<option value=\"null\">$this->texte"; } } } if(!empty($resultat)) { foreach($resultat as $donnees) { $indice = (int)$indice; //Convertir une chaîne en un entier. if($indice/1) { $idnum = 0; } else { $idnum = 1; } if($indice == $donnees->$champs[$idnum]) { $thisrec = 1; } else { $thisrec = 0; } if (count($champs) > 2) { $texte = $donnees->$champs[1]; $n = 2; if($textonly && $thisrec) { $buffer = $texte; } while(count($champs) > $n) { if($textonly && $thisrec) { $buffer .= " ".$donnees->$champs[$n]; $n++; } else { $texte .= " ".$donnees->$champs[$n]; $n++; } } } else { if($textonly && $thisrec) { $buffer = $donnees->$champs[1]; } else { $texte = $donnees->$champs[1]; } } if($this->tronque) { $lg = $this->tronque-9; // 9 = longueur de "... / ..." if(($lg % 2) != 0) { $lg++; } if(strlen($texte) > $lg) { $texte = substr($texte,0,$lg/2) . "... / ..." . substr($texte,strlen($texte)-($lg/2),$lg/2); } if(strlen($buffer) > $lg) { $buffer = substr($buffer,0,$lg/2) . "... / ..." . substr($buffer,strlen($buffer)-($lg/2),$lg/2); } } if(!$textonly) { echo "<option value=\"".$donnees->$champs[0]."\""; if($thisrec) { echo " selected"; } echo ">".$texte; } } } if($textonly) { echo $buffer; } else { echo "</select>\n"; } } // ======================================================================== // 30/09/2005. Méthode retournant la liste des champs en prenant en compte les alias // de champ possibles (ex: ..., DATE_FORMAT(date, '%d/%m/%Y') AS debut, ...) // ou les champs précédés du nom de table (ex: ..., ac_Personnes.idpers, ...) function getfieldnames($champs) { $fields = explode(",", $champs); for($n=0; $n<count($fields); $n++) { if(strstr(strtolower($fields[$n]), ".")) { $nfields = explode(".", $fields[$n]); $fields[$n] = $nfields[count($nfields)-1]; } if(strstr(strtolower($fields[$n]), " as ")) { $nfields = explode(" ", $fields[$n]); $fields[$n] = $nfields[count($nfields)-1]; } } $rfields = $fields[0]; for($n=1; $n<count($fields); $n++) { $rfields .= ",".$fields[$n]; } return $rfields; } // ======================================================================== // 11/07/2003. Methode affichant le nombre de lignes d'un résultat, // en fait le nombre d'éléments qu'il y aura dans la liste. function nbelements() { return $this->nbrecs; } // ======================================================================== // 27/03/2004. Méthode servant à changer le nom par défaut du contrôle 'select'. // Si elle est utilisée, elle doit l'être avant la méthode write(). function changename($ctrlname) { $this->ctrlname = $ctrlname; } // ======================================================================== // 05/10/2005. Méthode destinée à définir le style à utiliser dans la liste. // Si elle est utilisée, elle doit l'être avant la méthode write(). function usestyle($style) { $this->style = $style; } // ======================================================================== // 04/07/2003. Méthode initialisant la longueur maximale des éléments de la liste. // Si elle est utilisée, elle doit l'être avant la méthode write(). function tronque($nbcar) { $this->tronque = $nbcar; } // ======================================================================== // Méthode destinée au débuggage. Sert à afficher la requête à exécuter. function display() { echo $this->sql; } // ======================================================================== // 03/07/2003. Méthode retournant la version de la classe function version() { return "version $this->version ($this->release).<br>\n" ."Released under the GNU Public License<br>\n" ."© $this->auteur.\n"; } // ======================================================================== // 03/07/2003. Méthode retournant le numéro de la version de la classe function numversion() { return $this->version; } // ======================================================================== // 04/07/2003. Méthode testant si la version en cours est la dernière // Le paramètre passé est "intranet" ou "internet" function checkversion($lan="internet") { $msg = "The checking could'nt be done. " . "Do you are on the good network ?\n"; if($lan == "internet") { $url = $this->internet; } if($lan == "intranet") { $url = $this->intranet; } $url .= "dev/cliste/lastver.liste.txt"; if(!@$hf = fopen($url,"r")) { echo "$msg<br>\n"; exit; } $version = fgets($hf,100); $version = chop($version); $release = fgets($hf,100); $release = chop($release); $feature = fgets($hf,1000); $feature = chop($feature); $download = fgets($hf,1000); $download = chop($download); fclose($hf); if($version == $this->version) { echo "No new version since the $this->version (this one).\n"; } else { echo "<font color=\"#FF0000\"><b>New</b></font> : "; echo "version $version ($release).<br>\n"; echo "Features : $feature<br>\n"; echo "Download from : $download\n"; } } // ======================================================================== // 15/07/2003. Méthode affichant la documentation de la classe function showdoc($lan="internet") { if($lan == "internet") { $url = $this->internet; } if($lan == "intranet") { $url = $this->intranet; } $url .= "index.php?p=cliste.doc.php"; $style = "style='text-decoration: none'"; echo "<a href='$url' $style>French documentation</a>"; } // ======================================================================== // 05/10/2005. Méthode pour l'affichage des variables. function debug() { $style = "font-family:verdana; font-size:9pt; border-style:solid; " . "border-color:red; border-width:1px"; if($this->ctrlname) { $ctrlname = $this->crtlname; } else { $ch = explode(",",$this->champs); $ctrlname = $ch[0]; } echo "<table border=\"0\" cellpadding=\"2\" bgcolor=\"#FFFFA0\"><tr>"; echo "<td style=\"$style\">"; echo "<b>CLASS liste:</b><br>"; echo "Version: " .$this->version."<br>"; echo "Release: " .$this->release."<br>"; echo "Author: " .$this->auteur."<br>"; echo "URL-intranet: " .$this->intranet."<br>"; echo "URL-internet: " .$this->internet."<br>"; echo "<b>ATTRIBUTES:</b><br>"; echo "champs: " .$this->champs."<br>"; echo "texte: " .$this->texte."<br>"; echo "ctrlname: " .$ctrlname."<br>"; echo "tronque: " .$this->tronque."<br>"; echo "option: " .$this->option."<br>"; echo "style: " .$this->style."<br>"; echo "onchange: " .$this->onchange."<br>"; echo "limit: " .$this->limit."<br>"; echo "nbrecs: " .$this->nbrecs."<br>"; echo "objet: " .$this->obj."<br>"; echo "requete: " .$this->sql."<br>"; echo "</td></tr></table>"; } } ?>
- Convertir un tableau en chaîne de caractères en php
- Tableau word - Guide
- Trier un tableau excel - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Tableau ascii - Guide
- Convertir epub en kindle - Guide
9 réponses
Bonjour
Fais donc des var_dump de tes variables
Par exemple, pour la ligne 105, tu peux regarder ce que contient
var_dump($idnum); var_dump( $donnees->$champs[$idnum]);
pour la ligne 107 tu peux regarder ce que contient
var_dump($donnees->$champs[1]);
.Vu le message d'erreur, $donnees->$champs contient lui même des array ... c'est donc normal que tu aies ces messages d'erreur..
var_dump($idnum); C:\wamp64\www\gestion\libs\class.liste.php:106:int 1 var_dump($donnees->$champs[$idnum]); C:\wamp64\www\gestion\libs\class.liste.php:107:null var_dump($donnees->$champs[1]); C:\wamp64\www\gestion\libs\class.liste.php:110:null var_dump($donnees->$champs[0]); C:\wamp64\www\gestion\libs\class.liste.php:128:null
Bonjour voici les retours des var_dump. Comment résoudre cela s'il vous plait. Je vous remercie.
Bonjour, malheureusement je n'arrive pas à résoudre mes erreurs. En ce qui concerne la récupération des variables avant de les utiliser il y a pas de problème, je l'ai utilisé pour d'autres pages mais pour les variables concernées j'ai essayé plusieurs solutions mais sans résultat. Voici une capture du résultat et la page concernée. Je vous remercie de votre aide.
<?php error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); class liste { // Attributs, propriétés de la classe //public $version = "1.13"; //public $release = "15 avr 2016"; //public $auteur = "Pierre FAUQUE"; //public $intranet = ""; //public $internet = "http://www.fauque.fr/"; public $sql = ""; public $champs = ""; public $texte = ""; public $ctrlname = ""; public $style = ""; public $onchange = ""; public $tronque = 0; public $option = ""; public $slimit = ""; public $limit = ""; public $nbrecs = 0; private $obj = ""; // ======================================================================== // Constructeur de la classe liste. // Lecture de la définition de la liste, initialisation des propriétés function __construct($objet, $ctrlname="", $style="", $limit=0) { require("$objet.def.php"); $this->champs = $this->getfieldnames($champs); $this->onchange = !empty($onchange) ? $onchange : ''; $this->texte = $texte; $this->ctrlname = $ctrlname; $this->style = $style; $this->obj = $objet; if($objet != "null") { $slimit = $limit; // sauvegarde du paramètre / fichier .def if($limit) { $this->limit = $limit; } if(!empty($lignes)) { $this->texte = ""; $this->option = " multiple size=\"$lignes\""; } if(!empty($where)) { $insWHERE = "WHERE $where"; } else { $insWHERE = ""; } if(!empty($group)) { $insGROUP = "GROUP BY $group"; } else { $insGROUP = ""; } if($ordre) { $insORDER = "ORDER BY $ordre"; } else { $insORDER = ""; } if($limit) { $insLIMIT = "LIMIT 0,$limit"; } else { $insLIMIT = ""; } if($slimit) { $insLIMIT = "LIMIT 0,$slimit"; } else { $insLIMIT = ""; } $this->sql = "SELECT $champs FROM $table $insWHERE $insGROUP $insORDER $insLIMIT"; $req = executeQuery($this->sql); $resultat = $req->fetchAll(); $this->nbrecs = !empty($resultat) ? count($resultat) : 0; unset($resultat); } } // ======================================================================== // Méthode de la classe liste. Celle-ci exécute la requête appropriée pour écrire la liste déroulante désignée. function write($indice="",$text=0) { $champs = explode(",",$this->champs); $idctrl = $champs[0]; if($this->ctrlname) { $idctrl = $this->ctrlname; } //if($this->style) { $style = " class=\"$this->style\""; } $style = !empty($this->style) ? " class='".$this->style."'": ""; //if($this->onchange) { $onchange = " onchange=\"javascript:$this->onchange\""; } $onchange = !empty($this->onchange) ? " onchange='javascript:".$this->onchange."' ": ""; if(!empty($this->sql)) { $req = executeQuery($this->sql); $resultat = $req->fetchAll(); var_dump(debug_backtrace()); } else { echo "Erreur ! La requête est vide !"; $this->debug(); } //var_dump(count($resultat)); //$this->nbrecs = mysql_num_rows($resultat); $this->nbrecs = !empty($resultat) ? count($resultat) : 0; //if($text && $indice) { $textonly = 1; } else { $textonly = 0; } $textonly = $text && $indice ? 1 : 0; if(!$textonly) { echo "<select name=\"".$idctrl."\"$this->option".$style.$onchange.">"; if(!$this->option) { if($this->texte) { echo "<option value=\"null\">$this->texte"; } } } if(!empty($resultat)) { foreach($resultat as $donnees) { $indice = (int)$indice; //Convertir une chaîne en un entier. //if($indice/1) { $idnum = 0; } else { $idnum = 1; } $idnum = $indice/1 ? 0 : 1; var_dump($idnum); //if($indice == $donnees->$champs[$idnum]) { $thisrec = 1; } else { $thisrec = 0; } $thisrec = $indice ? 1 : 0; if (count($champs) > 2) { $texte = !empty($donnees->$champs[1]); $n = 2; var_dump($champs[1]); if($textonly && $thisrec) { $buffer = $texte; } while(count($champs) > $n) { if($textonly && $thisrec) { $buffer .= " ".!empty($donnees->$champs[$n]); $n++; } else { $texte .= " ".!empty($donnees->$champs[$n]); $n++; } } } else { if($textonly && $thisrec) { $buffer = !empty($donnees->$champs[1]); } else { $texte = !empty($donnees->$champs[1]); } } if($this->tronque) { $lg = $this->tronque-9; // 9 = longueur de "... / ..." if(($lg % 2) != 0) { $lg++; } if(strlen($texte) > $lg) { $texte = substr($texte,0,$lg/2) . "... / ..." . substr($texte,strlen($texte)-($lg/2),$lg/2); } if(strlen($buffer) > $lg) { $buffer = substr($buffer,0,$lg/2) . "... / ..." . substr($buffer,strlen($buffer)-($lg/2),$lg/2); } } if(!$textonly) { echo "<option value=\"".!empty($donnees->$champs[0])."\""; var_dump($champs[0]); if($thisrec) { echo " selected"; } echo ">".$texte; } } } if($textonly) { echo $buffer; } else { echo "</select>\n"; } } // ======================================================================== // 30/09/2005. Méthode retournant la liste des champs en prenant en compte les alias // de champ possibles (ex: ..., DATE_FORMAT(date, '%d/%m/%Y') AS debut, ...) // ou les champs précédés du nom de table (ex: ..., ac_Personnes.idpers, ...) function getfieldnames($champs) { $fields = explode(",", $champs); for($n=0; $n<count($fields); $n++) { if(strstr(strtolower($fields[$n]), ".")) { $nfields = explode(".", $fields[$n]); $fields[$n] = $nfields[count($nfields)-1]; } if(strstr(strtolower($fields[$n]), " as ")) { $nfields = explode(" ", $fields[$n]); $fields[$n] = $nfields[count($nfields)-1]; } } $rfields = $fields[0]; for($n=1; $n<count($fields); $n++) { $rfields .= ",".$fields[$n]; } return $rfields; } // ======================================================================== // 11/07/2003. Methode affichant le nombre de lignes d'un résultat, // en fait le nombre d'éléments qu'il y aura dans la liste. function nbelements() { return $this->nbrecs; } // ======================================================================== // 27/03/2004. Méthode servant à changer le nom par défaut du contrôle 'select'. // Si elle est utilisée, elle doit l'être avant la méthode write(). function changename($ctrlname) { $this->ctrlname = $ctrlname; } // ======================================================================== // 05/10/2005. Méthode destinée à définir le style à utiliser dans la liste. // Si elle est utilisée, elle doit l'être avant la méthode write(). function usestyle($style) { $this->style = $style; } // ======================================================================== // 04/07/2003. Méthode initialisant la longueur maximale des éléments de la liste. // Si elle est utilisée, elle doit l'être avant la méthode write(). function tronque($nbcar) { $this->tronque = $nbcar; } // ======================================================================== // Méthode destinée au débuggage. Sert à afficher la requête à exécuter. function display() { echo $this->sql; } // ======================================================================== // 03/07/2003. Méthode retournant la version de la classe function version() { return "version $this->version ($this->release).<br>\n" ."Released under the GNU Public License<br>\n" ."© $this->auteur.\n"; } // ======================================================================== // 03/07/2003. Méthode retournant le numéro de la version de la classe function numversion() { return $this->version; } // ======================================================================== // 04/07/2003. Méthode testant si la version en cours est la dernière // Le paramètre passé est "intranet" ou "internet" function checkversion($lan="internet") { $msg = "The checking could'nt be done. " . "Do you are on the good network ?\n"; if($lan == "internet") { $url = $this->internet; } if($lan == "intranet") { $url = $this->intranet; } $url .= "dev/cliste/lastver.liste.txt"; if(!@$hf = fopen($url,"r")) { echo "$msg<br>\n"; exit; } $version = fgets($hf,100); $version = chop($version); $release = fgets($hf,100); $release = chop($release); $feature = fgets($hf,1000); $feature = chop($feature); $download = fgets($hf,1000); $download = chop($download); fclose($hf); if($version == $this->version) { echo "No new version since the $this->version (this one).\n"; } else { echo "<font color=\"#FF0000\"><b>New</b></font> : "; echo "version $version ($release).<br>\n"; echo "Features : $feature<br>\n"; echo "Download from : $download\n"; } } // ======================================================================== // 15/07/2003. Méthode affichant la documentation de la classe function showdoc($lan="internet") { if($lan == "internet") { $url = $this->internet; } if($lan == "intranet") { $url = $this->intranet; } $url .= "index.php?p=cliste.doc.php"; $style = "style='text-decoration: none'"; echo "<a href='$url' $style>French documentation</a>"; } // ======================================================================== // 05/10/2005. Méthode pour l'affichage des variables. function debug() { $style = "font-family:verdana; font-size:9pt; border-style:solid; " . "border-color:red; border-width:1px"; if($this->ctrlname) { $ctrlname = $this->crtlname; } else { $ch = explode(",",$this->champs); $ctrlname = $ch[0]; } echo "<table border=\"0\" cellpadding=\"2\" bgcolor=\"#FFFFA0\"><tr>"; echo "<td style=\"$style\">"; echo "<b>CLASS liste:</b><br>"; echo "Version: " .$this->version."<br>"; echo "Release: " .$this->release."<br>"; echo "Author: " .$this->auteur."<br>"; echo "URL-intranet: " .$this->intranet."<br>"; echo "URL-internet: " .$this->internet."<br>"; echo "<b>ATTRIBUTES:</b><br>"; echo "champs: " .$this->champs."<br>"; echo "texte: " .$this->texte."<br>"; echo "ctrlname: " .$ctrlname."<br>"; echo "tronque: " .$this->tronque."<br>"; echo "option: " .$this->option."<br>"; echo "style: " .$this->style."<br>"; echo "onchange: " .$this->onchange."<br>"; echo "limit: " .$this->limit."<br>"; echo "nbrecs: " .$this->nbrecs."<br>"; echo "objet: " .$this->obj."<br>"; echo "requete: " .$this->sql."<br>"; echo "</td></tr></table>"; } } ?>
Tu n'as pas bien écrit la répcupération propre des variables.... tu n'as utilisé qu'un tiers de la ligne de code qu'il est nécéssaire d'écrire....
Voici un exemple à analyser pour pouvoir l'appliquer pour la suite
//$mavariable = macondition ? valeur_si_condition_vraie : valeur_si_condition_fausse $texte = !empty($donnees->$champs[1]) ? $donnees->$champs[1] : ""; $n = 2;
oui je l'avais bien écrite comme ça également mais j'avais toujours le même message.
$texte = !empty($donnees->$champs[1]) ? $donnees->$champs[1] : ""; $n = 2; //ligne 114 var_dump($champs[1]); // ligne 115 ( ! ) Warning: Array to string conversion in C:\wamp64\www\gestion\libs\class.liste.php on line 114 C:\wamp64\www\gestion\libs\class.liste.php:115:string 'nom' (length=3)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionPeux tu montrer le code exacte que tu as tapé pour obtenir ceci ?
Et si c'est bien juste un var_dump($donnees), tu peux voir que c'est un objet qui contient deux infos, l' ID et son LIBELLE
Après relecture de ton code, il semble que tu veuilles accéder à la propriété de l'objet $donnees en fonction d'une variable $champs
Il faut donc écrire : ($donnees->$champ)
par contre, si tu fais un var_dump($champ) obtiens tu un array ou juste une string ?
Si c'est juste une string, les [] ne servent à rien.
Si c'est un array, il faut utiliser la syntaxe
$c1 = !empty($champ)[1]) ? $champ)[1] : NULL; $text = !empty($c1) && !empty($donnees->$c1) ? $donnees->$c1 : "";
Ceci devrait t'aider à convertir ton code en > php7 (du moins pour cette partie)
Décents jusqu'au chapitre : Changes to the handling of indirect variables, properties, and methods
Bonjour, Voici le code complet. Donc sur mes 4 formulaires seul 1 formulaire où l'affichage n'est pas correct il y a uniquement que le nom il manque le prenom. pourtant lorsque je fait un var_dump ($donnees); j'ai bien toutes les infos. voir capture. Par contre si je fait un var_dump ($champs) j'obtiens une string. Les 3 autres formulaires l'affichage est correct. Merci.
Merci
<?php error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); class liste { // Attributs, propriétés de la classe //public $version = "1.13"; //public $release = "15 avr 2016"; //public $auteur = "Pierre FAUQUE"; //public $intranet = ""; //public $internet = "http://www.fauque.fr/"; public $sql = ""; public $champs = ""; public $texte = ""; public $ctrlname = ""; public $style = ""; public $onchange = ""; public $tronque = 0; public $option = ""; public $slimit = ""; public $limit = ""; public $nbrecs = 0; private $obj = ""; // ======================================================================== // Constructeur de la classe liste. // Lecture de la définition de la liste, initialisation des propriétés function __construct($objet, $ctrlname="", $style="", $limit=0) { require("$objet.def.php"); $this->champs = $this->getfieldnames($champs); $this->onchange = !empty($onchange) ? $onchange : ''; $this->texte = $texte; $this->ctrlname = $ctrlname; $this->style = $style; $this->obj = $objet; if($objet != "null") { $slimit = $limit; // sauvegarde du paramètre / fichier .def if($limit) { $this->limit = $limit; } if(!empty($lignes)) { $this->texte = ""; $this->option = " multiple size=\"$lignes\""; } if(!empty($where)) { $insWHERE = "WHERE $where"; } else { $insWHERE = ""; } if(!empty($group)) { $insGROUP = "GROUP BY $group"; } else { $insGROUP = ""; } if($ordre) { $insORDER = "ORDER BY $ordre"; } else { $insORDER = ""; } if($limit) { $insLIMIT = "LIMIT 0,$limit"; } else { $insLIMIT = ""; } if($slimit) { $insLIMIT = "LIMIT 0,$slimit"; } else { $insLIMIT = ""; } $this->sql = "SELECT $champs FROM $table $insWHERE $insGROUP $insORDER $insLIMIT"; $req = executeQuery($this->sql); $resultat = $req->fetchAll(); $this->nbrecs = !empty($resultat) ? count($resultat) : 0; unset($resultat); } } // ======================================================================== // Méthode de la classe liste. Celle-ci exécute la requête appropriée pour écrire la liste déroulante désignée. function write($indice="",$text=0) { $champs = explode(",",$this->champs); $idctrl = $champs[0]; if($this->ctrlname) { $idctrl = $this->ctrlname; } //if($this->style) { $style = " class=\"$this->style\""; } $style = !empty($this->style) ? " class='".$this->style."'": ""; //if($this->onchange) { $onchange = " onchange=\"javascript:$this->onchange\""; } $onchange = !empty($this->onchange) ? " onchange='javascript:".$this->onchange."' ": ""; if(!empty($this->sql)) { $req = executeQuery($this->sql); $resultat = $req->fetchAll(); //var_dump(debug_backtrace()); } else { echo "Erreur ! La requête est vide !"; $this->debug(); } //var_dump(count($resultat)); //$this->nbrecs = mysql_num_rows($resultat); $this->nbrecs = !empty($resultat) ? count($resultat) : 0; //if($text && $indice) { $textonly = 1; } else { $textonly = 0; } $textonly = $text && $indice ? 1 : 0; if(!$textonly) { echo "<select name=\"".$idctrl."\"$this->option".$style.$onchange.">"; if(!$this->option) { if($this->texte) { echo "<option value=\"null\">$this->texte"; } } } if(!empty($resultat)) { foreach($resultat as $donnees) { //var_dump($donnees); $indice = (int)$indice; //Convertir une chaîne en un entier. //if($indice/1) { $idnum = 0; } else { $idnum = 1; } $idnum = $indice/1 ? 0 : 1; //if($indice == $donnees->$champs[$idnum]) { $thisrec = 1; } else { $thisrec = 0; } $thisrec = $indice ? 1 : 0; if (count($champs) > 2) { $c1 = !empty($champs[1]) ? ($champs[1]) : NULL; $texte = !empty($c1) && !empty($donnees->$c1) ? $donnees->$c1 : ""; $n = 2; var_dump($donnees); if($textonly && $thisrec) { $buffer = $texte; } while(count($champs) > $n) { if($textonly && $thisrec) { $buffer .= " ".!empty($donnees->champs[$n]); $n++; } else { $texte .= " ".!empty($donnees->champs[$n]); $n++; } } } else { $c1 = !empty($champs[1]) ? ($champs[1]) : NULL; if($textonly && $thisrec) { $buffer = !empty($c1) && !empty($donnees->$c1) ? $donnees->$c1 : ""; } else { $texte = !empty($c1) && !empty($donnees->$c1) ? $donnees->$c1 : ""; } //var_dump($donnees); } if($this->tronque) { $lg = $this->tronque-9; // 9 = longueur de "... / ..." if(($lg % 2) != 0) { $lg++; } if(strlen($texte) > $lg) { $texte = substr($texte,0,$lg/2) . "... / ..." . substr($texte,strlen($texte)-($lg/2),$lg/2); } if(strlen($buffer) > $lg) { $buffer = substr($buffer,0,$lg/2) . "... / ..." . substr($buffer,strlen($buffer)-($lg/2),$lg/2); } } if(!$textonly) { echo "<option value=\"".!empty($donnees->champs[0])."\""; //var_dump($donnees); if($thisrec) { echo " selected"; } echo ">".$texte; } } } if($textonly) { echo $buffer; } else { echo "</select>\n"; } } // ======================================================================== // 30/09/2005. Méthode retournant la liste des champs en prenant en compte les alias // de champ possibles (ex: ..., DATE_FORMAT(date, '%d/%m/%Y') AS debut, ...) // ou les champs précédés du nom de table (ex: ..., ac_Personnes.idpers, ...) function getfieldnames($champs) { $fields = explode(",", $champs); for($n=0; $n<count($fields); $n++) { if(strstr(strtolower($fields[$n]), ".")) { $nfields = explode(".", $fields[$n]); $fields[$n] = $nfields[count($nfields)-1]; } if(strstr(strtolower($fields[$n]), " as ")) { $nfields = explode(" ", $fields[$n]); $fields[$n] = $nfields[count($nfields)-1]; } } $rfields = $fields[0]; for($n=1; $n<count($fields); $n++) { $rfields .= ",".$fields[$n]; } return $rfields; } // ======================================================================== // 11/07/2003. Methode affichant le nombre de lignes d'un résultat, // en fait le nombre d'éléments qu'il y aura dans la liste. function nbelements() { return $this->nbrecs; } // ======================================================================== // 27/03/2004. Méthode servant à changer le nom par défaut du contrôle 'select'. // Si elle est utilisée, elle doit l'être avant la méthode write(). function changename($ctrlname) { $this->ctrlname = $ctrlname; } // ======================================================================== // 05/10/2005. Méthode destinée à définir le style à utiliser dans la liste. // Si elle est utilisée, elle doit l'être avant la méthode write(). function usestyle($style) { $this->style = $style; } // ======================================================================== // 04/07/2003. Méthode initialisant la longueur maximale des éléments de la liste. // Si elle est utilisée, elle doit l'être avant la méthode write(). function tronque($nbcar) { $this->tronque = $nbcar; } // ======================================================================== // Méthode destinée au débuggage. Sert à afficher la requête à exécuter. function display() { echo $this->sql; } // ======================================================================== // 03/07/2003. Méthode retournant la version de la classe function version() { return "version $this->version ($this->release).<br>\n" ."Released under the GNU Public License<br>\n" ."© $this->auteur.\n"; } // ======================================================================== // 03/07/2003. Méthode retournant le numéro de la version de la classe function numversion() { return $this->version; } // ======================================================================== // 04/07/2003. Méthode testant si la version en cours est la dernière // Le paramètre passé est "intranet" ou "internet" function checkversion($lan="internet") { $msg = "The checking could'nt be done. " . "Do you are on the good network ?\n"; if($lan == "internet") { $url = $this->internet; } if($lan == "intranet") { $url = $this->intranet; } $url .= "dev/cliste/lastver.liste.txt"; if(!@$hf = fopen($url,"r")) { echo "$msg<br>\n"; exit; } $version = fgets($hf,100); $version = chop($version); $release = fgets($hf,100); $release = chop($release); $feature = fgets($hf,1000); $feature = chop($feature); $download = fgets($hf,1000); $download = chop($download); fclose($hf); if($version == $this->version) { echo "No new version since the $this->version (this one).\n"; } else { echo "<font color=\"#FF0000\"><b>New</b></font> : "; echo "version $version ($release).<br>\n"; echo "Features : $feature<br>\n"; echo "Download from : $download\n"; } } // ======================================================================== // 15/07/2003. Méthode affichant la documentation de la classe function showdoc($lan="internet") { if($lan == "internet") { $url = $this->internet; } if($lan == "intranet") { $url = $this->intranet; } $url .= "index.php?p=cliste.doc.php"; $style = "style='text-decoration: none'"; echo "<a href='$url' $style>French documentation</a>"; } // ======================================================================== // 05/10/2005. Méthode pour l'affichage des variables. function debug() { $style = "font-family:verdana; font-size:9pt; border-style:solid; " . "border-color:red; border-width:1px"; if($this->ctrlname) { $ctrlname = $this->crtlname; } else { $ch = explode(",",$this->champs); $ctrlname = $ch[0]; } echo "<table border=\"0\" cellpadding=\"2\" bgcolor=\"#FFFFA0\"><tr>"; echo "<td style=\"$style\">"; echo "<b>CLASS liste:</b><br>"; echo "Version: " .$this->version."<br>"; echo "Release: " .$this->release."<br>"; echo "Author: " .$this->auteur."<br>"; echo "URL-intranet: " .$this->intranet."<br>"; echo "URL-internet: " .$this->internet."<br>"; echo "<b>ATTRIBUTES:</b><br>"; echo "champs: " .$this->champs."<br>"; echo "texte: " .$this->texte."<br>"; echo "ctrlname: " .$ctrlname."<br>"; echo "tronque: " .$this->tronque."<br>"; echo "option: " .$this->option."<br>"; echo "style: " .$this->style."<br>"; echo "onchange: " .$this->onchange."<br>"; echo "limit: " .$this->limit."<br>"; echo "nbrecs: " .$this->nbrecs."<br>"; echo "objet: " .$this->obj."<br>"; echo "requete: " .$this->sql."<br>"; echo "</td></tr></table>"; } } ?>
Bonjour, OUF j'ai finalement trouvé à résoudre tous mes soucis d'affichage de mes formulaires enfin je veux dire nous avons....Un très grand merci pour ton aide. Tout à l'air de fonctionner correctement. Je te joins la fonction concerné. Encore merci.
function write($indice="",$text=0) { $champs = explode(",",$this->champs); $idctrl = $champs[0]; if($this->ctrlname) { $idctrl = $this->ctrlname; } $style = !empty($this->style) ? " class='".$this->style."'": ""; $onchange = !empty($this->onchange) ? " onchange='javascript:".$this->onchange."' ": ""; if(!empty($this->sql)) { $req = executeQuery($this->sql); $resultat = $req->fetchAll(); //var_dump(debug_backtrace()); } else { echo "Erreur ! La requête est vide !"; $this->debug(); } $this->nbrecs = !empty($resultat) ? count($resultat) : 0; $textonly = $text && $indice ? 1 : 0; if(!$textonly) { echo "<select name=\"".$idctrl."\"$this->option".$style.$onchange.">"; if(!$this->option) { if($this->texte) { echo "<option value=\"null\">$this->texte"; } } } if(!empty($resultat)) { foreach($resultat as $donnees) { $indice = (int)$indice; //Convertir une chaîne en un entier. if($indice/1) { $idnum = 0; } else { $idnum = 1; } $thisrec = $indice ? 1 : 0; if (count($champs) > 2) { $c1 = !empty($champs[1]) ? ($champs[1]) : NULL; $texte = !empty($c1) && !empty($donnees->$c1) ? $donnees->$c1 : ""; $n = 2; if($textonly && $thisrec) { $buffer = $texte; } while(count($champs) > $n) { $cn = !empty($champs[$n]) ? ($champs[$n]) : NULL; if($textonly && $thisrec) { $buffer .= " ".!empty($cn) && !empty($donnees->$cn) ? $donnees->$cn : " "; $n++; } else { $texte .= " ".!empty($cn) && !empty($donnees->$cn) ? $donnees->$cn : " "; $n++; } } } else { $c1 = !empty($champs[1]) ? ($champs[1]) : NULL; if($textonly && $thisrec) { $buffer = !empty($c1) && !empty($donnees->$c1) ? $donnees->$c1 : ""; } else { $texte = !empty($c1) && !empty($donnees->$c1) ? $donnees->$c1 : ""; } } if($this->tronque) { $lg = $this->tronque-9; // 9 = longueur de "... / ..." if(($lg % 2) != 0) { $lg++; } if(strlen($texte) > $lg) { $texte = substr($texte,0,$lg/2) . "... / ..." . substr($texte,strlen($texte)-($lg/2),$lg/2); } if(strlen($buffer) > $lg) { $buffer = substr($buffer,0,$lg/2) . "... / ..." . substr($buffer,strlen($buffer)-($lg/2),$lg/2); } } if(!$textonly) { echo "<option value=\"".!empty($donnees->champs[0])."\""; //var_dump($donnees); if($thisrec) { echo " selected"; } echo ">".$texte; } } } if($textonly) { echo $buffer; } else { echo "</select>\n"; } }