[PHP] Boucles while et switch

Discussion dans 'Web, design' créé par II phl II, 27 Août 2007.

Statut de la discussion:
Fermée.
  1. Offline
    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
    II phl II, 27 Août 2007
    #1
  2. Offline
    Jereck Procrastinateur
    Equipe GamerZ.be
    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 ?
    Jereck, 27 Août 2007
    #2
  3. Offline
    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>'; 
    		}
    
    		?>
    
    II phl II, 27 Août 2007
    #3
  4. Offline
    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 :)
    kokotchY, 27 Août 2007
    #4
  5. Offline
    II phl II Touriste
    mon bouton n'est pas là pour resetter le form mais pour revenir à l'étape précédente :p
    II phl II, 28 Août 2007
    #5
  6. Offline
    kokotchY Elite
    Au temps pour moi :)
    kokotchY, 29 Août 2007
    #6
Statut de la discussion:
Fermée.