Problème code

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème code

Re: Problème code

par Jibe » 14 févr. 2012, 16:04

En fait sur cette même page il y a en première partie un bloc qui permet de prescrire une formation à un collaborateur en fonction de son métier.

Une deuxième partie est consacrée à la prescription de formations par rapport à la fonction qu'il occupe.

Enfin la dernière partie qui s'appelle "formations complémentaires" consiste à proposer à l'utilisateur 3 possibilités de formation supplémentaire pour un collaborateur. Voilà pourquoi j'ai mis une boucle for.
Dans la troisième partie, prescrire une formation à un collaborateur c'est choisir une formation dans la liste déroulante, choisir une priorité dans la liste déroulante et mettre un commentaire.
Ensuite dans ma page de traitement je récupère (codeformation, priorite, commentaire) pour les enregistrer dans ma base.

Est-ce plus clair ?

Re: Problème code

par xTG » 14 févr. 2012, 15:22

Il faut que tu changes le name du select pour une notation tableau pour pas avoir de conflit déjà, à cause de ta boucle.
Après avoir de nouveau regardé ton code il y a un truc qui me choque...
Tu affiches un formulaire pour donner un commentaire ? Mais à quoi sert ta boucle for ? Tu affiches du coup 3 formulaires.
Expliques nous cette partie car sinon te conseiller va aboutir vers une usine à gaz. :P

Re: Problème code

par Jibe » 14 févr. 2012, 10:49

Du coup avec ça :
<table>
	<tr>
		<th>Formations</th>
		<th>Priorité</th>
		<th>Commentaire</th>
	</tr>
	<?php
	for($s=0;$s<3;$s++)
	{ ?>
		<tr>
			<td><select name="libfor" id="libfor">
			<?php $req = $bdd->query('SELECT codeform, libform FROM formation ORDER BY libform ASC');
			while($h = $req->fetch())
			{
				$codef = $h['codeform'];
				$libf = $h['libform'];
				echo "<option value = '$codef'>$libf</option>";
			} ?>
			</select></td>
			<td><select name="p[]">
			<option value=""></option>
			<option value="1">1</option>
         		<option value="2">2</option>
			<option value="3">3</option></select></td>
			<td><textarea name="c[]" rows="3" cols="50"></textarea></td>
		</tr>
		<?php
	}
</table>
Comment je peux m'assurer que dans ma page de traitement je récupère bien le commentaire et la priorité avec la codef (code formation) ?

Re: Problème code

par Jibe » 13 févr. 2012, 14:40

Effectivement il n'y a pas d'intérêt à mettre la même chose dans le name et le id.
En fait je m'y prend surement mal vus les remarques mais dans la page suivante (donc de traitement) il faut que je récupère les informations pour les enregistrer dans la base de données, dans une table qui contient les colonnes suivantes :
(id, matricule, codeform, commentaire, priorite, date)

Donc il faut bien que je récupère le codef lié au commentaire et à la priorité

Re: Problème code

par sirakawa » 13 févr. 2012, 13:56

Ça n'a rien à voir, mais la priorité, pour aller plus vite, se passe de "e" : priorité.
Plus sérieusement, je reste ébahi devant le nombre de fois où $codef est utilisé pour faire visiblement la même chose dans id et dans name...

Re: Problème code

par xTG » 13 févr. 2012, 12:52

C'est quoi l'intérêt de vouloir reprendre le coderef dans le name du textarea alors que tu auras l'info grâce à la valeur du select ?

Problème code

par Jibe » 13 févr. 2012, 11:47

Bonjour,

Je me tourne vers vous pour éclaircir un petit problème.
Voilà mon code :
<table>
    <tr>
        <th>Formations</th>
        <th>Priorité</th>
        <th>Commentaire</th>
    </tr>										
    <tr>
        <td><select name="libfor" id="libfor">
        
<?php $req = $bdd->query('SELECT codeform, libform FROM formation ORDER BY libform ASC');
        while($h = $req->fetch())
        {
	    $codef = $h['codeform'];
            $libf = $h['libform'];
	    echo "<option value = '$codef'>$libf</option>";
        } ?> 
        </select></td>
        <td><select name="prio[<?php echo $codef; ?>]">
        <option value=""></option>
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3">3</option></select></td>
        <td><textarea name="com[<?php echo $codef; ?>]" rows="3" cols="50"></textarea></td>
    </tr>
</table>
La page suivante est une page de traitement ou je récupère les prioritee et les comment... Le problème c'est que actuellement le codef qui est renvoyé est systématiquement le dernier. J'ai essayé de fermer mon while avant la fermture du tableau mais ça met la pagaille donc je sais pas comment faire pour arriver à récupérer le bon codef à chaque fois.
Autre chose il faut que j'affiche ce code 3 fois. J'ai essayé en mettant une boucle for mais c'est pareil ça fout la pagaille...

Merci