bonjour,
Je suis bloqué depuis plusieurs jours sur un problème pourtant simple.
J'ai créé 2 page en php :
page 1 qui liste le contenu de ma base, avec ID, NOM, CONTENU et un lien qui me redirige vers ma page 2 ou il y a un champ de type textarea, qui doit à l'appel du lien de la première page me charger le contenu de ma base en fonction de l'ID. Un bouton me permet de valider les modifications.
Ce que j'ai réussi :
charger le contenu de ma base dans la page 1.
charger le contenu dans mon textarea en fonction de l'ID dans l'URL.
ce que je n'arrive pas :
Modifier le contenu et le recharger dans la base.
Voici le code de la page 1 listing.php :
<html>
<head>
<title>modification</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<?php
//connection au serveur:
$cnx = mysql_connect( "localhost", "root", "root" ) ;
//sélection de la base de données:
$db = mysql_select_db( "pages" ) ;
?>
<h2>Gestion des pages du site</h2>
<table>
<tr>
<th>id</th>
<th>Nom</th>
<th>Contenu</th>
<th>modifier</th>
</tr>
<?php
//requête SQL:
$sql = 'SELECT * FROM content ORDER BY id';
//exécution de la requête:
$requete = mysql_query( $sql, $cnx ) ;
//affichage des données:
while( $result = mysql_fetch_assoc( $requete ) ) :
?>
<tr>
<td><?php echo $result'id'];?></td>
<td><?php echo $result'nom'];?></td>
<td><?php echo $result'contenu'];?></td>
<td><a href="formulaire.php?idContent=<?php echo $result'id'];?>">Editer</a>
</tr>
<?php endwhile; ?>
</table>
</body>
</html>
code de la page 2 formulaire.php :
<?php
//Si l'action de Modifier à été faite (bouton "Modifier" du formulaire)
if(isset($_POST"modifier"]))
{
//On se connecte à la base de données
mysql_connect("localhost","root","root");
mysql_select_db("pages") or die('Impossible de sélectionner une base
de donnée. Assurez vous d\'avoir correctement remplit les données de
connections.');
//On attribue une variable pour chaque champ du formulaire
//contenu
$lechamp0 = mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST"contenu"])));
//création de la requête SQL:
$sql = mysql_query("UPDATE content SET contenu= '$lechamp0' WHERE id = '$id' ") ;
//exécution de la requête SQL:
$requete = mysql_query($sql) or die( mysql_error() ) ;
//Si il y a une erreur, on crie ^^
if (!$requete)
{
die('Requête invalide : ' . mysql_error());
}
else
{
//Si tout va bien, on informe que la modification est faite
echo '<p>La modification à été effectué avec succès. <a href=listing.php>Retour à l\'admi
nistration.</a></p>';
}
// Fermeture de la connexion à la base de données
mysql_close();
//On ferme if(isset($_POST"Modifier"]))
}
?>
<html>
<head>
<title>modification</title>
</head>
<body>
<?php
//récupération de la variable d'URL,
//qui va nous permettre de savoir quel enregistrement modifier
$id = $_GET"idContent"] ;
//connection au serveur:
$cnx = mysql_connect( "localhost", "root", "root" ) ;
//sélection de la base de données:
$db = mysql_select_db( 'pages' ) ;
//requête SQL:
$sql = mysql_query("SELECT contenu FROM content WHERE id = $id ");
//affichage des données:
while($result = mysql_fetch_array($sql)) {
?>
<form action="formulaire.php" method="POST" >
<input type="hidden" name="id" value="<?php echo($id); ?>">
<textarea type="text" name="contenu" ><?php echo ''.$result"contenu"].'';?></textarea>
<input type="submit" value="modifier"></td>
</form>
<?php } mysql_close();?>
</body>
</html>
je cale grave!!!!
merci
re,
en faite j'ai trouvé mon erreur tout marchait correctement, mais dans la dernière page au lieu de mettre method="" j'ai mis méthode="", donc le e était en trop.
Merci tout de même
Hello !
Il faut mettre un name sur ton bouton Modifier, sinon le code ne passe pas dans la condition
if(isset($_POST"modifier"])) ...
ok du coup j'ai mis un name au bouton je lui ai mis
name="modifier";
.
Mais apparemment ça ne fonctionne pas il ne me reste plus que ce problème et j'ai finis...
et j'ai un message d'erreur qui revient souvent :
Undefined index: idContent in /Applications/MAMP/htdocs/back/formulaire.php on line 15
C'est bizarre parce que tu as bien une variable GET qui se nomme idContent et ton code devrait marcher, je ne vois pas d'erreur qui pourrait entraver le bon fonctionnement de tout ça.
Est ce que c'est possible de voir ça en ligne pour faire des tests ?
Je viens de me rendre compte que quand je valide le formulaire vie le submit, je n'ai rien qui s'affiche. Normalement aprés validation il doit y avoir :
//Si il y a une erreur, on crie ^^
if (!$requete)
{
die('Requête invalide : ' . mysql_error());
}
else
{
//Si tout va bien, on informe que la modification est faite
echo '<p>La modification à été effectué avec succès. <a href=listing.php>Retour à l\'admi
nistration.</a></p>';
}
et la je n'ai rien!!!
Je crois avoir trouvé :
$sql = mysql_query("UPDATE content SET contenu= '$lechamp0' WHERE id = '$id' ") ;
Tu n'initialise jamais $id, qui je pense devrais contenir $_POST'id']
C'est pas très beau comme débuguage mais essaye de mettre des echos dans le code que tu veux tester (dans le isset).
Tu en met avant et après la requête sql et regarde ce qu'il s'affiche.
Comme ça, ça permet de voir quelle ligne plante, quand on a pas beaucoup d'indications des erreurs php.