Syntaxe PHP

cammaillard
Invité n'ayant pas de compte PHPfrance

29 oct. 2011, 20:15

Bonjour à tous,

Je rencontre des difficultés que j'imagine d'ordre syntaxique. Je dois manquer un truc parce que là... je bloque !

Code : Tout sélectionner

<?php $testa = 'datingsearch_glisse'; ?> <select id='.$testa.' name="datingsearch_xxxxxxx" class="jinfield3">
En gros j'essaie de maitriser l'id d'une liste déroulante via l'instauration de la valeur $testa.

Ce qui fonctionne c'est évidemment :

<select id="datingsearch_glisse" name="datingsearch_xxxxxxx" class="jinfield3">

Par contre dès que j'essaie de remplacer le nom de l'id par une variable ça ne fonctionne pas.

Merci d'avance !!

:wink:

ViPHP
xTG
ViPHP | 7331 Messages

29 oct. 2011, 21:35

Il faut des balises PHP et une fonction d'affichage pour opérer ce que tu veux.
Là tu ne fais que mettre du texte dans du code HTML (et non PHP) qui ne sera jamais interprété par le serveur. ;)
<p>Un exemple de texte avec une variable <?php echo $maVariable; ?> en plein milieu</p>

cammaillard
Invité n'ayant pas de compte PHPfrance

30 oct. 2011, 13:34

Bonjour et un grand merci pour votre aide sur mon précédent post. J'arrive désormais à contrôler les valeurs $test, $testa et $testaa dans les lignes concernées.

La phase finale de mon problème est la suivante :

Je souhaiterai créer une liste déroulante dans laquelle le simple choix d'un élément de la liste attribue la valeur de cet élément à $test et $testaa.

En d'autres termes j'essaie de faire quelque chose du style :

Choix de la liste = "Sports de glisse" alors $test = 'datingsearch_glisse' et $testaa = 'glisse' sans avoir besoin de confirmer le choix via un bouton mais plutôt en utilisant onChange.


Bout de code qui fonctionne à l'heure actuelle :
		<div>
			<div>
<?php

$testa = 'datingsearch_glisse';
$testaa = 'glisse';		
								?>

				<select id="<?php echo $testa; ?>" name="datingsearch_xxxxxxx" class="jinfield3">

<?php $test = $_test['youp']; ?>

					<option value="" <?php if($test=='')echo 'selected'?>><?php echo JText::_('Sports de glisse'); ?></option>
					<?php

					foreach($field->value->$testaa as $data)
					{
					?>
						<option value="<?php echo $data; ?>" <?php if($test==$data)echo 'selected'?>><?php echo $data; ?></option>
					<?php
					}
					?>
				</select>
Ebauche d'une liste déroulante :


<div>
<SELECT NAME="Rubrique" onChange=' ????????????????????? ' class="jinfield3">
<OPTION>Choix d'un sport</OPTION>
<OPTION>Sports de glisse</OPTION>
<OPTION>Sports nautiques</OPTION>
</SELECT>
</br>
<div style="clear:both; margin-bottom:3px;"></div>
</div>


Merci à vous !

Je me traine ce problème depuis plus d'un mois maintenant. Je touche presque au but !!

:wink:

ViPHP
xTG
ViPHP | 7331 Messages

30 oct. 2011, 14:55

Non tu ne touches pas au but, loin de là. ^^
PHP = langage exécuté côté serveur
onChange = évènement javascript exécuté côté client après que le serveur ai envoyé la page

Selon ce que tu souhaites faire il est soit possible de tout faire en Javascript (j'entends par là des variables javascript et non PHP), ou bien d'utiliser des requêtes Asynchrones (Ajax) pour envoyer une requête au serveur sans changer de page pour exécuter un code PHP.

A priori ce sont des listes dynamiques liées que tu souhaites gérer.
Voici un peu de lecture : faq-tutoriels/formulaires-listes-deroul ... t4562.html

cammaillard
Invité n'ayant pas de compte PHPfrance

30 oct. 2011, 15:48

OK, merci pour la douche froide ! :)

Tenant compte de l'intégralité du code ci-dessous, quelle serait la bonne méthode à utiliser ?

<?php
/**
 * @license		GNU/GPL, see LICENSE.php
 */
defined('_JEXEC') or die('Restricted access');
?>
<script type="text/javascript">



	function getBirthday(years)
	{
		if(years=="")
		{
			return false;
		}
		
		var now 		= new Date();
		var birthday	= new Date(now.getTime()-years*365*24*60*60*1000);
		var date 		= birthday.getDate()+"/"+birthday.getMonth()+"/"+birthday.getFullYear();
		
		return date;
	}
	
	function submitSearchForm()
	{
		var gender 			= joms.jQuery("#datingsearch_gender").val();
		var agefrom 		= joms.jQuery("#datingsearch_agefrom").val();
		var ageto 			= joms.jQuery("#datingsearch_ageto").val();
		var city 			= joms.jQuery("#datingsearch_city").val();
		var state 			= joms.jQuery("#datingsearch_state").val();
		var country 		= joms.jQuery("#datingsearch_country").val();
		var glisse 		= joms.jQuery("#datingsearch_glisse").val();
		var nautique 		= joms.jQuery("#datingsearch_nautique").val();
		var birthdaystop 	= getBirthday(agefrom);
		var birthdaystart	= getBirthday(ageto);
		var keylist			= "";

				
		joms.jQuery("#datingsearch_search").attr("disabled", true);
		
		if(gender)
		{
			joms.jQuery("#datingsearch_hidden").append('<input type="hidden" name="field0" value="<?php echo $field->code->gender; ?>"><input type="hidden" name="condition0" value="equal"><input type="hidden" name="value0" value="'+joms.jQuery("#datingsearch_gender").val()+'"><input type="hidden" name="fieldType0" value="<?php echo $field->type->gender;?>">');
			
			if(keylist!="")
			{
				keylist += ","
			}
			keylist += "0";
		}
				
		if(birthdaystop || birthdaystart)
		{
			var extraAppend = "";
			
			if(birthdaystop && birthdaystart)
			{
				extraAppend = '<input type="hidden" name="condition1" value="between"><input type="hidden" name="value1" value="'+birthdaystart+'"><input type="hidden" name="value1_2" value="'+birthdaystop+'">';
			}
			else if(birthdaystop && !birthdaystart)
			{
				extraAppend = '<input type="hidden" name="condition1" value="lessthanorequal"><input type="hidden" name="value1" value="'+birthdaystop+'">';
			}
			else if(!birthdaystop && birthdaystart)
			{
				extraAppend = '<input type="hidden" name="condition1" value="greaterthanorequal"><input type="hidden" name="value1" value="'+birthdaystart+'">';
			}
			
			joms.jQuery("#datingsearch_hidden").append('<input type="hidden" name="field1" value="<?php echo $field->code->birthday; ?>">'+extraAppend+'<input type="hidden" name="fieldType1" value="<?php echo $field->type->birthday;?>">');
			
			if(keylist!="")
			{
				keylist += ","
			}
			keylist += "1";
		}
		
		if(city)
		{
			joms.jQuery("#datingsearch_hidden").append('<input type="hidden" name="field2" value="<?php echo $field->code->city; ?>"><input type="hidden" name="condition2" value="equal"><input type="hidden" name="value2" value="'+city+'"><input type="hidden" name="fieldType2" value="<?php echo $field->type->city;?>">');
			
			if(keylist!="")
			{
				keylist += ","
			}
			keylist += "2";
		}
		
		if(state)
		{
			joms.jQuery("#datingsearch_hidden").append('<input type="hidden" name="field3" value="<?php echo $field->code->state; ?>"><input type="hidden" name="condition3" value="equal"><input type="hidden" name="value3" value="'+state+'"><input type="hidden" name="fieldType3" value="<?php echo $field->type->state;?>">');
			
			if(keylist!="")
			{
				keylist += ","
			}
			keylist += "3";
		}
		
		if(country)
		{
			joms.jQuery("#datingsearch_hidden").append('<input type="hidden" name="field4" value="<?php echo $field->code->country; ?>"><input type="hidden" name="condition4" value="equal"><input type="hidden" name="value4" value="'+country+'"><input type="hidden" name="fieldType4" value="<?php echo $field->type->country;?>">');
			
			if(keylist!="")
			{
				keylist += ","
			}
			keylist += "4";
		}

		if(glisse)
		{
			joms.jQuery("#datingsearch_hidden").append('<input type="hidden" name="field5" value="<?php echo $field->code->glisse; ?>"><input type="hidden" name="condition5" value="equal"><input type="hidden" name="value5" value="'+glisse+'"><input type="hidden" name="fieldType5" value="<?php echo $field->type->glisse;?>">');
			
			if(keylist!="")
			{
				keylist += ","
			}
			keylist += "5";
		}

		if(nautique)
		{
			joms.jQuery("#datingsearch_hidden").append('<input type="hidden" name="field5" value="<?php echo $field->code->nautique; ?>"><input type="hidden" name="condition5" value="equal"><input type="hidden" name="value5" value="'+nautique+'"><input type="hidden" name="fieldType5" value="<?php echo $field->type->nautique;?>">');
			
			if(keylist!="")
			{
				keylist += ","
			}
			keylist += "5";
		}
		
		if(keylist)
		{
			joms.jQuery("#datingsearch_hidden").append('<input type="hidden" id="key-list" name="key-list" value="'+keylist+'" />');
			joms.jQuery("#datingsearch").submit();
		}
		else
		{
			joms.jQuery("#datingsearch_search").attr("disabled", false);
		}
	}
</script>
<style type="text/css">
#datingsearch{text-align:center;margin:0 auto;font-weight:bold;color:#555;font-size:11px;}
#datingsearch .jlab {width:90%;}
#datingsearch .jinfield {width:90%;}
#datingsearch .jinfield2 {width:35%;}
#datingsearch .jinfield3 {width:95%;}

#datingsearch .jinfield2 {padding:2px;text-align:center;
	background: #f4f4f4;

	background: -moz-linear-gradient(top,  #eeeeee,  #ffffff);
	background: -webkit-gradient(linear, left top, left bottom, from(#eeeeee), to(#ffffff));
	filter: progid:DXImageTransform.Microsoft.Gradient(StartColorStr='#eeeeee', EndColorStr='#ffffff', GradientType=0);
	
	border: 1px solid #ddd;
	border-bottom: 2px solid #ccc;
	border-top: 1px solid #e2e2e2;
	
	border-radius : 10px;
	-moz-border-radius : 10px;
	-webkit-border-radius: 10px;
	-khtml-border-radius: 10px;
	font-size:12px;
	font-weight:bold;}

#datingsearch .jinfield {padding:3px;text-align:left;
	background: #f4f4f4;

	background: -moz-linear-gradient(top,  #eeeeee,  #ffffff);
	background: -webkit-gradient(linear, left top, left bottom, from(#eeeeee), to(#ffffff));
	filter: progid:DXImageTransform.Microsoft.Gradient(StartColorStr='#eeeeee', EndColorStr='#ffffff', GradientType=0);
	
	border: 1px solid #ddd;
	border-bottom: 2px solid #ccc;
	border-top: 1px solid #e2e2e2;
	
	border-radius : 5px;
	-moz-border-radius : 5px;
	-webkit-border-radius: 5px;
	-khtml-border-radius: 5px;
	font-size:12px;
	font-weight:bold;}

#datingsearch select{cursor: pointer;
	background: #777;
	border: none;
	padding: 4px 10px;
	color: #000;
	font-size: 9pt;
	margin: 0;	
	background: #f4f4f4;
	background: -moz-linear-gradient(top,  #eeeeee,  #ffffff);
	background: -webkit-gradient(linear, left top, left bottom, from(#eeeeee), to(#ffffff));
	filter: progid:DXImageTransform.Microsoft.Gradient(StartColorStr='#eeeeee', EndColorStr='#ffffff', GradientType=0);
	border: 1px solid #ddd;
	border-bottom: 2px solid #ccc;
	border-top: 1px solid #e2e2e2;
	
	border-radius : 5px;
	-moz-border-radius : 5px;
	-webkit-border-radius: 5px;
	-khtml-border-radius: 5px;}

#datingsearch select:active{
	background: -moz-linear-gradient(top,  #ffffff,  #eeeeee);
	background: -webkit-gradient(linear, left top, left bottom, from(#ffffff), to(#eeeeee));
	filter: progid:DXImageTransform.Microsoft.Gradient(StartColorStr='#ffffff', EndColorStr='#eeeeee', GradientType=0);}

#datingsearch input:active {
	background: -moz-linear-gradient(top,  #ffffff,  #eeeeee);
	background: -webkit-gradient(linear, left top, left bottom, from(#ffffff), to(#eeeeee));
	filter: progid:DXImageTransform.Microsoft.Gradient(StartColorStr='#ffffff', EndColorStr='#eeeeee', GradientType=0);
}

#jdsearch .button {padding: 5px 10px;	
border: 1px solid #D1D2D3;
	background: #21a8da;
	-moz-border-radius: 7px;
	border-radius: 7px;
	-moz-box-shadow: 
		0 0 3px rgba(0,0,0,0.2) outset,
		0 1px 0 #fff;
	-webkit-box-shadow:
		0 0 3px rgba(0,0,0,0.2) outset,
		0 1px 0 #fff;
	box-shadow: 
		0 0 3px rgba(0,0,0,0.2) outset,
		0 1px 0 #fff;
	color: #fff;font-size:14px;font-weight:700;
	text-shadow: 0 1px 0 rgba(0,0,0,0.3);
}


#jdsearch .button:hover {padding: 5px 10px;
	border: 1px solid #D1D2D3;
	background: #F4F5F6;
	-moz-border-radius: 7px;
	border-radius: 7px;
	-moz-box-shadow: 
		0 0 3px rgba(0,0,0,0.2) inset,
		0 1px 0 #fff;
	-webkit-box-shadow:
		0 0 3px rgba(0,0,0,0.2) inset,
		0 1px 0 #fff;
	box-shadow: 
		0 0 3px rgba(0,0,0,0.2) inset,
		0 1px 0 #fff;
	color: #555;
	text-shadow: 0 1px 0 rgba(0,0,0,0.3);
}
</style>
<div class="<?php echo $params->get('moduleclass_sfx'); ?>">
	<form name="datingsearch" id="datingsearch" method="GET" action="<?php echo CRoute::_('index.php?option=com_community&view=search&task=advancesearch&Itemid=' . $itemid); ?>">
		<div>
			<div class="jlab"><?php echo JText::_('MOD_DATINGSEARCH LOOKING FOR'); ?></div>
			<div>
				<select id="datingsearch_gender" name="datingsearch_gender" class="jinfield3">
					<option value="" <?php if($gender=='')echo 'selected'?>><?php echo JText::_('MOD_DATINGSEARCH GENDER'); ?></option>
					<?php
					foreach($field->value->gender as $data)
					{
					?>
						<option value="<?php echo $data; ?>" <?php if($gender==$data)echo 'selected'?>><?php echo $data; ?></option>
					<?php
					}
					?>
				</select>
			</div>
			<div style="clear:both; margin-bottom:3px;"></div>
		</div>
		
		<div>
			<div class="jlab"><?php echo JText::_('MOD_DATINGSEARCH AGE BETWEEN'); ?></div>
			<div>
				<input type="text" class="jinfield2" maxlength=3 id="datingsearch_agefrom" name="datingsearch_agefrom" value="<?php echo $agefrom; ?>"/> <?php echo JText::_('MOD_DATINGSEARCH TO');?> 
				<input type="text" class="jinfield2" maxlength=3 id="datingsearch_ageto" name="datingsearch_ageto" value="<?php echo $ageto;?>"/>
			</div>
			<div style="clear:both; margin-bottom:3px;"></div>
		</div>
		
		<div id="jloc">
		<div>
			<div class="jlab"><?php echo JText::_('MOD_DATINGSEARCH CITY'); ?></div>
			<div><input type="text" class="jinfield" id="datingsearch_city" name="datingsearch_city" value="<?php echo $city;?>"/></div>
			<div style="clear:both; margin-bottom:3px;"></div>
		</div>
		<div>
			<div class="jlab"><?php echo JText::_('MOD_DATINGSEARCH STATE'); ?></div>
			<div><input type="text" class="jinfield" id="datingsearch_state" name="datingsearch_state" value="<?php echo $state;?>"/></div>
			<div style="clear:both; margin-bottom:3px;"></div>
		</div>
		<div>
			<div>
				<select id="datingsearch_country" name="datingsearch_country" class="jinfield3">
					<option value="" <?php if($country=='')echo 'selected'?>><?php echo JText::_('MOD_DATINGSEARCH COUNTRY'); ?></option>

					<?php
					foreach($field->value->country as $data)
					{
					?>
						<option value="<?php echo $data; ?>" <?php if($country==$data)echo 'selected'?>><?php echo $data; ?></option>


					<?php

					}
					?>


				</select>
			</div>
			<div style="clear:both; margin-bottom:3px;"></div>
		</div>


<div>
<SELECT NAME="Rubrique" onChange='Choix(this.form)' class="jinfield3">
<OPTION>Choix d'un sport</OPTION>
<OPTION>Sports de glisse</OPTION>
<OPTION>Sports nautiques</OPTION>
</SELECT>
</br>
<div style="clear:both; margin-bottom:3px;"></div>
</div>
		<div>
			<div>
<?php

$testa = 'datingsearch_glisse';
$testaa = 'glisse';		
								?>

				<select id="<?php echo $testa; ?>" name="datingsearch_xxxxxxx" class="jinfield3">

<?php $test = $_test['glisse']; ?>

					<option value="" <?php if($test=='')echo 'selected'?>><?php echo JText::_('Sports de glisse'); ?></option>
					<?php

					foreach($field->value->$testaa as $data)
					{
					?>
						<option value="<?php echo $data; ?>" <?php if($test==$data)echo 'selected'?>><?php echo $data; ?></option>
					<?php
					}
					?>
				</select>
			</div>
			<div style="clear:both; margin-bottom:3px;"></div>
		</div>


		
		<div style="clear:both; margin-bottom:10px;"></div>
		
		<div id="jdsearch">
			<input type="button" class="button" id="datingsearch_search" name="datingsearch_search" value="<?php echo JText::_('MOD_DATINGSEARCH SEARCH'); ?>" onclick="submitSearchForm();"/>
		</div>
		<div style="clear:both; margin-bottom:3px;"></div></div>
		
		<div id="datingsearch_hidden">
			<input type="hidden" name="operator" value="and" />
			<input type="hidden" name="option" value="com_community" />
			<input type="hidden" name="view" value="search" />
			<input type="hidden" name="task" value="advancesearch" />
			<input type="hidden" name="Itemid" value="<?php echo $itemid; ?>" />
		</div>
	</form>
</div>
Le but étant effectivement de créer une liste dynamique liée. Il me semble avoir déjà bien avancé mais mes connaissances arrivent à leurs limites ..

Merci encore.

ViPHP
xTG
ViPHP | 7331 Messages

30 oct. 2011, 16:27

Si la tasse de thé déborde rien de mieux que de partir sur un tutorial plutôt que de devoir potasser à droite et à gauche. ;)

cammaillard
Invité n'ayant pas de compte PHPfrance

30 oct. 2011, 18:09

Après plus d'une heure de tests, d’interprétations, d'ajustements, de tentatives, de manipulations ... je n'y arrive pas !

Je ne parviens pas à modifier le module existant avec la liste que je souhaite créer.

Je suis pourtant très curieux mais je pense qu'il faut parfois admettre quand quelque chose est hors de portée. Ainsi je lance un appel général à ceux qui peuvent éventuellement m'aider sur ce point. J'échange tout service ou petite rémunération à celui ou celle qui voudra bien me tendre la main sur ce projet.

Un grand merci à la communauté ! :wink:

cammaillard
Invité n'ayant pas de compte PHPfrance

06 nov. 2011, 20:31

Bonsoir à tous,

En ce dimanche je viens confirmer, après plusieurs jours de vaines tentatives, mon incapacité à solutionner mon problème ! :?

Je relance donc mon appel à volontaire. Si vous avez quelques minutes à dépenser j'apprécierai grandement votre aide et, comme je disais précédemment, j'offre volontier une contrepartie.

Merci à vous !

:wink: