[PHP] Boucles while et switch

Statut
N'est pas ouverte pour d'autres réponses.

II phl II

Touriste
Bonjour à tous,

Je suis en train de coder un petit site Internet et j'ai un problème avec une fonctionnalité du panel administration.

Les utilisateurs peuvent s'enregistrer sur le site Internet, en complétant un formulaire (nom, email, tel, société, etc.), pour accéder à une partie privée.

Ces utilisateurs sont enregistrés dans une DB.
Mais avant de pouvoir accéder à cette partie, ils doivent être validés par un admin.

Pour ce faire, lors de l'ajout dans la DB, je fixe un champs valid à 0 pour ceux qui ne sont pas encore validés.

Dans le panel admin, il y a une liste des utilisateurs en attentes de validation.
En face de chaque utilisateur, il y a un checkbox qui peut être coché pour le valider.

La validation se passe sans problème : les champs des utilisateurs choisis sont UPDATED à 1 !

MAIS je cherche à afficher ensuite un bouton par utilisateur validé pour lui envoyer un mail avec ses codes d'accès (username et password générés)
Pas moyen :-'

Voici mon code :
Tableau des utilisateurs en attentes de validation :
Code:
<?php	
	//connexion à la base
	include('../includes/db.inc.php');
		
	$sql = "SELECT * FROM members WHERE valid='0' order by ".$order;
	$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
?>

<p><b>Liste des utilisateurs en attente de validation:</b></p>
		
	<form method="POST" action="admin-members-new-val.php">
	<table border="1" cellspacing="1" cellpadding="0" align="center">
				<tr align="center">
					<td><b>&nbsp;&nbsp;Nom&nbsp;&nbsp;</b></td>
					<td><b>&nbsp;&nbsp;Soci&eacute;t&eacute;&nbsp;&nbsp;</b></td>
					<td><b>&nbsp;&nbsp;Poste occup&eacute;&nbsp;&nbsp;</b></td>
					<td><b>&nbsp;&nbsp;E-mail&nbsp;&nbsp;</b></td>
					<td><b>&nbsp;&nbsp;T&eacute;l&eacute;phone&nbsp;&nbsp;</b></td>
					<td><b>&nbsp;&nbsp;Site Internet&nbsp;&nbsp;</b></td>
					<td><b>&nbsp;&nbsp;Pays&nbsp;&nbsp;</b></td>
					<td colspan="2"><b>&nbsp;&nbsp;Gestion&nbsp;&nbsp;</b></td>
				</tr>
				<tr>
					<td colspan="9" align="center"><a href="?order=id"><img src="../images/admin/order_id.png" alt="classement par id" title="classement par id" /></a>&nbsp;&nbsp;Classement&nbsp;&nbsp;<a href="?order=username"><img src="../images/admin/order_name.png" alt="classement par nom" title="classement par ordre alphab&eacute;tique" /></a></td>
				</tr>
				
				<?php
				while($data = mysql_fetch_array($req)) {
					echo "<tr>
					<td>".$data['username']."</td>
					<td>".$data['company']."</td>
					<td>".$data['position']."</td>
					<td>".$data['email']."</td>
					<td>".$data['tel']."</td>
					<td>".$data['website']."</td>
					<td>".$data['land']."</td>
					<td align=\"center\"><input type=\"checkbox\" name=\"choix[]\" value=".$data['id']." ></td>
					<td align=\"center\"><a href=\"admin-member-delete.php?member=".$data['id']."\" onclick=\"return(confirm(\'Êtes-vous s&ucirc;r de vouloir supprimer ".$data['username']." de la base de donn&eacute;es ?\'));\"><img src=\"../images/admin/member_delete.png\" alt=\"delete\" title=\"delete\" /></a></td>
				</tr>
				";
				}

				?>				
		</table>
		<br />
		<input type="button" value="Annuler" onclick="location.href='admin-members.php'" />
		<input type="submit" value="Valider les utilisateurs choisis" name="ok">
		</form>
Page de validation :
Code:
<?php

$size = sizeof($choix);

if ($size == 0) {
	header('Location:admin-members-new.php');
	exit;
	}
else {
	foreach ($choix as $id) {
		$sql = "UPDATE members SET valid='1' WHERE id='$id'";
		mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
		
		if (isset($choix)) {
		$sql_members = "SELECT * FROM members WHERE id='$id'";
		$req_members = mysql_query($sql_members) or die('Erreur SQL !<br>'.$sql_members.'<br>'.mysql_error());
				
		}
	}
}
?>
Comment puis-je récupérer les champs des utilisateurs qui viennent d'être ajoutés ?
Je suppose que cela doit se faire avant de mettre leur champ valid à 1 mais comment procéder ?

Merci
 

Jereck

Α & Ω
Staff
J'ai pas regardé ton code, mais tu ne pourrais pas passer dans un système avec 3 états ?

-1 : non-validés
0 : validés mais le mail n'est pas envoyé
1 : validés, mail envoyé.


D'un autre coté, pourquoi ne pas envoyer le mail automatiquement lors de la validation de l'utilisateur ?
 
1er
OP
II phl II

II phl II

Touriste
Car je veux laisser à l'admin le soin de décider si oui ou non il veut envoyer les codes par mail et si oui il doit spécifier quels utilisateurs.
Pour certains, il souhaite les communiquer autrement que par mail.

J'y suis finalement arrivé (en perdant bcp de cheveux dans la bataille) en utilisant un code tout bête :pfiou:

Code:
<?php
		foreach ($choix as $id) {
			$sql_members = "SELECT * FROM members WHERE id='$id'";
			$req_members = mysql_query($sql_members) or die('Erreur SQL !<br>'.$sql_members.'<br>'.mysql_error());
			$data = mysql_fetch_array($req_members);
			echo '<p>=> Cliquez sur l\'&icirc;cone pour envoyer les codes d\'acc&egrave;s &agrave '.$data['username'].' <a href="#" onclick="window.open(\'admin-members-new-val-eml.php?status=2&username='.$data['username'].'&password='.$data['password'].'&email='.$data['email'].'\', \'email\' , \'toolbar=no, status=no, scrollbars=yes, resizable=yes, width=810, height=215\')" /><img src="../images/admin/email_attach.png" alt="Clic" title="email" /></a></p>'; 
		}

		?>
 

kokotchY

Elite
Code:
<input type="button" value="Annuler" onclick="location.href='admin-members.php'" />
Pas la peine de faire du javascript pas beau, alors que ca existe de base :
<input type="reset" />
Ca efface tout le form où il se trouve :)
 
1er
OP
II phl II

II phl II

Touriste
mon bouton n'est pas là pour resetter le form mais pour revenir à l'étape précédente :p
 

kokotchY

Elite
Au temps pour moi :)
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut