8791 sujets

Développement web côté serveur, CMS

Bonjour,

J'ai une page de test avec un formulaire ou le TESTEUR et le VERIFICATEUR enregistre des informations...

Ma BDD contient une table UTILISATEURS dans laquelle j'ai un champ IDUTIL (en Auto Incremente) et un champ NOM dans lequel j'enregistre successivement les noms du TESTEUR et du VERIFICATEUR en utilisant la fonction mysql_insert_id ... l'une à la suite de l'autre après avoir enregistré leur nom dans la table.

J'enregistre ces noms dans une $_SESSION['variable'] le temps du test ensuite à la fin du test ces variables sont détruites.

Voici le code de la page qui affiche les binomes pour ensuite accèder au résultats :

<?php
$requete = mysql_query('SELECT * FROM UTILISATEURS');
$nombreResultat = mysql_num_rows($requete);

	if(!mysql_num_rows($requete)){
	
	echo "Aucun binôme n'a pour le moment été créer";
exit;
}

echo '<table>';
for($i=0; $i<$nombreResultat; $i=$i+2)
{
	echo '<tr><td align="left">';
	$requete = mysql_query('SELECT * FROM UTILISATEURS ORDER BY idutil ASC LIMIT '.$i.', 2');
	while($data = mysql_fetch_assoc($requete))
	{
		echo ''.$data['nom'].' ';
	}
	echo '</td>
		<td align="right">
			<a href=resultats.php?id='.$data['idutil'].'>Résultats</a> -
			<a href=modifier.php?id='.$data['idutil'].'>Modifier</a> -
			<a href=supprimer.php?id='.$data['idutil'].'>Supprimer</a>
		</td>
	</tr>';
}
echo '</table>';
?>

J'aimerais récupérer le nom du premier et l'enregistrer dans une variable NOMTESTEUR et le deuxieme NOMVERIFICATEUR ...
afin de construire mon tableau de résultats avec les noms du binomes et tout et tout ...

J'aimerais que l'on m'oriente un peu ...

Si quelqu'un a une idée ...

D'avance merci ...

-------------------------- EDIT --------------------------

J'ai stocké les noms du TESTEUR et du VERIFICATEUR dans des variables de $_SESSION le temps du test ...

Ensuite si je veux voir les résultats du test mais à une date ultérieure, je vais dans ma page LISTEBINOMES.PHP, là il me liste les binômes avec le script php ci-dessus .

Maintenant si je clique sur le lien RESULTATS du premier binome ex: TOTO et DUPONT, j'aimerais que le 1° nom (TOTO) sois enregistré dans la variable $_SESSION['nomtesteur'] et que le deuxieme (DUPONT) soit enregistré dans la variable $_SESSION['nomverificateur'].

Et ce que je ne sais pas faire c'est ça .... dire à mysql que le premier des 2 noms est TESTEUR et le 2° VERIFICATEUR.

Voilà, j'espère avoir été plus clair ...

@+
Modifié par Jackisback (13 May 2009 - 13:55)
Salut,

pas sûr d'avoir bien compris mais à priori c'est compliqué uniquement parce que ta table n'est pas normalisée : tu veux utiliser le même champ (nom) pour 2 notions distinctes à savoir Testeur et Vérificateur. Pourquoi ne pas tout simplement faire une structure sous la forme : id_binome | testeur | verificateur ?
Je l'avais fais au debut mais j'ai besoin d'avoir un IDUTIL différent pour chaque personne physiques et pas par binomes ...

Voilà pourquoi ...

Tu as bien compris ...

Plusieurs tests vont etre fait dans le temps ce qui va remplir ma table UTILISATEURS de cette façon ...

IDUTIL - NOM
(1, 'titi'),
(2, 'toto'),
(3, 'le fou'),
(4, 'dudule'),
(5, 'billy'),
(6, 'le borgne')

Et donc quand je reviendrai sur la liste des binomes je vais me retrouver avec ce script là:

<?php
$requete = mysql_query('SELECT * FROM UTILISATEURS');
$nombreResultat = mysql_num_rows($requete);

	if(!mysql_num_rows($requete)){
	
	echo "Aucun binôme n'a pour le moment été créer";
exit;
}

echo '<table>';
for($i=0; $i<$nombreResultat; $i=$i+2)
{
	echo '<tr><td align="left">';
	$requete = mysql_query('SELECT * FROM UTILISATEURS ORDER BY idutil ASC LIMIT '.$i.', 2');
	while($data = mysql_fetch_assoc($requete))
	{
		echo ''.$data['nom'].' ';
	}
	echo '</td>
		<td align="right">
			<a href=resultats.php?id='.$data['idutil'].'>Résultats</a> -
			<a href=modifier.php?id='.$data['idutil'].'>Modifier</a> -
			<a href=supprimer.php?id='.$data['idutil'].'>Supprimer</a>
		</td>
	</tr>';
}
echo '</table>';
?>


Qui va m'afficher ceci dans ma page:


titi  toto      Résultats - Modifier - Supprimer
le fou  dudule  Résultats - Modifier - Supprimer
billy  le borgne Résultats - Modifier - Supprimer


A ce moment là si je clique sur RESULTATS je voudrais qu'il m'enregistre dans la premiere variable $_SESSION['nomtesteur'] --> TITI et dans la deuxieme variable $_SESSION['nomverificateur'] --> TOTO de façon à ce qu'il m'affiche dans mon tableau le nom du TESTEUR et du VERIFICATEUR de façon séparée.

