Rafraîchir page PHP après envoi formulaire ?

Petit nouveau ! | 28 Messages

14 Fév 2009, 11:16

Bonjour j'ai un problème tout bête mais que je n'arrive pas à le résoudre.

J'aimerai afficher le numéro d'ID de la dernière entrée de ma base de donnée sur la même page qu'un formulaire qui sert à entrer des données dans la base de données et qui renvoie vers lui même.

J'arrive à insérer des données dans la BDD une fois le formulaire envoyé mais le numéro ne se rafraîchit pas à moins que l'utilisateur appuie sur F5, quelle serai la meilleur solution selon vous pour rafraichir ce numéro ?

lux
Eléphanteau du PHP | 372 Messages

14 Fév 2009, 11:35

Avec la fonction header après insertion en bdd ? :wink:

Petit nouveau ! | 28 Messages

14 Fév 2009, 12:26

J'avais déjà essayé cette méthode et ca me renvoie cette erreur :

Code : Tout sélectionner

Warning: Cannot modify header information - headers already sent by (output started at F:\addrelease.php:63) in F:\addrelease.php on line 147


Je pense que c'est parce qu'il y a déjà une méthode de ce type envoyé par le formulaire quand je le valide.

J'ai déjà essayé pas mal de méthode là et je sèche vraiment :S

lux
Eléphanteau du PHP | 372 Messages

14 Fév 2009, 12:40

Erreur typique. Ça veut dire que tu as fait un "echo, print_r, var_dump" ou écrit quoi que ce soit avant la redirection.

On peut voir ton script ? :wink:

Petit nouveau ! | 28 Messages

14 Fév 2009, 12:49

Voici le code raccourci de ma page addrelease.php :

[php]<?php
mysql_connect("localhost", "root", "xxx"); // Connect to database
mysql_select_db("movedb"); // Database selection

$getlastentry = mysql_query ("SELECT Audio_ID FROM lossless ORDER BY Audio_ID DESC LIMIT 0, 1");
$last = mysql_fetch_array($getlastentry);
$nextid = $last['Audio_ID']+1;
?>

<form name="form" action="addrelease.php" method="POST">
<table>
echo $nextid; // nombre que je veux afficher et qui dois changer après la validation du formulaire
formulaire....
</table>

<div class="bouton"><input type="submit" name="addrelease" value = "Addrelease" class = "submit"/></div>
</form>

<?php
if (isset($_POST['addrelease']) && $_POST['addrelease'] == 'Addrelease')
{
// Vérification et insertion données dans BDD...
header('Location: addrelease.php');
}
[/php]

lux
Eléphanteau du PHP | 372 Messages

14 Fév 2009, 12:51

Tu n'as pas le droit de faire de header après avoir écrit du html, d'ou l'erreur.

Mets la partie "traitement php" en haut de ta page, ça devrait aller mieux :
[php]<?php
if (isset($_POST['addrelease']) && $_POST['addrelease'] == 'Addrelease')
{
// Vérification et insertion données dans BDD...
header('Location: addrelease.php');
} [/php]

Petit nouveau ! | 28 Messages

14 Fév 2009, 12:55

Merci infiniment ca marche nikel!!

Ca faisait un moment que je galérais la dessus et vu que je débute en PHP au moins ca m'aura servi de leçon pour la prochaine fois ^^

Par contre cette méthode marche que sur Firefox et pas sur IE, IE 7 m'indique quand je valide :
Internet Explorer ne peut pas afficher cette page Web


Est-ce normal ?

Solution trouvé :

Au lieu de [php]header('Location: addrelease.php');[/php]

Mettre : [php]header("Refresh: 0;url=addrelease.php");[/php]

Encore une fois merci !