Récupération des données
RésoluLaChaux78 Messages postés 607 Statut Membre -
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
- Logiciel de récupération de données - Guide
- Supprimer les données de navigation - 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.