Empty

Résolu/Fermé
ferraioli Messages postés 11 Date d'inscription jeudi 3 février 2011 Statut Membre Dernière intervention 10 juin 2015 - Modifié par jordane45 le 9/06/2015 à 11:27
ferraioli Messages postés 11 Date d'inscription jeudi 3 février 2011 Statut Membre Dernière intervention 10 juin 2015 - 10 juin 2015 à 16:36
Bonsoir, je viens poster ici afin d'obtenir votre aide ça fait des heures que je suis dessus et cela me prends la tête.. je suis complètement paumé

Je suis entrain de faire un tool et je bloque sur le passage de plusieurs inputs
j'ai 5 input en tout et je dois ajouter des symboles sur chacun d'entre eux.. et si on remplie les 5 on ajoute d'autres symboles..
exemple
un input : id@lvl
cinq input : id@lvl;id@lvl;id@lvl;id@lvl;id@lvl

http://puu.sh/ihEGS/07a946b274.png

Je voudrais faire en sorte que si on laisse vide des inputs par exemple 3 input on garde le résultat des 2 autres ou si on rempli qu'un seul input on garde un seul résultat..

J'essaye désespérément avec des empty.. mais je n'ai pas tout à fait le résultat attendu..
Je pense une boucle mais je ne vois pas comment la faire, je vous post mon petit bout de code pitoyable en espérant une réponse de votre part.
 
if(empty($monster['spell2']) or empty($monster['spell3']) or empty($monster['spell4']) or empty($monster['spell5'])):
$spell = $monster['spell1'].'@'.$_POST['select1'];
 elseif(empty($monster['spell1']) or empty($monster['spell3']) or empty($monster['spell4']) or empty($monster['spell5'])):
$spell = $monster['spell2'].'@'.$_POST['select2'];
elseif(empty($monster['spell1']) or empty($monster['spell2']) or empty($monster['spell4']) or empty($monster['spell5'])):
$spell = $monster['spell3'].'@'.$_POST['select3'];
elseif(empty($monster['spell1']) or empty($monster['spell2']) or empty($monster['spell3']) or empty($monster['spell5'])):
$spell = $monster['spell4'].'@'.$_POST['select4'];
elseif(empty($monster['spell1']) or empty($monster['spell2']) or empty($monster['spell3']) or empty($monster['spell4'])):
$spell = $monster['spell5'].'@'.$_POST['select5'];
else:
$spell = $monster['spell1'].'@'.$_POST['select1'].';'.$monster['spell2'].'@'.$_POST['select2'].';'.$monster['spell3'].'@'.$_POST['select3'].';'.$monster['spell4'].'@'.$_POST['select4'].';'.$monster['spell5'].'@'.$_POST['select5'];
endif;


Cordialement
A voir également:

3 réponses

blackduck Messages postés 817 Date d'inscription mercredi 20 février 2013 Statut Membre Dernière intervention 24 novembre 2018 96
9 juin 2015 à 11:01
Salut salut,

Je ne vois pas ta partie html avec ton formulaire et tes champs input.
Quelque chose comme ça doit fonctionner :
<form name="form" action="#" method="post">
<input type="text" name="text1" value="id"/><select name="choix" id="select" value="choix"><option selected>select</option><option>val1</option><option>val2</option></select><br>
<input type="submit" name="valider" value="valider"/>
</form>
<?php

if(isset($_POST["valider"])){
	echo "<pre>";
	var_dump($_POST);
	echo "</pre>";

	if($_POST["text1"]=="id"){
		echo "id inchange<br>";
	}else{
		echo "id change<br>";
	}

	if($_POST["choix"]=="select"){
		echo "choix inchange";
	}else{
		echo "choix change<br>";
	}
}

0
ferraioli Messages postés 11 Date d'inscription jeudi 3 février 2011 Statut Membre Dernière intervention 10 juin 2015
9 juin 2015 à 15:07
Merci pour ta réponse, mais je pense que la solution de jordane45 est mieux pour moi.

Cordialement
0
jordane45 Messages postés 38301 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 22 novembre 2024 4 704
Modifié par jordane45 le 9/06/2015 à 15:12
Bonjour,

Ceci devrait peut-être te convenir :
$arr_spell = array();
if(!empty($monster['spell1'])){
 $arr_spell[] =  $monster['spell1'].'@'.$_POST['select1'] ;
}
if(!empty($monster['spell2'])){
 $arr_spell[] =  $monster['spell2'].'@'.$_POST['select2'] ;
}
if(!empty($monster['spell3'])){
 $arr_spell[] =  $monster['spell3'].'@'.$_POST['select3'] ;
}
if(!empty($monster['spell4'])){
 $arr_spell[] =  $monster['spell4'].'@'.$_POST['select4'] ;
}
if(!empty($monster['spell5'])){
 $arr_spell[] =  $monster['spell5'].'@'.$_POST['select5'] ;
}

$spell = implode(";",$arr_spell);


Cordialement,
Jordane
0
ferraioli Messages postés 11 Date d'inscription jeudi 3 février 2011 Statut Membre Dernière intervention 10 juin 2015
9 juin 2015 à 15:06
Merci beaucoup, ça marche parfaitement ! Si tu peut m'expliquer comment cela fonctionne, ça serai bien sinon pas grave :)

Cordialement
0
jordane45 Messages postés 38301 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 22 novembre 2024 4 704
9 juin 2015 à 15:12
Je teste chacune de tes variables ( si elle est vide ou non...)
Si elle n'est pas vide... je l'ajoute à un tableau ( un ARRAY )
Et pour finir ... je prends tous les éléments de l'array .. et je les transforme en string en utilisant le point-virgule comme séparateur.
0
ferraioli Messages postés 11 Date d'inscription jeudi 3 février 2011 Statut Membre Dernière intervention 10 juin 2015
Modifié par ferraioli le 9/06/2015 à 15:50
D'accord merci, je voudrais faire en sorte aussi que si le champ input est vide on prend en considération le select à la place.. donc j'ai rajouter un else a tes if
else { $arr_spell[] = $_POST['selects1'].'@'.$_POST['select1'] }
Mais si j'oublie les inputs et les selects cela va prendre en cosidération le select de valeur " " et va donc écrire juste @lvl
peux tu m'aider ?
cordialement
0
jordane45 Messages postés 38301 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 22 novembre 2024 4 704
9 juin 2015 à 16:16
c'est ça que tu veux ?
$arr_spell = array();
if(!empty($monster['spell1'])){
 $arr_spell[] =  $monster['spell1'].'@'.$_POST['select1'] ;
}elseif (!empty($_POST['select1'])){
  $arr_spell[] =  $_POST['select1']).'@'.$_POST['select1'] ;
}
if(!empty($monster['spell2'])){
 $arr_spell[] =  $monster['spell2'].'@'.$_POST['select2'] ;
}elseif (!empty($_POST['select2'])){
  $arr_spell[] =  $_POST['select2']).'@'.$_POST['select2'] ;
}
//etc...
$spell = implode(";",$arr_spell);


Qu'on devrait pouvoir écrire via une fonction également comme ça :
function getValue($spel=NULL,$select=NULL){
	if(!empty($spel)){
	 $result =  $spel.'@'.$select ;
	}elseif (!empty($select)){
		$result =  $select.'@'.$select ;
	}else {
	  $result = false;
	}
return $result
}

$arr_spell = array();

$value = getValue($monster['spell1'],$_POST['select1'];
if($value){ $arr_spell[] = $value; }

$value = getValue($monster['spell2'],$_POST['select2'];
if($value){ $arr_spell[] = $value; }

$value = getValue($monster['spell3'],$_POST['select3'];
if($value){ $arr_spell[] = $value; }

$value = getValue($monster['spell4'],$_POST['select4'];
if($value){ $arr_spell[] = $value; }

$value = getValue($monster['spell5'],$_POST['select5'];
if($value){ $arr_spell[] = $value; }


$spell = implode(";",$arr_spell);


0
Non ce n est pas tout a fait ça car si je met !empty donc si le champ select n est pas vide mais le probleme c est que les selects ne sont jamais vides car la valeur par default est " je veux en gros que si l input est vide on prend le select et que si les deux sonts vides on les ignores.. J ai mit une image dans le premier post peut être ca va t eclairé

Cordialement
0
jordane45 Messages postés 38301 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 22 novembre 2024 4 704 > Ferraiolis
9 juin 2015 à 16:52

je veux en gros que si l input est vide on prend le select et que si les deux sonts vides on les ignores..

....

mais le probleme c est que les selects ne sont jamais vides car la valeur par default est "


Petite contradiction dans ton explication non ??


A la limite... tu testes si l'input est EMPTY ou non .. et pour le select .. tu regardes si il vaut la valeur par défaut ou non... tout simplement.

function getValue($spel=NULL,$select=NULL,$valeurpardefaut=''){
	if(!empty($spel)){
	 $result =  $spel.'@'.$select ;
	}elseif($select!=$valeurpardefaut){
		$result =  $select.'@'.$select ;
	}else {
	  $result = false;
	}
return $result
}
0
ferraioli Messages postés 11 Date d'inscription jeudi 3 février 2011 Statut Membre Dernière intervention 10 juin 2015
Modifié par ferraioli le 10/06/2015 à 16:37
Oui j'avoue je me suis mal exprimé désolé et j'aurais du y arriver seul.. c'était débile en fait..

Encore merci en tout ça pour ton aide
Je te souhaite une bonne journée

Cordialement
0