Problème code

Eléphant du PHP | 103 Messages

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
Modifié en dernier par Jibe le 13 févr. 2012, 14:43, modifié 1 fois.

ViPHP
xTG
ViPHP | 7331 Messages

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 ?

Mammouth du PHP | 2278 Messages

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...
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphant du PHP | 103 Messages

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é

Eléphant du PHP | 103 Messages

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) ?

ViPHP
xTG
ViPHP | 7331 Messages

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

Eléphant du PHP | 103 Messages

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 ?