Empty

Résolu
ferraioli Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   -  
ferraioli Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   96
 
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   Statut Membre Dernière intervention  
 
Merci pour ta réponse, mais je pense que la solution de jordane45 est mieux pour moi.

Cordialement
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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   Statut Membre Dernière intervention  
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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   Statut Membre Dernière intervention  
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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
Ferraiolis
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Ferraiolis
 

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   Statut Membre Dernière intervention  
 
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