[RESOLU] Erreur quand l'input est vide

Eléphant du PHP | 111 Messages

19 avr. 2014, 00:25

Hello :D :D

Donc j'aimerais faire un script PHP pour pouvoir insérer des donnés dans la base de donnée

Voici la première:
<form method="POST" action="" enctype="multipart/form-data">
 <br/><br/>
<input placeholder="Insérer le lien d'une image" style="width:250px;" type="text" name="photo1">
<input type="text" name="photo2" style="width:250px;" placeholder="Insérer le lien d'une image">
<br/><br/><br/>
 <input type="submit" style="font-size:22px;height:50px;border:1px solid #7CFC00;background-color:#7CFC00; width:500px; border-radius:7px;" name="envoyer" value="Ajouter">
</form><br/>
Voici la deuxième page :
<?php

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


		$photo1 = htmlspecialchars(mysql_escape_string($_POST['photo1']));
		$photo2 = htmlspecialchars(mysql_escape_string($_POST['photo2']));



		if(isset($_POST['username'],$_POST['password'],$_POST['email']))
		{
			$username = htmlentities($_POST['username'], ENT_QUOTES, 'UTF-8');
			if($_POST['password']==$_POST['passverif'])
			{
				$password = htmlentities($_POST['password'], ENT_QUOTES, 'UTF-8');
			}
			else
			{
				$password = '';
			}
			$email = htmlentities($_POST['email'], ENT_QUOTES, 'UTF-8');
			$avatar = htmlentities($_POST['avatar'], ENT_QUOTES, 'UTF-8');
		}
		else
		{
			//Sinon, on affiche les donnes a partir de la base de donnee
			$dnn = mysql_fetch_array(mysql_query('select * from users where username="'.$_SESSION['username'].'"'));
			$id = htmlentities($dnn['id'], ENT_QUOTES, 'UTF-8');
			$username = htmlentities($dnn['username'], ENT_QUOTES, 'UTF-8');
			$password = htmlentities($dnn['password'], ENT_QUOTES, 'UTF-8');
			$email = htmlentities($dnn['email'], ENT_QUOTES, 'UTF-8');
			$avatar = htmlentities($dnn['avatar'], ENT_QUOTES, 'UTF-8');
		}
				
				$id = $id_membre;
				
				
				if(empty($photo1))
				{
					$errors[] = "Veuillez Insérer une image";  
				}
				
				if(empty($photo2))
				{
					$errors[] = "Veuillez insérer une image";
				}
				
			
				
				if(!empty($errors))
				{
						foreach($errors as $error)
						{
							echo "<div class='error'>".$error."</div>";
						}
				}else{
					mysql_query("INSERT INTO duel(photo1,photo2,id_membre)
					VALUES('$photo1','$photo2','$id_membre')") or die(mysql_error());
					

				}
		}



?>		
Donc j'aimerais que si l'input est vide il y a une erreur qui s'affiche.

Mais quand j'ajoute avec rien dans l'input il y a page blanche sur l'autre page et pareil quand je mets des choses dans l'input.

Comment puis-je faire se que je veux?

Merci beaucoup :P

Eléphant du PHP | 58 Messages

19 avr. 2014, 10:11

Je ne vois pas les input avec les "name" username, password, passverif et email, ni où $id_membre est initialisée.

ViPHP
ViPHP | 1996 Messages

19 avr. 2014, 12:01

Utilise empty(). Cela vérifie isset en même temps.
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphant du PHP | 111 Messages

19 avr. 2014, 14:00

Je ne vois pas les input avec les "name" username, password, passverif et email, ni où $id_membre est initialisée.
Il n'y a pas d'input pour eux, se sont les informations quand il se sont inscrits, je les affiche comme sa.

J'ai modifier un peu le fichier pour inserer
<?php
if(isset($_POST['username'],$_POST['password'],$_POST['email']))
		{
			
			$dnn = mysql_fetch_array(mysql_query('select * from users where username="'.$_SESSION['username'].'"'));
			$id = htmlentities($dnn['id'], ENT_QUOTES, 'UTF-8');

		}
?>
<?php

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


				$photo1 = htmlspecialchars(mysql_escape_string($_POST['photo1']));
				$photo2 = htmlspecialchars(mysql_escape_string($_POST['photo2']));

				$id = $id_membre;
				
				
				if(empty($photo1 && $photo2))
				{
					echo"Veuillez Insérer une image";  
				
				}else{
					mysql_query("INSERT INTO duel(photo1,photo2,id_membre)
					VALUES('$photo1','$photo2','$id_membre')") or die(mysql_error());
					

				}
		}



?>		
Mais sa me fais page blanche?

Comment faire Merci

Mammouth du PHP | 2278 Messages

19 avr. 2014, 14:57

Sur la dernière version:
if(isset($_POST['username'],$_POST['password'],$_POST['email'])) : syntaxe aberrante
Sur les versions précédentes:
if(isset($_POST['submit'])) : peut -être if(isset($_POST['envoyer'])) encore qu'il soit prodigieusement inutile de tester cette valeur, puisque si le bouton n'a pa été activé on n'est pés là.
En revanche dans le corps:
$photo1 = htmlspecialchars(mysql_escape_string($_POST['photo1'])); c'st là qu'il faut tester si $_POST['photo1'] est vide ou pas.

En général:
Qund on a des problèmes avec $-_POST, il suffit de mettre au début du script:
print_r($_POST); die(); pour y voir plus clair
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

ViPHP
ViPHP | 1996 Messages

19 avr. 2014, 16:37

Sur la dernière version:
if(isset($_POST['username'],$_POST['password'],$_POST['email'])) : syntaxe aberrante
Salut Sirakawa,

Je ne suis pas d'accord avec toi : isset() peut contenir plusieurs variables à la suite pour les tester en même temps (http://www.php.net/manual/fr/function.isset.php).
Ce n'est donc pas aberrant mais peut être que l'utilisation de empty () pour vérifier si elle existe et si elle est vide (ou pas) serait plus judicieux.
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Mammouth du PHP | 2278 Messages

19 avr. 2014, 18:07

Tu as raison, mais j'ai l'habitude de traiter séparément chaque élément pour pouvoir donner un message d'erreur adapté.
Par ailleurs si required='required' était mieux connu, bien des choses en seraient simplifiées...
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphant du PHP | 58 Messages

20 avr. 2014, 10:07

Par ailleurs si required='required' était mieux connu, bien des choses en seraient simplifiées...
Tant que Windows XP (et a fortiori IE8) sera autant présent, il est difficile de n'utiliser que l'attribut required et de se passer des vérifications JS et/ou PHP, malheureusement !

Eléphant du PHP | 58 Messages

20 avr. 2014, 10:29

Si $id_membre n'est pas initialisée, tu as certainement une erreur PHP à ce niveau-là !