Page 1 sur 1

Page blanche apres validation de formulaire

Posté : 08 mai 2006, 13:41
par nairolf287
Salut !
Bon j'ai un problème qui m'est déjà arrivait il y a pas très longtemps que j'avais résolue mais comment ? je men souviet plus :lol: (embetant)

Donc voilà j'ai un formulaire et je veut en récuperer les champs pour faire une mise a jour d'une ligne dans une table de ma base mysql.
Le probleme est que quand je valide le formulaire je tombe sur une page blanche sans rien dedans.

Voilà le code que j'ai fait. Je suis debutant alors je c'est peut etre moche :wink:
<?php
if($p=='post'){
$new_nom = $_POST['nom'];
$new_mail = $_POST['mail']; 
$new_footer = $_POST['footer'];
$new_perdu = $_POST['perdu']; 

if(empty($new_nom) OR empty($new_mail) OR empty($new_footer) OR empty($new_perdu)){echo 'Aucun champs ne doit être vide, veuillez compléter le formulaire.';}
else {
$sql = 'UPDATE `config` SET `titre` = \'$new_nom\', `mail` = \'$new_mail\', `footer` = \'$new_footer\', `perdu` = \'$new_perdu\' WHERE `cle` = 1';
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
echo 'Modifications validées !';
}
}

else{
$req=mysql_query("select titre,mail,footer,perdu from config");
$valeur_nom=mysql_result($req,0,"titre");
$valeur_mail=mysql_result($req,0,"mail");
$valeur_footer=mysql_result($req,0,"footer");
$valeur_perdu=mysql_result($req,0,"perdu");

echo '<table align="center" cellpadding="0" cellspacing="0" border="0" width="590">
<form method="post" action="pages.php?nom=admin&p=post">
<td valign="top">Nom du site:</td>
<td valign="top"><input type="text" name="nom" size="83" maxlength="200" value="'.$valeur_nom.'"></td>
<tr>
<td valign="top">E-mail:</td>
<td valign="top"><input type="text" name="mail" size="83" maxlength="250" value="'.$valeur_mail.'"></td>
<tr>
<td valign="top">Footer:</td>
<td valign="top"><textarea rows="8" name="footer" cols="80" value="'.$valeur_footer.'"></textarea></td>
<tr>
<td valign="top">Perdu:</td>
<td valign="top"><input type="text" name="mail" size="83" maxlength="200" value="'.$valeur_perdu.'"></td>
<tr>
<td colspan="2" align="center"><input type="submit" value="Valider"></td>
</form>
</table>';
}
?>
Qu'est ce qui cloche ?

Merci :roll:

Posté : 08 mai 2006, 13:57
par Cyrano
Comment récupères-tu la valeur de $p au juste ? il manque l'initialisation de cette variable, tu ne crois pas ? Tu as oublié que le register_globals est probablement à OFF :arrow: ajoute donc ceci en début de code:
$p = isset($_GET['p']) ? $_GET['p'] : "";
Après seulement tu veux vérifier si :
if($p == 'post')

Posté : 08 mai 2006, 14:39
par nairolf287
D'habitude ca les trouve tout seul les variables qui sont dans la barre d'adresse mais ca doit pas etre efficace a 100% :? .

Donc j'ai repris toutes mes sous pages ou il est question de variables comme celle ci et je les ai definies et maintenant ca me mais le message comme quoi un champs est vide. Je vais essayer de les afficher a la fin du code pour voir ou est le bleme. :arrow:

Posté : 08 mai 2006, 14:44
par nairolf287
le l'erreur venait du fait qu'il y avait 2 fois un champs nommé mail.
Maintenant ca marche, merci ! :wink:

Posté : 08 mai 2006, 16:14
par Truc
D'habitude ca les trouve tout seul les variables qui sont dans la barre d'adresse mais ca doit pas etre efficace a 100% :?
ça dépend surtout de la valeur du register_globals , s'il est à ON ne permet pas de récupérer les variables comme tu l'as fait. Il faut donc passer par les super globales POST ou GET (par exemple)

Posté : 08 mai 2006, 17:34
par Cyrano
hum hum... "S'il est à OFF" ne permet pas de récupérer etc... (et non à ON où il le permet)

Posté : 08 mai 2006, 18:09
par Truc
Ah mon anglais qui me fait défaut :^o

Tu fait bien de me corriger :wink: