Comment passer une valeur prédéfinie d'un formulaire

Shmi
Invité n'ayant pas de compte PHPfrance

07 juin 2006, 17:13

Allo tout le monde,

Je veux pouvoir décider du code d'utilisateur de mon appli. J'affiche ce code dans la case du formulaire en plus de lui mettre l'attribut «disabled» pour qu'on ne puisse le modifier. Malheureusement, la valeur n'est pas passé lors du «submit». Qu'est-ce que j'oublie ?

Voici ma ligne de code (PHP et HTML) :
<input type="text" name="logon_name" class="textbox" value="<?=isset($data['logon_name']) ? $data['logon_name'] : $newcode; ?>" disabled="true"/>

Merci

Shmi

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

07 juin 2006, 17:16

Tu oublis... que les champs disabled ne sont pas envoyés par le formulaire :)

Utilises plutot readonly="true" pour empêcher la modification du texte, et transmettre le champ malgré tout :)

Shmi
Invité n'ayant pas de compte PHPfrance

07 juin 2006, 17:37

Merci pour l'information. Pourtant, ça ne fonctionne toujours pas. D'ailleurs, j'ai quelques lignes plus bas le nom de l'utilisateur ...

<input type="text" name="lname" class="textbox" value="<?=isset($data['lname']) ? $data['lname'] : ''; ?>" maxlength="50" />

.... et lorsque je vais un «echo» pour visualiser le contenu de mes variables (logon_name et lname), le nom s'affiche très bien mais pas le code d'utilisateur.

Je suis déspérée. :cry:

As-tu une autre idée Ryle ?

Shmi

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

07 juin 2006, 17:48

Ben là tout de suite, à froid, je vois pas trop non.. ton champ logon_name n'est pas placé en dehors des balises <form> ? (il ne serait du coup pas envoyé non plus lors du submit)

A la limite, fais nous voir tout le formulaire :)

et au lieu du echo, montre nous le résultat d'un print_r($_POST) (ou de $_GET selon la façon dont tu envois les données) pour voir les données que tu récupères une fois le formulaire envoyé :)

Shmi
Invité n'ayant pas de compte PHPfrance

07 juin 2006, 19:22

Bon, alors je me lance...

Voici la fonction qui affiche la boite d'identification pour l'utilisateur :
<form name="register" method="post" action="<?= $_SERVER['PHP_SELF'] . '?' . ($edit ? 'edit=' . $edit : '')?>">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
  <td bgcolor="#333333">
	<table width="100%" border="0" cellspacing="1" cellpadding="2">
	  <tr bgcolor="#FFFFFF">
		<td width="250" class="formNames">
		  <p align="right"><?=translate('User Code')?></p>
		</td>
		<td colspan="3">
			<input type="text" name="logon_name" class="textbox" value="<?=isset($data['logon_name']) ? $data['logon_name'] : $newcode; ?>" readonly="true"/>
		</td>
	  </tr>
	  <tr bgcolor="#FFFFFF">
		<td width="250" class="formNames">
		  <p align="right">* <?=translate('Email address')?></p>
		</td>
		<td colspan="3">
		  <input type="text" name="emailaddress" class="textbox" value="<?=isset($data['emailaddress']) ? $data['emailaddress'] : ''; ?>" maxlength="75" />
		</td>
	  </tr>
	  <tr bgcolor="#FFFFFF">
		<td class="formNames">
		  <p align="right">* <?=translate('Last Name')?></p>
		</td>
		<td>
		  <input type="text" name="lname" class="textbox" value="<?=isset($data['lname']) ? $data['lname'] : ''; ?>" maxlength="50" />
		</td>
		<td class="formNames">
		  <p align="right">* <?=translate('First Name')?></p>
		</td>
		<td>
		  <input type="text" name="fname" class="textbox" value="<?=isset($data['fname']) ? $data['fname'] : ''; ?>" maxlength="50" />
		</td>
	  </tr>
	  <tr bgcolor="#FFFFFF">
		<td class="formNames">
		  <p align="right">* <?=translate('Phone')?></p>
		</td>
		<td>
		  <input type="text" name="phone" class="textbox" value="<?=isset($data['phone']) ? $data['phone'] : ''; ?>" size="15" />
		</td>
		<td class="formNames">
		  <p align="right"><?=translate('Fax')?></p>
		</td>
		<td>
		  <input type="text" name="fax" class="textbox" value="<?=isset($data['fax']) ? $data['fax'] : ''; ?>" size="15" />
		</td>
	  </tr>
	  <tr bgcolor="#FFFFFF">
		<td class="formNames">
		  <p align="right">* <?=translate('Address')?></p>
		</td>
		<td>
		  <input type="text" name="laddress" class="textbox" value="<?=isset($data['laddress']) ? $data['laddress'] : ''; ?>" size="45" />
		</td>
		<td class="formNames"><p align="right">* <?=translate('Schedule City')?></td></p>
		<td>
		  <input type="text" name="city" class="textbox" value="<?=isset($data['city']) ? $data['city'] : ''; ?>" size="30" />
		</td>
	  </tr>
	  <tr bgcolor="#FFFFFF">
		<td class="formNames">
		  <p align="right">* <?=translate('Schedule CodePost')?></p>
		</td>
		<td colspan="3">
		  <input type="text" name="lcodepost" class="textbox" value="<?=isset($data['lcodepost']) ? $data['lcodepost'] : ''?>" size="7" />
		</td>
	  </tr>
	  <tr bgcolor="#FFFFFF">
		<td class="formNames">
		  <p align="right"><?=translate('Institution')?></p>
		</td>
		<td>
		  <?
		  if (empty($institutions[0])) {
			echo '<input type="text" name="institution" class="textbox" value="' . (isset($data['institution']) ? $data['institution'] : '') . '" maxlength="255" />' . "\n";
		  }
		  else {
		  ?>
		  <select name="institution" class="textbox">
		  <?			  
			  // Print out position options
			  for ($i = 0; $i < count($institutions); $i++) {
				echo '<option value="' . $institutions[$i] . '"'
					. ( (isset($data['institution']) && ($data['institution'] == $institutions[$i])) ? ' selected="selected"' : '' )
					. '>' . $institutions[$i] . '</option>' . "\n";
			  }
		  ?>
		  </select>
		  <?
		  }
		  ?>
		</td>
		<td class="formNames">
		  <p align="right"><?=translate('Position')?></p>
		</td>
		<td>
		  <?
		  if (empty($positions[0])) {
			echo '<input type="text" name="position" class="textbox" value="' . (isset($data['position']) ? $data['position'] : '') . '" maxlength="100" />' . "\n";
		  }
		  else {
		  ?>
		  <select name="position" class="textbox">
		  <?			  
			  // Print out position options
			  for ($i = 0; $i < count($positions); $i++) {
				echo '<option value="' . $positions[$i] . '"'
					. ( (isset($data['position']) && ($data['position'] == $positions[$i])) ? ' selected="selected"' : '' )
					. '>' . $positions[$i] . '</option>' . "\n";
			  }
		  ?>
		  </select>
		  <?
		  }
		  ?>
		</td>
	  </tr>
	  <tr bgcolor="#FFFFFF">
		<td class="formNames"><p align="right"><?=translate('User Type')?></td></p>
		<td class="cellColor" colspan="3">
			<select name="typeloginid" class="textbox">
				<?
				if (empty($types))
					echo '<option value="">Ajouter une catégorie</option>';
				else {
					for ($i = 0; $i < count($types); $i++)
						echo '<option value="' . $types[$i]['typeloginid'] . '"' . (isset($data['typeloginid']) && $types[$i]['typeloginid'] == $data['typeloginid'] ? ' selected="selected"' : '') . '>' . $types[$i]['typeloginame'] . "</option>\n";
				}
				?>
			</select>
			</td>
	  </tr>
	  <tr bgcolor="#FFFFFF">
		<td  class="formNames">
		  <p align="right">* <?=translate('Password (6 char min)', array($conf['app']['minPasswordLength']))?></p>
		</td>
		<td colspan="3">
		  <input type="password" name="password" class="textbox" />
		</td>
	  </tr>
	  <tr bgcolor="#FFFFFF">
		<td  class="formNames">
		  <p align="right">* <?=translate('Re-Enter Password')?></p>
		</td>
		<td colspan="3">
		  <input type="password" name="password2" class="textbox" />
		</td>
	  </tr>
	  <? if (!$edit) { ?>
	  <tr bgcolor="#FFFFFF">
		<td  class="formNames">
		  <p align="right"><?=translate('Keep me logged in')?></p>
		</td>
		<td colspan="3">
		  <input type="checkbox" name="setCookie" value="true" />
		</td>
	  </tr>
	  <? } ?>
	</table>
  </td>
</tr>
</table>
<h6>
* = Indique que le champ est obligatoire<br>
Le code d'utilisateur vous est attribué de façon automatique
</h6>
<? if ($edit) { ?>
	<input type="submit" name="update" value="<?=translate('Edit Profile')?>" class="button" />
	<input type="button" name="cancel" value="<?=translate('Cancel')?>" class="button" onclick="javascript: document.location='ctrlpnl.php';" />
<? } else { ?>
	<input type="submit" name="register" value="<?=translate('Register')?>" class="button" />
	<input type="button" name="cancel" value="<?=translate('Cancel')?>" class="button" onclick="javascript: document.location='index.php';" />
<? } ?>
</form>
<?
}
Voici maintenant ce que m'affiche le print_r(_$POST), tel que tu me le recommande :

Array ( [emailaddress] => [email protected] [lname] => Bolduc [fname] => AA [phone] => 7777 [fax] => 777 [laddress] => 100, rue des Brioches [city] => L'Assomption [lcodepost] => J6Y 5T4 [institution] => [position] => [typeloginid] => rs1443eaf99520ce [password] => sirius [password2] => sirius [register] => Enregistrer )

Merci. C'est franchement très gentil de m'aider. Il y a plusieurs jours que je suis sur ce problème.

Shmi

Invité
Invité n'ayant pas de compte PHPfrance

07 juin 2006, 19:30

J'ai oublié le début de la fonction...
function print_register_form($edit, $data = array(), $types, $newcode, $msg = '') {
	global $conf;
	$positions    = $conf['ui']['positions'];		// Postions that are availble in the pull down menu
	$institutions = $conf['ui']['institutions'];	// Institutions that are available in the pull down menu 
	$use_logonname = (bool)$conf['app']['useLogonName'];	// If we are using logon name or email for authentication
	
	echo "Use = (".$use_logonname.")<br>";
		
	// Print header
	echo '<h3 align="center">' . (($edit) ? translate('Please edit your profile') : translate('Please register')) . '</h3>' . "\n";

	if (!empty($msg))
		CmnFns::do_error_box($msg, '', false);
		
?>
Shmi

Shmi
Invité n'ayant pas de compte PHPfrance

07 juin 2006, 19:45

Encore moi Ryle,

Ben voilà, tout fonctionne. Après avoir enlevé mes commentaires avant de t'envoyer la fonction, tout s'est réglé. J'avais une saleté dans les commentaires probablement. :oops:

Du HTML mêlé à du PHP, on en vient à ne plus savoir comment appliquer les commentaires.

Merci tout de même. Je prends une bière à ta santé.

Shmi