champ indéfini

Eléphant du PHP | 148 Messages

27 juil. 2005, 14:44

je reposte le tout:
mon probléme est qu'un champ ici PreciseAttente n'est pas défini quand il est désactivé mais comment faire autrement ??
voila mon formulaire:
<?php
<script>
function activer(champ,radio) { 
   if (document.getElementById(radio).checked == true) 
      document.getElementById(champ).disabled = false; 
   else 
      document.getElementById(champ).disabled = true; 
} 
function desactiver(champ,radio) { 
   if (document.getElementById(radio).checked == true)
   document.getElementById(champ).disabled = true; 

   else 
      document.getElementById(champ).disabled = false;
} 
</script>	
   <BR>
   <TR><TD>Feuille d'Entretien  :
   <BR> 
   <TD><INPUT TYPE=radio NAME="Admission" VALUE="admissible" CHECKED id="admissible" onClick="desactiver('PreciseAttente','admissible');" />  <label for="admissible"> admissible</label><br />
   <TD><INPUT TYPE=radio NAME="Admission" VALUE="non admissible" id="non admissible" onClick="desactiver('PreciseAttente','non admissible');"/> <label for="non admissible"> non admissible</label><br />
   <TR><TD><TD><INPUT TYPE=radio NAME="Admission" VALUE="admis" id="admis" onClick="desactiver('PreciseAttente','admis');"/>  <label for="admis"> admis</label><br />
   <TD><INPUT TYPE=radio NAME="Admission" VALUE="non admis" id="non admis" onClick="desactiver('PreciseAttente','non admis');"/>  <label for="non admis"> non admis</label><br />
   <TR><TD><TD><INPUT TYPE=radio NAME="Admission" VALUE="attente" id="attente" onClick="activer('PreciseAttente','attente');"/>  <label for="attente"> attente</label><br />
   <TD>precisez  attente:
	<select name="PreciseAttente" id="PreciseAttente" disabled>
			<option value="<?= $val_defaut['PreciseAttente']?>"><?= $val_defaut['PreciseAttente']?></option>
			<option value="une place">une place</option>
			<option value="confirmation">confirmation</option>
	</select>		
  <BR>
</table>	

<TR><TD COLSPAN=2><INPUT TYPE=SUBMIT  VALUE='continue'>
?>
voila la fonction qui envoie les données dans une base de données en prenant les infos dasn un tableau ($cava) qui a été initialisé à la valeur vide pour tous les champs
<?php
$nom = addSlashes($cava['nom']);
  $prenom = addSlashes($cava['prenom']);
  $Admission = addSlashes($cava['Admission']);
  $PreciseAttente= addSlashes($cava['PreciseAttente']);

  $requete = "UPDATE Formulaire SET nom='$nom' , "
	. "Admission='$Admission',"
	. "PreciseAttente='$PreciseAttente'"
      	. "WHERE nom = '$nom' AND prenom='$prenom' ";
?>
donc voila et quand j'arrive à ce code il me dit bien sur que le champ
PreciseAttente n'est pas défini et ce à chaque fois qu'elle n'est pas activée ce qui est normal mais comment y remédier
j'ai tenté de faire des tests mais le problème est que les tests peuvent difficilement se faire sur le formualire vu que les champs ne sont pas renseigner avant que l'on clique sur continue
bon j'ai essayer plein de choses mais je ne vois pas coment faire
merci
Modifié en dernier par manu49 le 27 juil. 2005, 14:51, modifié 1 fois.

Eléphant du PHP | 148 Messages

27 juil. 2005, 14:45

désolé j'ai encadré ca par des balises php mais ca ne doit pas etre comme ca qu'il faut faire

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

27 juil. 2005, 14:47

non ce sont les balises bbcode qu'il faut mettre : [ php] et [/php] ;)

il y a un bouton dans la fenêtre de création du message pour les mettre, tu peux éditer ton premier message pour les rajouter

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

27 juil. 2005, 14:53

déjà je ne vois pas de balises <form></form>, est-ce parceque tu ne les as pas copié ou manquent-elles donc ton script ? si tu n'en as pas les données ne vont pas se transmettrent

