Page 1 sur 1

Problème de formulaire avec base de donnée

Posté : 10 mai 2010, 19:14
par cyr59
bonjour,
je vais essayer de vous expliquer clairement mon problème. Sur mon site, on affiche un message d'accueil stocké dans la base de donnée.
J'ai crée une page qui permet de modifier ce message d'accueil via un formulaire. L'update se fait correctement avec le bouton envoyer.
LE PROBLÈME : le mieux c'est de vous faire un exemple.
A l'affichage de la page, le texte actuel s'affiche bien dans la zone de texte, par exemple "bonjour".
Si on le modifie par "bienvenue sur le site" par exemple, quand on clique sur "envoyer" l'update ce fait bien mais dans la zone de texte c'est l'ancienne
valeur qui apparait "bonjour".
Comment faire pour que après le submit, le texte soit mis à jour ?

CODE PHP :
<!-- modifier le message d'accueil -->
<p>
<center> C'est ici que vous pouvez changer le message d'accueil<br> </centre>
</p>

<!-- on recupere le texte de l'intro actuelle -->
<?php
// On se connecte à MySQL
$db = mysql_connect("localhost", "login", "pass");
mysql_select_db("database", $db);

// On récupère tout le contenu de la table
$sql = "SELECT * FROM intro";

$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());

$data = mysql_fetch_array($req);

mysql_free_result($req);
mysql_close();
?>
<!-- notre valeur se trouve maintenant dans  echo $data['intro']; (en code php) -->

<!-- debut du formulaire -->
<form method="post" action="cadre.php?page=mod_intro">
 
	<p>
		<center><textarea name="intro" rows="8" cols="45"><?php echo $data['intro_text']; ?></textarea> </center><br>
		<center><input type="submit" value="Valider" /></center> <!-- bouton envoyer -->
	</p>
 
</form>

<!-- fin du formulaire -->

<?php

$intro=$_POST['intro'];

// on test si l'intro est vide
if(empty($intro))
{ 
print("<center>'<b>L'intro</b>' est vide ! <br> Vous devez completer l'introduction avant de validé </centre>"); 
exit(); 
}

// on modifie l'intro sans ajouter une nouvelle entrée dans la database.
$requete=mysql_query("UPDATE intro SET intro_text='$intro' WHERE marqligne='texte'");

?>
<center> <?php echo "La modification de l'introduction est réussie !"; ?> </center>
Merci d'avance ! j'espere que vous trouverez une solution à mon problème.

Re: Problème de formulaire avec base de donnée

Posté : 10 mai 2010, 23:06
par cyr59
Personne n'a de solution ?
ou même un début de piste...pour m'aide à trouver une solution ....

Re: Problème de formulaire avec base de donnée

Posté : 10 mai 2010, 23:52
par visualight
Essaye un peu en mettant le mysql_free_result et mysql_close à la fin de ton code.

Exemple :
<!-- modifier le message d'accueil -->
<p>
<center> C'est ici que vous pouvez changer le message d'accueil<br> </centre>
</p>

<!-- on recupere le texte de l'intro actuelle -->
<?php
// On se connecte à MySQL
$db = mysql_connect("localhost", "login", "pass");
mysql_select_db("database", $db);

// On récupère tout le contenu de la table
// Il est préférable de ne pas sélectionner tout mais de choisir uniquement ce que tu as besoin
// Exemple : "SELECT nom, prenom, adresse FROM intro"
$sql = "SELECT * FROM intro";

$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());

$data = mysql_fetch_array($req);

?>
<!-- notre valeur se trouve maintenant dans  echo $data['intro']; (en code php) -->

<!-- debut du formulaire -->
<form method="post" action="cadre.php?page=mod_intro">
 
        <p>
                <center><textarea name="intro" rows="8" cols="45"><?php echo $data['intro_text']; ?></textarea> </center><br>
                <center><input type="submit" value="Valider" /></center> <!-- bouton envoyer -->
        </p>
 
</form>

<!-- fin du formulaire -->

<?php

$intro=$_POST['intro'];

// on test si l'intro est vide
if(empty($intro))
{
print("<center>'<b>L'intro</b>' est vide ! <br> Vous devez completer l'introduction avant de validé </centre>");
exit();
}

// on modifie l'intro sans ajouter une nouvelle entrée dans la database.
$requete=mysql_query("UPDATE intro SET intro_text='$intro' WHERE marqligne='texte'");

// On libère les résultats et on ferme la connexion à la base.
// J'ai ajouté $db qui est le marqueur de ta connexion à ta base dans mysql_close
mysql_free_result($req);
mysql_close($db);
?>
<center> <?php echo "La modification de l'introduction est réussie !"; ?> </center>
A+ ;)

Re: Problème de formulaire avec base de donnée

Posté : 11 mai 2010, 07:38
par cyr59
Merci d'avoir répondu.
Je viens juste de testé, le problème est toujours là. Quand on envoie la nouvelle valeur, c'est l'ancienne valeur qui s'affiche à nouveau !
à noté que si on réactualise la page en passant par le menu, la nouvelle valeur s'affiche bien.
J'ai essayé de trouvé des méthodes pour faire un refresh après la fonction submit...mais je n'ai pas trouvé, je dis ca au cas ou ca vous donnerais des idées...

Re: Problème de formulaire avec base de donnée

Posté : 11 mai 2010, 23:23
par cyr59
Je fais juste un ptit up, car malgré mon poste je continue de chercher une solution.
malheureusement pour moi, je n'ai toujours pas trouvé... je compte sur vous..