Page 1 sur 1

problème d'affichage de variable de base de données

Posté : 27 févr. 2022, 22:39
par eldudu
Bonjour,

Je n'arrive pas à afficher une variable, et je n'arrive pas à voir où ça pêche.

J'essaie d'écrire une fonction en début de code pour éviter de retaper du code:

Code : Tout sélectionner

function cellitem ($cellitemlabel,$placeholder) { echo '<tr>'; echo '<td>'; echo "<label>$cellitemlabel :</label>"; echo '</td>'; echo '<td>'; echo "<input type=text name=new$cellitemlabel placeholder=$placeholder value="$user['$cellitemlabel']"/><br /><br />"; echo '</td>'; echo '</tr>'; }
Mais quand j'appelle, ma page, ça ne marche pas pour cette variable:

Code : Tout sélectionner

value="$user['$cellitemlabel']"
Si je fais mon echo sans passer par la fonction, ça fonctionne, et si je remplace la variable par du texte, ça marche aussi.
Mon soucis c'est de trouver la bonne syntaxe :-( j'ai essayé avec des ' , des ", des [], mais rien n'y fait :-(

Re: problème d'affichage de variable de base de données

Posté : 27 févr. 2022, 22:42
par or 1
cellitem ($cellitemlabel,$placeholder)
la fonction prend 2 paramètres or il y en a besoin de 3.

Re: problème d'affichage de variable de base de données

Posté : 27 févr. 2022, 22:49
par eldudu
au temps pour moi, c'est aussi $cellitemlabel, je modifie le post de départ.Désolé :-(

Re: problème d'affichage de variable de base de données

Posté : 27 févr. 2022, 23:33
par @rthur
Vérifie le code HTML généré (clic droit, afficher la source).
Je ne sais pas si c'est l'origine du problème que tu rencontres, mais quoi qu'il en soit, il faut que les attributs des inputs soient entre guillemets.

Et pour éviter un conflit de guillemets doubles dans le code PHP, il faut que tu échappes tes guillemets avec un antislash :

Code : Tout sélectionner

echo "<input placeholder=\"$placeholder\" ...>";

Re: problème d'affichage de variable de base de données

Posté : 28 févr. 2022, 23:16
par eldudu
merci pour vos réponses :-)
Bon au final j'ai rusé et ça marche comme ça:

Code : Tout sélectionner

$useritem = $user['$cellitemlabel']; echo '<tr>'; echo '<td>'; echo "<label>$cellitemlabel :</label>"; echo '</td>'; echo '<td>'; echo "<input type=text name=$newcellitemlabel placeholder=$placeholder value=$useritem /><br /><br />";

Re: [RESOLU] problème d'affichage de variable de base de données

Posté : 01 mars 2022, 15:12
par @rthur
Le code HTML généré n'est pas correct si tu ne mets pas de guillemets autour de la valeur de tes attributs (en particulier placeholder qui peut contenir des espaces et des caractères spéciaux) donc si tu veux éviter les problèmes, mets des guillemets comme je t'ai indiqué. :-D

Re: [RESOLU] problème d'affichage de variable de base de données

Posté : 01 mars 2022, 15:14
par or 1
et le problème était un problème de portée de variable, voir https://www.php.net/manual/fr/language. ... .scope.php

Re: [RESOLU] problème d'affichage de variable de base de données

Posté : 01 mars 2022, 20:15
par eldudu
Le code HTML généré n'est pas correct si tu ne mets pas de guillemets autour de la valeur de tes attributs (en particulier placeholder qui peut contenir des espaces et des caractères spéciaux) donc si tu veux éviter les problèmes, mets des guillemets comme je t'ai indiqué. :-D
yes , j'ai fait le mauvais copié/collé! c'est ça qui marche:

Code : Tout sélectionner

$useritem = $user['age']; echo '<tr>'; echo '<td>'; echo "<label>$cellitemlabel :</label>"; echo '</td>'; echo '<td>'; echo "<input type=text name=\"$newcellitemlabel\" placeholder=\"$placeholder\" value=\"$useritem\" /><br /><br />";

Re: [RESOLU] problème d'affichage de variable de base de données

Posté : 01 mars 2022, 20:16
par eldudu
et le problème était un problème de portée de variable, voir https://www.php.net/manual/fr/language. ... .scope.php
super! je comprends mieux maintenant :-) Merci !

Re: [RESOLU] problème d'affichage de variable de base de données

Posté : 01 mars 2022, 20:57
par or 1
la solution dans le cas présent n'est pas d'ajouter un global mais de passer aussi la valeur à afficher en paramètre à la fonction.