ensuite, tu as un bouton radio nommé "Admission", donc suivant ma méthode utilisée pour envoyer ton formulaire (GET ou POST), tu récupèreras ta variable comme ceci :
$Admission = $_GET['Admission'];
$Admission = $_POST['Admission'];

car ta variable $cava là ne correspond à rien pour le moment

Eléphant du PHP | 148 Messages

27 juil. 2005, 15:01

ce sont des bout de codes efectivement
mais ne t'inquiete pas tout fonctionne a part ca
le tableau est utilisé dans le programme principal que tu ne vois pas la
en fait j'utilise un programme qui traite plein de fonction et je ne vais pas mettre le prog ici
pourrais tu me montrer un exemple de ce que tu me recommande de faire?
je ne sais meme pas si on peut imbriquer du JS avec de l'html

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

27 juil. 2005, 15:08

je ne sais meme pas si on peut imbriquer du JS avec de l'html
si tu peux

il doit bien y avoir un moment ou tu récupères tes variables du formulaire

qqchose comme ça
$variable = $_POST['variable'];
et bien il te suffit de modifier un peu ça en rajoutant un test
$variable = (isset($_POST['variable']))?$_POST['variable']:null;
si la variable $_POST['variable'] existe, tu la mets dans $variable, sinon tu mets null

comme ça plus de problème de variable indéfinie ;)

Eléphant du PHP | 148 Messages

27 juil. 2005, 15:18

voila a mon avis ce que tu recherche
if (isSet($_POST['action']))
    {  
      // L'utilisateur à saisi des données dans le formulaire pour 
      // modifier ou insérer un formulaire, puis a cliqué sur 'Exécuter'
      // On contrôle la saisie, on met à jour la base et on affiche
      // le tableau actualisé des renseignements 
      
      // Contrôle des données
      if (ControleFormulaire ($_POST['mode'],$_POST))
	{
	   
          MAJFormulaire($_POST['mode'], $_POST, $connexion);

          TableauFormulaire ($connexion);
	  // On place une ancre pour ajouter un formulaire
 	 echo "<A HREF='FormulaireSimple.php?mode=" . MODE_INSERTION
   	 . "'>Ajouter un formulaire</A>\n";

	}
    }
et voila fonction MAJFormulaire

function MAJFormulaire ($mode, $cava, $connexion)
{
  // Préparation des variables, en traitant par addSlashes
  // les chaînes de caractères
  $nom = addSlashes($cava['nom']);
  $prenom = addSlashes($cava['prenom']);
  $etabliepar = addSlashes($cava['etabliepar']);
  $presentation= addSlashes($cava['presentation']);
  $precisetiercepersonne = addSlashes($cava['precisetiercepersonne']);
  $age = $cava['age'];
  $datedenaissance = $cava['datedenaissance'];
  $numerodetel = $cava['numerodetel'];
  $proprietairenumerodetel = $cava['proprietairenumerodetel'];
  $numerodetelperso = $cava['numerodetelperso'];
  $proprietairenumerodetelperso = $cava['proprietairenumerodetelperso'];
  $origine = addSlashes($cava['origine']);
  $precisionorigine = addSlashes($cava['precisionorigine']);
  $domicile = addSlashes($cava['domicile']);
  $niveauscolaire = addSlashes($cava['niveauscolaire']);
  $precisionniveauscolaire = addSlashes($cava['precisionniveauscolaire']);
  $jourrendezvous = addSlashes($cava['jourrendezvous']);
  $moisrendezvous = addSlashes($cava['moisrendezvous']);	
  $anneerendezvous = addSlashes($cava['anneerendezvous']);  
  $renseignements = addSlashes($cava['renseignements']);
pour moi ca passe comme ca
en tout cas ca marche
mais je récupère pas les valeurs une par une
alors je vois pas comment faire

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

27 juil. 2005, 15:20

oui tu passes par une fonction mais le principe est le même, inseres le test que je t'ai donné dans ta fonction

Eléphant du PHP | 148 Messages

27 juil. 2005, 15:34

oh trop cool
merci beaucoup!!!!!
désolé de t'avoir fait prendre tout ce temps et ces ennuis de forum je ne suis pas un habitué mais je vais m'appliquer les prochaines fois
encore merci

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

27 juil. 2005, 15:34

pas de soucis ;)

par contre pense au [Résolu] (dans l'autre sujet aussi)