Récupération des données
RésoluLaChaux78 Messages postés 583 Date d'inscription Statut Membre Dernière intervention -
Bonjour à vous tous, Après avoir cherché pas mal de temps et essayé pas mal de trucs je suis désespéré. En fait je cherche à récupérer les données appropriée pour écrire les listes déroulantes.
Je vous remercie très sincèrement pour votre aide.
Voici la fonction de la classe liste.
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) { if (!empty($indice) && (is_array($indice) || is_object($indice))) { echo "la variable indice ne contient pas la bonne valeur ?"; $idnum = 1; $thisrec = 0; } else { $indice = !empty($indice) ? intVal($indice) : 0 ; //Convertir une chaîne en un entier. $idnum = ($indice/1) ? 0 : 1; $thisrec = !empty($this->champs) && is_array($this->champs) && $indice == $this->champs[$idnum] ? 1 : 0 ; var_dump($indice, $this->champs); } 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])."\""; if($thisrec) { echo " selected"; } echo ">".$texte; } } } if($textonly) { echo $buffer; } else { echo "</select>\n"; } }
voici la capture concernant le retour du var_dump($indice, $this->champs)
- Récupération des données
- Fuite données maif - Guide
- Trier des données excel - Guide
- Sauvegarde des données - Guide
- Supprimer les données de navigation - Guide
- Logiciel de récupération de données - Guide
29 réponses
Bonjour je me permet de revenir une fois vers toi, toujours pour le même soucis. Peux tu me dire comment résoudre cette erreur s'il te plait, peut-être que cela va m'aider à solutionner mon problème. je te remercie.
Notice: Array to string conversion in C:
Je crois comprendre que j’essaye d'afficher une chaine de caractère alors que c'est un tableau ?
Merci
Bonjour petit bout de code où j'ai fait les var_dump sur mes 3 variables concernées.
if (!empty($indice) && (is_array($indice) || is_object($indice))) { echo "la variable indice ne contient pas la bonne valeur ?"; $idnum = 1; $thisrec = 0; } else { $idnum = ($indice/1) ? 0 : 1; var_dump($indice); var_dump($champs); var_dump($idnum); $thisrec = !empty($donnees->$champs) && is_array($donnees->$champs) && $indice == $donnees->$champs[$idnum] ? 1 : 0 ; }
Voici le retour.
Notice: Array to string conversion in C:\wamp64\www\gestion\libs\class.liste.php on line 10 C:\wamp64\www\gestion\libs\class.liste.php:7:string '14' (length=2) C:\wamp64\www\gestion\libs\class.liste.php:8: array (size=3) 0 => string 'idaut' (length=5) 1 => string 'nom' (length=3) 2 => string 'prenom' (length=6) C:\wamp64\www\gestion\libs\class.liste.php:9:int 0
Bonjour, j'ai bien pris connaissance du lien en français en ce qui concerne "$donnees->$champs[$idnum]" à propos des accolades /parenthése mais je n'ai pas réussi à résoudre mon problème.
Expression Interprétation PHP 5 Interprétation PHP 7 $$foo['bar']['baz'] ${$foo['bar']['baz']} ($$foo)['bar']['baz'] $foo->$bar['baz'] $foo->{$bar['baz']} ($foo->$bar)['baz'] $foo->$bar['baz']() $foo->{$bar['baz']}() ($foo->$bar)['baz']() Foo::$bar['baz']() Foo::{$bar['baz']}() (Foo::$bar)['baz']()
non is_array($donnees->$champs) n'était pas dans la version antérieure...
$thisrec = !empty($donnees->$champs) && is_array($donnees->$champs) && $indice == ($donnees->$champs)[$idnum] ? 1 : 0 ;
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionvoici le code de la version antérieure qui fonctionne.
if($indice/1) { $idnum = 0; } else { $idnum = 1; }
if($indice == $donnees->$champs[$idnum]) { $thisrec = 1; } else { $thisrec = 0; }
cela me renvoie une erreur
Parse error: syntax error, unexpected '(', expecting identifier (T_STRING) or variable (T_VARIABLE) or '{' or '$' in C:\wamp64\www\gestion\libs\class.liste.php on line 233
if (!empty($indice) && (is_array($indice) || is_object($indice))) { echo "la variable indice ne contient pas la bonne valeur ?"; $idnum = 1; $thisrec = 0; } else { $idnum = ($indice/1) ? 0 : 1; var_dump($indice); var_dump($champs); var_dump($idnum); $thisrec = !empty($donnees->$champs) && is_array($donnees->$champs) && $indice == $donnees->($champs[$idnum]) ? 1 : 0 ; }
je te remercie
toujours pas de résultat, même avec les accolades.
if (!empty($indice) && (is_array($indice) || is_object($indice))) { echo "la variable indice ne contient pas la bonne valeur ?"; $idnum = 1; $thisrec = 0; } else { $idnum = ($indice/1) ? 0 : 1; var_dump($indice); var_dump($champs); var_dump($idnum); $thisrec = !empty($donnees->$champs) && is_array($donnees->$champs) && $indice == $donnees->{$champs[$idnum]} ? 1 : 0 ; }
toujours la même erreur concerne la ligne 10
Notice: Array to string conversion in C:
Il s'agit, en effet, d'un avertissement, qui te prévient que tu essaies de convertir un tableau en une chaîne de caractères.