Forum Clubic

[PHP / HTML] Probleme dans mon formulaire ? - Rien ne s'ajoute dans la bdd

Bonjour,
etant novice en php, je souhaite créer une petite zone d’administration pour mon systeme de news pour mon site.
J’ai donc mon fichier “news.php”

avec ce code :

<? 
if (!isset ($titre) || !isset ($texte)) 
{ 
?> 

<html?#62; 
<head> 
<title>News</title> 
<script language="javascript" type="text/javascript" src="jscripts/tiny_mce/tiny_mce.js"></script>
<script language="javascript" type="text/javascript">
tinyMCE.init({
	mode : "textareas"
});
</script>
</head> 

<form name="form" method="post" action="news.php"> 
<table width="750" border="1" cellspacing="0" cellpadding="0" align="center"> 
<tr> 
<td width="86" height="60">Titre</td> 
<td width="658"><input type="text" name="titre" size="80" ></td> 
</tr> 
<tr> 
<td width="86">Texte</td> 
<td width="658"> 
<textarea name="texte" cols="100" rows="10"></textarea> 
</td> 
</tr> 
<tr> 
<td width="86"> </td> 
<td width="658"> 

<input type="submit" name="submit" value="Poster"> 
<input type="reset" name="reset" value="Reset"> 

</td> 
</tr> 
<tr> 
<td width="658"> 
</td> 
</tr> 
</table> 
</form> 

</body> 
</html?#62; 

<? 
} 
else 
{ 
require "db.inc.php"; 

@mysql_query ("INSERT INTO news (titre,texte,date) VALUES ( '".nl2br(addslashes(trim($texte)))."','".$img."', NOW() )") or die(mysql_error());

?> 

<html?#62; 
<meta http-equiv="refresh" content="2; url=news.php"> 
<body> 

News ajoutée avec succes !

</body> 
</html?#62; 
<? 
} 
?>

Lorsque je valide le formulaire, la page se rafraichit bien mais rien ne s’est ajoutée dans la BDD, je ne vois pourtant pas l’erreur ?

Merci

Plusieurs choses :

  1. <? : mal. <?php bien (portable, fonctionne sur tous les serveurs)
  2. if (!isset ($titre) || !isset ($texte))

Ne risque pas de fonctionner si register_globals est à OFF.

Quand une variable vient d’un formulaire (post, ou get), d’un cookie, ou simplement de l’url (get), on utilise les hyperglobale

$_GET
$_POST
$_COOKIE

if ( !isset($_POST['titre']) || !isset($_POST['texte'])) 

Et pour le reste, affiche la requête. S’il faut tu as juste un problème de rafraichissement de la page news.php.

Merci chef!
Mon register_global est en On

Cette fois la bdd est bien incrementer, mais uniquement pour le champ date.
‘titre’ et ‘texte’ restent vides, alors que je remplie bien le formulaire.

voici la requête :

@mysql_query ("INSERT INTO news (titre,texte,date) VALUES ( '".$titre."','".$texte."', NOW() )") or die(mysql_error());

Il est TRES déconseillé[1] de laisser register_globals à ON.

[1] http://fr3.php.net/register_globals

zut benj !

Bref : hé bien tu vas pouvoir le désactiver car si les nouveaux serveurs cela sera désactivé par défaut, et tu ne pourras pas le changer!

mais c’est quoi cette polution de mon topic :o
J’ai remis register global à Off, ça change rien enfait …

et pour mon probleme :sweet:

ben normalement tu dois avoir le contenu des variables accessible dans $_POST[‘titre’] et $_POST[‘texte’] :neutre:

Voilà pour la pollution.

Merci à vous :slight_smile:

Je souhaite mettre un bouton "preview" afin de voir ce que je vais poster.


<input type="submit" name="post" value="Publier">  
<input type="submit" name="post" value="Preview">  
<input type="reset" name="reset" value="Reset">  
</form> 

<?
if($_POST['post']=="Preview")
{
echo "".$_POST['texte']."";
}

elseif($_POST['post']=="Publier")
{ 
@mysql_query ("INSERT INTO news (titre,texte,date) VALUES ( '".$_POST[titre]."','".$_POST[texte]."', NOW() )") or die(mysql_error());
header("Location: index.php?p=valid");
} 
} 
?>

Maintenant, il y a un probleme concernant les lignes if et elseif, decidement je n’y arriverais jamais :’(

<input type="submit" name="post" value="Publier">  
<input type="submit" name="post" value="Preview">

si tu donnes deux fois le même nom (très mal choisi soit dit en passant) c’est normal que tu aies des problèmes lors des tests :neutre:

Meme avec deux noms differents, ça ne change pas.
Le message d’erreur est toujours le meme :

Notice: Undefined index: prev in f:easyphp1-8wwwbtsadminnews.php on line 92
Notice: Undefined index: post in f:easyphp1-8wwwbtsadminnews.php on line 99.

ligne 92 > if($_POST[‘post’]==“Preview”)
ligne 99 > elseif($_POST[‘post’]==“Publier”)

L’erreur te semble incompréhensible à ce point?

Utilise deux noms, et lis l’erreur :slight_smile: un truc indéfini … quand y a isset…

Oui je sais que j’ai trop de mal :confused:

deja dans mon message au dessus mais j’ai bien mis “prev” pour la variable $_Post et non mis deux fois “post” :wink:

Ensuite, je pense qu’il faut verifier si la variable existe en utilisant isset () c’est ça ?
Le seul probleme est l’interpretation en php, je fais ceci par exemple

if ( isset($_POST['prev'])) 
{ 

au tout debut et je ferme la boucle apres la requete, cette fois plus de message d’erreur mais lorsque je veux poster ou faire une preview, c’est la page blanche :confused:

merci de l’aide en tout cas, je galere mais ça me servira!

Au moins tu as compris ce que représentais le message d’erreur :slight_smile:

oui, mais toujours pas reglé ce probleme, j’arrive pas à utiliser cette fonction isset () correctement :confused:

mon code n’est pas complet, que manque-t il ?

Juste un conseil : quand tu fais un ajout, fait le avant le bouton ajouter dans ta page…

histoire que tu vois quelque chose.

En gros, ce que j’explique c’est que si tu affiche une liste de Truc, et que la partie php censé ajouter dans cette liste de Truc est placée après l’affichage de la liste de Truc, hé bien tu ne verras pas ton nouveau Truc avant d’avoir rafraichit la page.

merci bcp c’est good :slight_smile: