Warning: Undefined property
RésoluLaChaux78 Messages postés 583 Date d'inscription Statut Membre Dernière intervention -
Bonjour J'ai une erreur que je ne comprends absolument pas. Pouvez-vous s'ils vous plait me guider dans ma recherche.
Cette erreur concerne la listes des formulaires qui me renvoie dans la fonction qui va récupérer le nom à modifier via son id.
Je vous remercie pour votre aide.
Warning: Undefined property: liste::$sql in C:\wamp64\www\gestion\libs\class.liste.php on line 68
Voici également la ligne 68.
$result = executeQuery($this->sql,$datas);
- Une erreur a été signalée lors du téléchargement. (undefined)
- Warning zone telechargement - Accueil - Outils
- Téléchargement et streaming illégal : voici les adresses des sites pirates que les FAI vont bloquer - Accueil - Services en ligne
- Cpu fan fail warning control - Forum Matériel & Système
- Symbole warning word ✓ - Forum Word
- Comment faire le symbole attention ✓ - Forum Loisirs / Divertissements
38 réponses
oui on dirai, j'ai rajouté la requète je ne suis pas vraiment sur de ce que j'ai fait..
function write($indice="",$text=0) { $table = ""; $champs = explode(",",$this->champs); $idctrl = $champs[0]; if($this->ctrlname) { $idctrl = $this->ctrlname; } if($this->style) { $style = " class=\"$this->style\""; } if($this->onchange) { $onchange = " onchange=\"javascript:$this->onchange\""; } $this->sql = "SELECT * FROM $table"; $datas = NULL; $result = executeQuery($this->sql,$datas); $this->nbrecs = $result->rowCount();
Erreur ! SQLSTATE[42000]: Syntax error or access violation: 1064 Erreur de syntaxe près de '' à la ligne 1
oui mais je lui affecte quoi comme valeur?
Bonjour alors voilà où j'en suis. Avec ton dernier post il m'est venu une idée. J'ai installé sur le PC de mon épouse Wampserveur avec la version PHP 5.3.5 ensuite j'ai copié mon dossier de mon site tel quel et tout fonctionne normalement. Alors que sur mon PC c'est la version PHP 8.1.13. Capture d'écran c'est le résultat final que je souhaitai. J'ai également installé une autre version de PHP 7.4.33 et j'ai pas les mêmes messages d'erreur que la version 8.
A ton avis existe t-il un moyen d'éviter les erreurs liés à chaque version en utilisant peut-être des contrôles sur les fonctions.
Je te remercie.
Il y a forcément des différences entre les versions de PHP. Des fonctions qui évoluent d'autres qui deviennent obsolètes et qui disparaissent d'autres qui sont modifiés en ajoutant des contraintes un peu plus sévère au niveau des types de variables ou des valeurs autorisées à y passer.
Tu ne pourras jamais te prévenir totalement des risques lorsque tu changes de version. La seule chose à faire étant de faire évoluer ton code pour qu'il soit compatible avec cette nouvelle version.
Concernant l'affichage ou non des erreurs, il se peut simplement que ça soit également lié à un paramètre au niveau de la configuration du serveur. Tu peux normalement choisir le niveau d'alerte qui doit être affiché sur ton site. Le risque en désactivant l'affichage des erreurs, et d'avoir des fonctionnements incohérents dans ton code. C'est donc très fortement déconseillé il vaut mieux chercher à résoudre la cause plutôt que de la masquer.
Si tu me dis que ta fonction write fonctionne sur l'ordinateur de ta femme, vérifie si elle est identique à celle que tu nous as montré ou non... Après toutes les bidouilles que tu as fait il faut vraiment vérifier si tu n'as rien supprimer ou modifier par rapport au code d'origine qui provoque désormais ses erreurs sur ton site.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionj'ai vérifié avec beaucoup d'attention j'ai passé ligne âpres lignes les fichiers
init.php
class.list.php
sais_adherer.php
sont identiques sur mes 2 PC
sur le PC de mon épouse tout va bien aucune erreur sur toutes les pages qui est la version PHP 5.3.5
avec la version PHP 8.1.13 voici les erreurs
j'ai regardé avec la version PHP 7.4.33 et les erreurs sont différentes
Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; liste has a deprecated constructor in C:\wamp64\www\gestion\libs\class.liste.php on line 3 Warning: A non-numeric value encountered in C:\wamp64\www\gestion\libs\class.liste.php on line 76
Oui ... c'est normal ... relis ma réponse précédente.
Pourrais tu nous montrer le code de la fonction write tel qu'il est sur le pc de ta femme ?
A noter que .. si c'est le même que celui que tu as sur ton php 8 ... dans ce cas .. relis mon réponse d'hier concernant l'âme charitable qui t'a pondu cette usine à gaz ..
oui bien sur j'avais bien compris concernant les différentes version de php j'avais posté juste comme ça...
voici le code de la fonction write qui est sur les 2 pcs
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\""; } if($this->onchange) { $onchange = " onchange=\"javascript:$this->onchange\""; } $datas = NULL; $result = executeQuery($this->sql,$datas); $this->nbrecs = $result->rowCount(); if($text && $indice) { $textonly = 1; } else { $textonly = 0; } if(!$textonly) { echo "<select name=\"".$idctrl."\"$this->option".$style.$onchange.">"; if(!$this->option) { if($this->texte) { echo "<option value=\"null\">$this->texte"; } } } while ($donnees = $result->fetch()) { 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"; } }
en ce qui concerne la personne qui m'avait donné la class je n'ai plus de nouvelle depuis 4 ans.
j'ai retrouvé tous les fichiers avant que je fasses les modifs. fonction liste et fonction write.
<?php class liste { // Attributs, propriétés de la classe var $version = "1.13"; var $release = "15 avr 2016"; var $auteur = "Pierre FAUQUE"; var $intranet = ""; var $internet = "http://www.fauque.fr/"; var $champs = ""; var $texte = ""; var $requete = ""; var $ctrlname = ""; var $tronque = 0; var $option = ""; var $style = ""; var $onchange = ""; var $slimit = ""; var $limit = ""; var $nbrecs = 0; // ======================================================================== // Constructeur de la classe liste. // Lecture de la définition de la liste, initialisation des propriétés function liste($objet, $ctrlname="", $style="", $limit=0) { if($objet != "null") { $slimit = $limit; // sauvegarde du paramètre / fichier .def require("$objet.def.php"); $this->texte = $texte; $this->ctrlname = $ctrlname; $this->style = $style; $this->onchange = $onchange; $this->champs = $this->getfieldnames($champs); if($limit) { $this->limit = $limit; } if($lignes) { $this->texte = ""; $this->option = " multiple size=\"$lignes\""; } if($where) { $insWHERE = "WHERE $where"; } else { $insWHERE = ""; } if($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->requete = "SELECT $champs FROM $table $insWHERE $insGROUP $insORDER $insLIMIT;"; $cnx = $GLOBALS["connexion"]; // $connexion est dans 'connexion.php' $resultat = ExecRequete($this->requete,$cnx); $this->nbrecs = mysql_num_rows($resultat); 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. La variable $connexion doit exister. // Utiliser les fichiers fournis 'mysql_account.php' et 'connexion.php' function write($indice="",$text=0) { $cnx = $GLOBALS["connexion"]; $champs = explode(",",$this->champs); $idctrl = $champs[0]; if($this->ctrlname) { $idctrl = $this->ctrlname; } if($this->style) { $style = " class=\"$this->style\""; } if($this->onchange) { $onchange = " onchange=\"javascript:$this->onchange\""; } $resultat = ExecRequete($this->requete,$cnx); $this->nbrecs = mysql_num_rows($resultat); if($text && $indice) { $textonly = 1; } else { $textonly = 0; } if(!$textonly) { echo "<select name=\"".$idctrl."\"$this->option".$style.$onchange.">"; if(!$this->option) { if($this->texte) { echo "<option value=\"null\">$this->texte"; } } } while($r = mysql_fetch_object($resultat)) { if($indice/1) { $idnum = 0; } else { $idnum = 1; } if($indice == $r->$champs[$idnum]) { $thisrec = 1; } else { $thisrec = 0; } if (count($champs) > 2) { $texte = $r->$champs[1]; $n = 2; if($textonly && $thisrec) { $buffer = $texte; } while(count($champs) > $n) { if($textonly && $thisrec) { $buffer .= " ".$r->$champs[$n]; $n++; } else { $texte .= " ".$r->$champs[$n]; $n++; } } } else { if($textonly && $thisrec) { $buffer = $r->$champs[1]; } else { $texte = $r->$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=\"".$r->$champs[0]."\""; if($thisrec) { echo " selected"; } echo ">".$texte; } } if($textonly) { echo $buffer; } else { echo "</select>\n"; } }
<?php class liste { // Attributs, propriétés de la classe var $version = "1.13"; var $release = "15 avr 2016"; var $auteur = "Pierre FAUQUE"; var $intranet = ""; var $internet = "http://www.fauque.fr/"; var $champs = ""; var $texte = ""; var $requete = ""; var $ctrlname = ""; var $tronque = 0; var $option = ""; var $style = ""; var $onchange = ""; var $slimit = ""; var $limit = ""; var $nbrecs = 0; // ======================================================================== // Constructeur de la classe liste. // Lecture de la définition de la liste, initialisation des propriétés function liste($objet, $ctrlname="", $style="", $limit=0) { if($objet != "null") { $slimit = $limit; // sauvegarde du paramètre / fichier .def require("$objet.def.php"); $this->texte = $texte; $this->ctrlname = $ctrlname; $this->style = $style; $this->onchange = $onchange; $this->champs = $this->getfieldnames($champs); if($limit) { $this->limit = $limit; } if($lignes) { $this->texte = ""; $this->option = " multiple size=\"$lignes\""; } if($where) { $insWHERE = "WHERE $where"; } else { $insWHERE = ""; } if($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->requete = "SELECT $champs FROM $table $insWHERE $insGROUP $insORDER $insLIMIT;"; $cnx = $GLOBALS["connexion"]; // $connexion est dans 'connexion.php' $resultat = ExecRequete($this->requete,$cnx); $this->nbrecs = mysql_num_rows($resultat); 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. La variable $connexion doit exister. // Utiliser les fichiers fournis 'mysql_account.php' et 'connexion.php' function write($indice="",$text=0) { $cnx = $GLOBALS["connexion"]; $champs = explode(",",$this->champs); $idctrl = $champs[0]; if($this->ctrlname) { $idctrl = $this->ctrlname; } if($this->style) { $style = " class=\"$this->style\""; } if($this->onchange) { $onchange = " onchange=\"javascript:$this->onchange\""; } $resultat = ExecRequete($this->requete,$cnx); $this->nbrecs = mysql_num_rows($resultat); if($text && $indice) { $textonly = 1; } else { $textonly = 0; } if(!$textonly) { echo "<select name=\"".$idctrl."\"$this->option".$style.$onchange.">"; if(!$this->option) { if($this->texte) { echo "<option value=\"null\">$this->texte"; } } } while($r = mysql_fetch_object($resultat)) { if($indice/1) { $idnum = 0; } else { $idnum = 1; } if($indice == $r->$champs[$idnum]) { $thisrec = 1; } else { $thisrec = 0; } if (count($champs) > 2) { $texte = $r->$champs[1]; $n = 2; if($textonly && $thisrec) { $buffer = $texte; } while(count($champs) > $n) { if($textonly && $thisrec) { $buffer .= " ".$r->$champs[$n]; $n++; } else { $texte .= " ".$r->$champs[$n]; $n++; } } } else { if($textonly && $thisrec) { $buffer = $r->$champs[1]; } else { $texte = $r->$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=\"".$r->$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->requete; } // ======================================================================== // 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 "requete: " .$this->requete. "<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 "</td></tr></table>"; } } ?>
Merci.
Essaye ça
<?php class liste { // Attributs, propriétés de la classe var $version = "1.13"; var $release = "15 avr 2016"; var $auteur = "Pierre FAUQUE"; var $intranet = ""; var $internet = "http://www.fauque.fr/"; var $champs = ""; var $texte = ""; var $requete = ""; var $ctrlname = ""; var $tronque = 0; var $option = ""; var $style = ""; var $onchange = ""; var $slimit = ""; var $limit = ""; var $nbrecs = 0; // ======================================================================== // Constructeur de la classe liste. // Lecture de la définition de la liste, initialisation des propriétés function liste($objet, $ctrlname="", $style="", $limit=0) { if($objet != "null") { $slimit = $limit; // sauvegarde du paramètre / fichier .def require("$objet.def.php"); $this->texte = $texte; $this->ctrlname = $ctrlname; $this->style = $style; $this->onchange = $onchange; $this->champs = $this->getfieldnames($champs); if($limit) { $this->limit = $limit; } if($lignes) { $this->texte = ""; $this->option = " multiple size=\"$lignes\""; } if($where) { $insWHERE = "WHERE $where"; } else { $insWHERE = ""; } if($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->requete = "SELECT $champs FROM $table $insWHERE $insGROUP $insORDER $insLIMIT;"; $resultat = executeQuery($this->requete); //$this->nbrecs = $result->rowCount(); NE PAS UTILISER SUR DES REQUETES DE TYPE SELECT.. A LA PLACE: $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. La variable $connexion doit exister. // Utiliser les fichiers fournis 'mysql_account.php' et 'connexion.php' 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\""; } if($this->onchange) { $onchange = " onchange=\"javascript:$this->onchange\""; } if(!empty($this->requete)){ $resultat = executeQuery($this->requete); } $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"; } } } while($r = mysql_fetch_object($resultat)) { if($indice/1) { $idnum = 0; } else { $idnum = 1; } if($indice == $r->$champs[$idnum]) { $thisrec = 1; } else { $thisrec = 0; } if (count($champs) > 2) { $texte = $r->$champs[1]; $n = 2; if($textonly && $thisrec) { $buffer = $texte; } while(count($champs) > $n) { if($textonly && $thisrec) { $buffer .= " ".$r->$champs[$n]; $n++; }else{ $texte .= " ".$r->$champs[$n]; $n++; } } } else { if($textonly && $thisrec) { $buffer = $r->$champs[1]; } else { $texte = $r->$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=\"".$r->$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->requete; } // ======================================================================== // 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 "requete: " .$this->requete. "<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 "</td></tr></table>"; } }
Bonjour
Merci.
Warning: Undefined variable $style in C:\wamp64\www\gestion\libs\class.liste.php on line 78 Warning: Undefined variable $onchange in C:\wamp64\www\gestion\libs\class.liste.php on line 78 Fatal error: Uncaught Error: Call to undefined function mysql_fetch_object() in C:\wamp64\www\gestion\libs\class.liste.php on line 83
<?php class liste { // Attributs, propriétés de la classe var $version = "1.13"; var $release = "15 avr 2016"; var $auteur = "Pierre FAUQUE"; var $intranet = ""; var $internet = "http://www.fauque.fr/"; var $champs = ""; var $texte = ""; var $requete = ""; var $ctrlname = ""; var $tronque = 0; var $option = ""; var $style = ""; var $onchange = ""; var $slimit = ""; var $limit = ""; var $nbrecs = 0; // ======================================================================== // Constructeur de la classe liste. // Lecture de la définition de la liste, initialisation des propriétés function liste($objet, $ctrlname="", $style="", $limit=0) { if($objet != "null") { $slimit = $limit; // sauvegarde du paramètre / fichier .def require("$objet.def.php"); $this->texte = $texte; $this->ctrlname = $ctrlname; $this->style = $style; $this->onchange = $onchange; $this->champs = $this->getfieldnames($champs); if($limit) { $this->limit = $limit; } if($lignes) { $this->texte = ""; $this->option = " multiple size=\"$lignes\""; } if($where) { $insWHERE = "WHERE $where"; } else { $insWHERE = ""; } if($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->requete = "SELECT $champs FROM $table $insWHERE $insGROUP $insORDER $insLIMIT;"; $resultat = executeQuery($this->requete); //$this->nbrecs = $result->rowCount(); NE PAS UTILISER SUR DES REQUETES DE TYPE SELECT.. A LA PLACE: $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. La variable $connexion doit exister. // Utiliser les fichiers fournis 'mysql_account.php' et 'connexion.php' 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->requete)){ $req = executeQuery($this->requete); $resultat = $req->fetchAll(); } $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 $r)) { if($indice/1) { $idnum = 0; } else { $idnum = 1; } if($indice == $r->$champs[$idnum]) { $thisrec = 1; } else { $thisrec = 0; } if (count($champs) > 2) { $texte = $r->$champs[1]; $n = 2; if($textonly && $thisrec) { $buffer = $texte; } while(count($champs) > $n) { if($textonly && $thisrec) { $buffer .= " ".$r->$champs[$n]; $n++; }else{ $texte .= " ".$r->$champs[$n]; $n++; } } } else { if($textonly && $thisrec) { $buffer = $r->$champs[1]; } else { $texte = $r->$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=\"".$r->$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->requete; } // ======================================================================== // 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 "requete: " .$this->requete. "<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 "</td></tr></table>"; } }
Bonjour en ce qui concerne mon objet.def.php. En fait j'ai plusieurs fichiers par exemple dont le nom est "classes.def.php", "adherents.def.php" etc.... ils contiennent les variables $table $champs $where $ordre $texte
<?php $table = "cdc_classes"; $champs = "idclas,classe"; $ordre = "classe"; $texte = "-- Classe --"; ?>
voici l'instanciation de la class liste
// Création des listes déroulantes à utiliser $LDpers = new liste("libs/personnes","","oblig"); // Liste des personnes $LDpaie = new liste("libs/paiements","","oblig"); // Liste des paiements possibles $LDclas = new liste("libs/classes","","oblig"); // Liste des classes de musiciens $LDpup = new liste("libs/pupitres","",""); // Liste des pupitres par musiciens
voici le formulaire
echo '<form method="post" name="adh" action="'.$_SERVER["PHP_SELF"].'" onsubmit="return verif()">'; echo '<h1>'.$title.'</h1>'; echo '<table>'; echo '<tr>'; echo '<td class="libel">Adhérent</td>'; echo '<td class="data">'; echo $LDpers->write($idpers).'<input type="button" name="plus" value="+" onclick="javascript:document.location=\'sais_personnes.php?a=add\'" /></td>'; echo '</tr><tr>'; echo '<td class="libel">Cotisation</td>'; echo '<td class="data">'; echo $LDpaie->write($idpaie).'</td>'; echo '</tr><tr>'; echo '<td class="libel">Classe de musicien</td>'; echo '<td class="data">'; echo $LDclas->write($idclas).'</td>'; echo '</tr><tr>'; echo '<td class="libel">Instrument du musicien</td>'; echo '<td class="data">'; echo $LDpup->write($idpup).'</td>'; echo '</tr><tr>'; echo '<td class="libel">Au titre de l\'année</td>'; echo '<td class="data"><input type="text" name="annee" size="3" value="'.$aadh.'" class="oblig" readonly="readonly" /></td>'; echo '</tr><tr>'; echo '<td class="libel">Date de début</td>'; echo '<td class="data"><input type="text" name="ddebut" size="8" value="'.$ddebut.'" /></td>'; echo '</tr><tr>'; echo '<td class="libel">Date de fin</td>'; echo '<td class="data"><input type="text" name="dfin" size="8" value="'.$dfin.'" readonly="readonly" /></td>'; echo '</tr><tr>'; echo '<td class="libel">Montant payé</td>'; echo '<td class="data"><input type="text" name="montant" size="5" style="text-align:right" value="'.$montant.'" /> €</td>'; echo '</tr><tr>'; echo '<p>'; //Le for du label doit-être identique à l'id de l'input echo '<input type="checkbox" id="facture" class="css-facture" name="facture" value="1" '.$checked.' />'; echo '<label for="facture" class="css-facture">Envoyer Facture</label>'; echo '</p>'; echo '</tr>'; echo '<td>'; echo '<input type="hidden" name="haction" value="'.$action.'" />'; echo '<input type="hidden" name="oldid" value="'.$oldid.'" />'; echo '</td>'; echo '<td class="data"><input type="submit" name="submit" value="'.$btsub.'" /></td>'; echo '</tr>'; echo '</table>'; echo '</form>';
Je viens de voir que le constructeur de ta class n'était pas bon.
Etonnant que tu n'aies pas eu de message d'erreur à ce sujet ( surtout en php 8 )..
Voici déjà une correction
<?php 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 $champs = ""; public $texte = ""; public $requete = ""; public $ctrlname = ""; public $tronque = 0; public $option = ""; public $style = ""; public $onchange = ""; public $slimit = ""; public $limit = ""; private $obj = ""; public $nbrecs = 0; // ======================================================================== // 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) { $this->obj = $objet; if($objet != "null") { $slimit = $limit; // sauvegarde du paramètre / fichier .def require("$objet.def.php"); $this->texte = $texte; $this->ctrlname = $ctrlname; $this->style = $style; $this->onchange = $onchange; $this->champs = $this->getfieldnames($champs); if($limit) { $this->limit = $limit; } if($lignes) { $this->texte = ""; $this->option = " multiple size=\"$lignes\""; } if($where) { $insWHERE = "WHERE $where"; } else { $insWHERE = ""; } if($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->requete = "SELECT $champs FROM $table $insWHERE $insGROUP $insORDER $insLIMIT;"; $resultat = executeQuery($this->requete); //$this->nbrecs = $result->rowCount(); NE PAS UTILISER SUR DES REQUETES DE TYPE SELECT.. A LA PLACE: $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. La variable $connexion doit exister. // Utiliser les fichiers fournis 'mysql_account.php' et 'connexion.php' 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->requete)){ $req = executeQuery($this->requete); $resultat = $req->fetchAll(); } 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 $r)) { if($indice/1) { $idnum = 0; } else { $idnum = 1; } if($indice == $r->$champs[$idnum]) { $thisrec = 1; } else { $thisrec = 0; } if (count($champs) > 2) { $texte = $r->$champs[1]; $n = 2; if($textonly && $thisrec) { $buffer = $texte; } while(count($champs) > $n) { if($textonly && $thisrec) { $buffer .= " ".$r->$champs[$n]; $n++; }else{ $texte .= " ".$r->$champs[$n]; $n++; } } } else { if($textonly && $thisrec) { $buffer = $r->$champs[1]; } else { $texte = $r->$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=\"".$r->$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->requete; } // ======================================================================== // 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 "requete: " .$this->requete. "<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 "</td></tr></table>"; } }
Il faut certainement regarder également les différentes class qui sont utilisées par ce script.
Tous les trucs qui sont dans le dossier libs
libs/personnes
libs/paiements
libs/classes
libs/pupitres
J'ai peur qu'il faille aussi corriger ces fichiers ...
Décidément ce PHP 8.... j'ai essayé de comprendre et de résoudre mais en vain...
Warning: Undefined variable $onchange in C:\wamp64\www\gestion\libs\class.liste.php on line 36 Warning: Undefined variable $lignes in C:\wamp64\www\gestion\libs\class.liste.php on line 41 Warning: Undefined variable $where in C:\wamp64\www\gestion\libs\class.liste.php on line 45 Warning: Undefined variable $group in C:\wamp64\www\gestion\libs\class.liste.php on line 46 Fatal error: Uncaught TypeError: count(): Argument #1 ($value) must be of type Countable|array, PDOStatement given in C:\wamp64\www\gestion\libs\class.liste.php on line 55
Bonjour, concernant mon soucis avec PHP 8 j'ai souhaité pour voir de repasser à PHP 7. Voici l'erreur qu'on me renvoie. Peux tu s'il te plait essayer de regarder comment résoudre cette erreur, Je te remercie.
Warning: A non-numeric value encountered in C:\wamp64\www\gestion\libs\class.liste.php on line 93
Cette erreur se trouve dans la fonction write.
if($indice/1) { $idnum = 0; } else { $idnum = 1; }
Bonjour j'ai converti la valeur $indice en entier cela a supprimé l'erreur mais ça n'a toujours pas récupéré les valeurs des formulaires.
$indice = (int)$indice;
function write($indice="",$text=0) { $indice = (int)$indice; var_dump($indice); $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->requete)){ $req = executeQuery($this->requete); $resultat = $req->fetchAll(); } $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 $r) { if($indice/1) { $idnum = 0; } else { $idnum = 1; } if($indice == $r->$champs[$idnum]) { $thisrec = 1; } else { $thisrec = 0; } if (count($champs) > 2) { $texte = $r->$champs[1]; $n = 2; if($textonly && $thisrec) { $buffer = $texte; } while(count($champs) > $n) { if($textonly && $thisrec) { $buffer .= " ".$r->$champs[$n]; $n++; }else{ $texte .= " ".$r->$champs[$n]; $n++; } } } else { if($textonly && $thisrec) { $buffer = $r->$champs[1]; } else { $texte = $r->$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=\"".$r->$champs[0]."\""; if($thisrec) { echo " selected"; } echo ">".$texte; } } } if($textonly) { echo $buffer; } else{ echo "</select>\n"; } }
Ta variable table est vide...