Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

fabriquer un form automatiquement a partir des donnees d'une table

1 réponse
Avatar
Bonjour,

j'ai réussi à comprendre comment fabriquer un tableau automatiquement a
partir des données de n'importe quelle table et je voudrais savoir comment
je peux adapter mon script pour qu'il me fabrique un form a partir de ladite
table plutot qu'un tableau. je me doute qu'il faut remplacer $style par qq
chose du genre :
$style = "<form action='article.php' method='post' name='article'
id='article' onSubmit='return verif_formulaire()' >"
... mais pour la boucle qui doit inscrire les valeurs je ne comprends pas
:-(

Si vous pouvez m'aider ça serait trés apprécié :-)
Merci à vous

vboila mon code modéle pour un tableau :

// PARAMETRES MODIFIABLES

$database = "mabase"; // nom de la base
$table = "matable"; //nom de la table
$sql = "SELECT * FROM $table"; // requète des données du tableau
$style = "<table border='1'rules ='rows'cellspacing ='0' cellpadding =
'0'>";// style du tableau
// FIN DES PARAMETRES MODIFIABLES
//--------------------------------------------------------------------------------------------------------------------------------------------------------

mysql_connect($host,$user,$pass); // connexion a
MySQL
mysql_selectdb($database) or die("Connexion impossible"); //... avec gestion
d'erreur

echo $style ; // style du tableau
$reponse = mysql_query($sql);
$fields = mysql_num_fields($reponse);

for ($i=0; $i < $fields; $i++)
{
$name = mysql_field_name($reponse, $i);
echo "<TD>" .$name. "</TD>" ; // affiche les en tetes de colonnes
}
while( $row = mysql_fetch_row($reponse) )
{
echo "<TR>"; // nouvelle ligne
for ($i=0; $i < $fields; $i++)
{ echo "<TD>".$row[$i]. "</TD>"; } // inscrit les valeurs
echo "</TR>" ; // fin de la ligne
}
echo "</TABLE>"; // fin du tableau

mysql_close();
?>

1 réponse

Avatar
Guillaume Bouchard
wrote:
Bonjour,


Bonsoir/matin.

j'ai réussi à comprendre comment fabriquer un tableau automatiquement a
partir des données de n'importe quelle table et je voudrais savoir comment
je peux adapter mon script pour qu'il me fabrique un form a partir de ladite
table plutot qu'un tableau.


Note que c'est pas spécialement dependant du php cela... C'est plus du
html qu'autre chose.

je me doute qu'il faut remplacer $style par qq
chose du genre :
$style = "<form action='article.php' method='post' name='article'
id='article' onSubmit='return verif_formulaire()' >"


Tu verifies ton formulaire via JS ? C'est bien, mais n'oublie JAMAIS que
tu dois toujours faire une vérification coté serveur pour la sécurité.

Si vous pouvez m'aider ça serait trés apprécié :-)


Je vais esseyer.

$database = "mabase"; // nom de la base
$table = "matable"; //nom de la table
$sql = "SELECT * FROM $table"; // requète des données du tableau


Evite les SELECT *. Le jour où tu modifies ta table, le script ne voudra
plus rien dire.

$style = "<table border='1'rules ='rows'cellspacing ='0' cellpadding =
'0'>";// style du tableau


Bon, on passe.

mysql_connect($host,$user,$pass); // connexion a
MySQL
mysql_selectdb($database) or die("Connexion impossible"); //... avec gestion
d'erreur

echo $style ; // style du tableau
$reponse = mysql_query($sql);


Il faut TOUJOURS vérifié ses erreurs.

function toto($sql = ''){
if(defined('DEBUG')){
echo mysql_error().$sql;
} else {
echo 'Erreur !!!';
}
exit;
}

define('DEBUG',TRUE);
mysql_connect($host,$user,$pass) or toto();
mysql_selectdb($database) or toto();
$reponse = mysql_query($sql) or toto($sql);

$fields = mysql_num_fields($reponse);


Je retire ce que j'ai dit à propos du SELECT *... :)

while( $row = mysql_fetch_row($reponse) )
{
echo "<TR>"; // nouvelle ligne
for ($i=0; $i < $fields; $i++)
{ echo "<TD>".$row[$i]. "</TD>"; } // inscrit les valeurs
echo "</TR>" ; // fin de la ligne
}


Un foreach ne serait pas mieux ici ?

Bon, revenont à nos poulpes.
Tu veux afficher un formulaire à la place.

Cela manque de precision... Tu veux que ce formulaire fasse quoi ? Qu'il
te propose une interface pour modifier chaques enregistrements ?

En partant de cela, il te suffit d'ajouter l'entete de formulaire qui va
bien au debut (celle que tu donnes plus haut dans $style vas bien). Ne
pas oublié le </form> ainsi qu'un button submit. Pour le reste, aulieu
d'afficher tes champs brutes, il faut afficher des champs input avec un
nom qui va bien :

echo '<input type="text" name="'.mysql_field_name($reponse, $i).$j.'"
value="'.htmlspecialchars($row[$i]).'">';

$i correspondant au compteur de colone, $j au compteur de ligne.

Je te laisse faire la suite, ce n'est plus trés dur.

Bien evidement il se peut que j'ai totalement repondu à coté de la
plaque car ta question n'est pas très precise (et/ou je suis fatigué :)
Donc n'hesite pas à reposer plus précisement ta question.

--
Guillaume.
"Vive les poulpes libres !"