Voilà vite fait le bout de code du tableau:

echo "<div id='formtest'>
<table>
	
	<tr>
	  <td align='center'>TESTEUR</td>
	  <td align='center'>VERIFICATEUR</td>
	</tr>
	
	<tr>
	  <td align='center'>".$_SESSION['nomtester']."</td>
	  <td align='center'>".$_SESSION['nomverificateur']."</td>
	</tr>
	
	<tr>
	  <td align='center'>Choix du testeur</td>
	  <td align='center'>Choix du verificateur</td>
	</tr>
	
	</table>
	</div>";

C'est plus clair ???
Jackisback a écrit :
j'ai besoin d'avoir un IDUTIL différent pour chaque personne physiques et pas par binomes ...
Dans ce cas tu crées 2 tables :

utilisateurs :
id_utilisateur
nom

binomes :
id_binome
id_utilisateur_testeur
id_utilisateur_verificateur
Modifié par Heyoan (13 May 2009 - 15:21)
a écrit :
Et ce que je ne sais pas faire c'est ça .... dire à mysql que le premier des 2 noms est TESTEUR et le 2° VERIFICATEUR.


je vois pas bien où est la difficulté mais c'est vrai que moi j'utiliserais php
et non mysql pour faire cela.

je reprends ton exemple

echo '<table>';
for($i=0; $i<$nombreResultat; $i=$i+2)
{
	echo '<tr><td align="left">';
	$requete = mysql_query('SELECT * FROM UTILISATEURS ORDER BY idutil ASC LIMIT '.$i.', 2');
	while($data = mysql_fetch_assoc($requete))
	{
		echo ''.$data['nom'].' ';
	}
	echo '</td>
		<td align="right">
			<a href=resultats.php?id='.$data['idutil'].'>Résultats</a> -
			<a href=modifier.php?id='.$data['idutil'].'>Modifier</a> -
			<a href=supprimer.php?id='.$data['idutil'].'>Supprimer</a>
		</td>
	</tr>';
}
echo '</table>';


a chaque iteration du for ta requete ne retourne que 2 personnes qui se suivent en id

bon c'est vrai on ne peut pas ce referer a la parité de ton id car des "trous" pourraient apparaitre aprés des supressions.

mais rien ne t'empeche d'inserer un deuxieme compteur dans ta boucle $j


	$requete = mysql_query('SELECT * FROM UTILISATEURS ORDER BY idutil ASC LIMIT '.$i.', 2');
        $j = 0;
	while($data = mysql_fetch_assoc($requete))
	{
		echo ''.$data['nom'].' ';
                if ($j == 0) $TESTEUR = $data['nom'];
                else $VERIFICATEUR = $data['nom'];
                $j++;
	}



ensuite si le challenge est de le faire que en SQL sans s'aider de php.
Bien sur c'est autre chose.

étant passé depuis longtemps sur sqlserveur je ne sais pas/plus si sur mysql on peut concatener a un alias une valeur qui s'incremente.

en sql serveur ca se ferait peut-etre ( ou pas ) en declarant une boucle et une/des variables.

a mon avis aucun interêt en terme d'execution.


----------------

n'empeche c'etait juste pour repondre a la question texto.

sinon le conseil d'heyoan est bien aussi. pourquoi ne faire qu'une table.
et si un jour tu inserais 2 testeurs d'affilé car la requete du verificateur aurait echoué.
tu melangerais testeurs et verificateurs..
Modifié par CPascal (14 May 2009 - 00:05)
Bonjour,

CPascal, tu dis:

bon c'est vrai on ne peut pas ce referer a la parité de ton id car des "trous" pourraient apparaitre aprés des supressions.

Normalement lors de la suppression ça supprime le binomes ... mais il est vrai qu'après il pourrait y avoir un loupé quelque part pour x raisons ....

J'ai mis le compteur que tu me proposais .... et ça fonctionne mieux ....
et donc si je comprends bien ce compteur démarre à 0 et la premiere entrée sera enregistrée sous $TESTEUR puis dès qu'elle est différente de 0 donc 1 puisque je n'en prends que 2 ca me l'enregistre sous $VERIFICATEUR ... c'est bien ça ???

C'est tout bête et je n'y pensais même pas .... je cherchais bien plus compliqué ... en tout cas merci .....
Sauf que je viens de faire des essais et si je marque un nom du genre "M. Dupont" ca ne me retourne que "M." .....

Je vais essayer de trouver d'où ça peut venir ...

Bye
peut_etre de l'insertion en base ? as tu la bonne info en base?
le select ne me semble pas etre en tord en tous cas.

sinon je pense que tu as bien compris ce que je proposais.

salut bon courage
Je viens de refaire l'essai ...

J'ai marqué un nom composé pour le premier user (Le testeur), il est correctement enregistré en BDD.

Ensuite, il est correctement affiché dans ma liste des binomes.

ex: Le testeur - verificateur

PAR CONTRE si je tente de modifié le nom par le formulaire de modification du binome alors là il me retourne un:

Undefined index: nomv in .....


Avec comme variable pour le nom du verificateur...

Bizarre .....
Modifié par Jackisback (15 May 2009 - 08:45)