[RESOLU] Pas de submit d'un formulaire si (Conditions) en PHP

Eléphant du PHP | 386 Messages

21 juin 2012, 18:26

Bonjour,

J'ai un formulaire pour envoyer des actualités, et quand un membre poste un article, l'article apparait en dessous.
Mais quand le membre recharge la page ou actualise, l'article est retransmis au navigateur et réapparait 2 fois, et ce à chaque fois que le membre actualise.

Est-il possible d'envoyer le formulaire que si les champs "Titre" et "Article" sois remplis.
Pour le champ Article, c'est un textarea, et j'aimerais que le formulaire soit envoyé que si "Exprimez-vous... soit effacé, sinon un membre va écrire dans le champ "Titre", et s'il n'écrit pas dans le champ "Article", le formulaire sera envoyé avec comme article : "Exprimez-vous..." Et je ne veux pas ça.

Le code du formulaire :
<form action="home.php" method="post">
	<table>
		<tr><td class="titre-news">Titre :</td></tr>
		<tr><td><input type="text" autocomplete="off" class="news-titre" name="titre" /></td></tr>
		<tr><td class="titre-news">Article :</td></tr>
		<tr><td><textarea name="news" autocomplete="off" class="news-article" value="">Exprimez-vous...</textarea></td></tr>
	</table>
	<input type="hidden" name="send" value="new" />
	<input type="submit" src="" class="submit-news" value="" />
</form>
Merci d'avance :)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

21 juin 2012, 18:48

Salut,

Pour la seconde partie il existe plusieurs solutions plus ou moins pratique.

Par exemple sur ce forum il y a une page "intermédiaire" qui te dit que c'est bien posté et te redirige ensuite vers la page.
D'autre utilise des jetons : un champs caché dans le formulaire qui contient le même dans une variable de session. Quannd tu valide le formulaire tu vérifie que celui ci existe et est identique. Bien sur quand le formulaire est bon (insertion faite tu supprime le jeton de la session. Si le béton n'existe pas ou n'est pas bon tu refuse le formulaire.

Pour l'histoire des champs pas vide => empty.
Pour le texte regarde du côté du placeholder.

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 386 Messages

21 juin 2012, 20:08

Tu pourrais m'expliquer ou tu met la condition dans la page "bloc-center.php" ci-dessous :

Code : Tout sélectionner

if( empty($titre) || empty($news)) { [ Script d'envoi du formulaire ] } else { echo 'Erreur'; }
Et comment fait-on pour ne pas envoyer le formulaire si le champ "Article" contient l'expression : "Exprimez-vous..." ?

Page bloc-center.php :

				<?php echo $reponse; ?>
				<?php if(isset($_COOKIE["pseudo"])) { ?>
				<?php
				$db_link = 	mysql_connect("...", "...", "...");
				mysql_select_db("...", $db_link);
			
				if(isset($_POST)) {
					foreach($_POST as $k => $v) {
						$_POST[$k] = trim(htmlspecialchars($v)) ;
					}
				}
				if(isset($_GET)) {
					foreach($_GET as $k => $v) {
						$_GET[$k] = trim(htmlspecialchars($v)) ;
					}
				}
				if(isset($_POST['send'])) {
					if($_POST['send'] == 'new') {
					$sql = "INSERT INTO wa_news (auteur,date,titre,news) values ('".$_COOKIE['pseudo_prenom']." ".$_COOKIE['pseudo_nom']."',now(),'".$_POST['titre']."','".$_POST['news']."')";
					}
					elseif($_POST['send'] == 'update') {
					$sql = 'update wa_news set titre = "'.$_POST['titre'].'", auteur =
					"'.$_COOKIE['pseudo_prenom'].' '.$_COOKIE['pseudo_nom'].'", news = "'.$_POST['news'].'", date =
					"'.$_POST['date'].'" WHERE newsId = "'.$_POST['newsId'].'"';
					}
					mysql_query($sql,$db_link) or die(mysql_error());
				}
				if(isset($_GET['delete']) and is_numeric($_GET['delete'])) {
				   mysql_query("delete from wa_news where newsId = \"".$_GET['delete']."\"",$db_link);
				}
				if(isset($_GET['edit']) and is_numeric($_GET['edit'])) {
					$Id = $_GET['edit'] ;
					$sql = 'SELECT * FROM wa_news WHERE newsId="'.$Id.'" LIMIT 1' ;
					$rc = mysql_query($sql,$db_link);
					while($data = mysql_fetch_array($rc)) { ?>
					<div class="bloc_03">
						<h1 class="separate">Modifier l'article</h1>
						<form action="home.php" method="post">
							<table>
								<tr><td class="titre-news">Titre :</td></tr>
								<tr><td><input type="text" class="news-titre" name="titre" value="<?php echo htmlentities($data['titre']); ?>" /></td></tr>
								<tr><td class="titre-news">Article :</td></tr>
								<tr><td><textarea name="news" class="news-article"><?php echo htmlentities($data['news']); ?></textarea></td></tr>
							</table>
							<input type="hidden" name="newsId" value="<?php echo $_GET['edit']; ?>" />
							<input type="hidden" name="send" value="update" />
							<input type="submit" src="" class="submit-news" value="" />
						</form>
					</div>
					<?php }
				}
				else { ?>
					<div class="bloc_03">
						<h1 class="separate">Poster un article</h1>
						<form action="home.php" method="post">
							<table>
								<tr><td class="titre-news">Titre :</td></tr>
								<tr><td><input type="text" autocomplete="off" class="news-titre" name="titre" /></td></tr>
								<tr><td class="titre-news">Article :</td></tr>
								<tr><td><textarea name="news" autocomplete="off" class="news-article" value="Exprimez-vous..." onfocus="if (this.value==this.defaultValue) this.value = ''" onblur="if (this.value=='') this.value = this.defaultValue">Exprimez-vous...</textarea></td></tr>
							</table>
							<input type="hidden" name="send" value="new" />
							<input type="submit" src="" class="submit-news" value="" />
						</form>
					</div>
					<?php
					$sql = 'SELECT * FROM wa_news ORDER BY newsId DESC' ;
					$rc = mysql_query($sql,$db_link);
					while($data = mysql_fetch_array($rc)) { 
					$data['date'] = date('d/m/Y');
					?>
					<div class="bloc_03">
						<h1 class="separate"><?php echo $data['titre']; ?></h1>
						Le <?php echo $data['date']; ?> par <?php echo $data['auteur']; ?><br />
						<?php echo $data['news']; ?>
						<br />=> <a href="?delete=<?php echo $data['newsId']; ?>">Supprimer</a> - 
						<a href="?edit=<?php echo $data['newsId']; ?>">Editer</a>
					</div>
					<?php }
				}
				mysql_close();
				?>
				<?php } else { ?>
				<div class="bloc_03">
					<h1 class="separate">Actualités à la Une</h1>
				</div>
				<?php } ?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

21 juin 2012, 20:57

Il en faut peu pour être heureux ......