Page 1 sur 1

Affichage d'un message de confirmation

Posté : 20 juin 2012, 22:17
par atari54
Bonjour à tous,

J'ai récemment créé un script PHP permettant d'effacer des tables, dans une base de données, portant le même suffixe avant un underscore.
Pour être plus clair, si je rentre dans un champ les caractères qui se trouvent devant les underscore (underscore est le "tiret de la touche 8" : _) des tables que je souhaite supprimer, et bien...elle s'effacent effectivement.
if(isset($hote) && !empty($hote) && isset($nom_bdd) && !empty($nom_bdd) && isset($login) && !empty($login) /*&& isset($mot_passe) && !empty($mot_passe) */&& isset($suffixe_table) && !empty($suffixe_table)){            
			
				if($hote == 'localhost' && $login == 'root'){				
				
					$requete = $bdd->query('show tables');
					While($ligne = $requete->fetch())					
					{					
						if($suffixe_table === strstr($ligne[0], '_', true)){
							$bdd->exec('DROP TABLE '.$ligne[0]);						
						}					
					}					
				$requete->closeCursor();				
				}			
			}
			else{
				echo 'La table n\'a pu être supprimée. Veuillez vérifier la validité des données rentrées dans le formulaire.';
			}
Là où j'ai un problème, c'est pour afficher un message dans le cas où une (des) table(s) a (ont) bien été effacé(e). Car je ne peux inscrire ce message dans la boucle, au risque de le voir répéter autant de fois que le nombre de tables effacées...

Quelqu'un aurait-il une piste pour que je puisse afficher ce message de confirmation lorsqu'au moins une table est effacée ? (et par la même occasion lorsque qu'aucune table n'a été effacée). Merci d'avance !

Re: Affichage d'un message de confirmation

Posté : 20 juin 2012, 22:38
par AB
Enregistre ton message dans un tableau ainsi tu pourras lister les tables effacées
$tab_result = array();

While($ligne = $requete->fetch())                                      
           {                                      
                   if($suffixe_table === strstr($ligne[0], '_', true)){
                   $result = $bdd->exec('DROP TABLE '.$ligne[0]);       
                   if($result > 0)  $tab_result[] =  $ligne[0];                           
           }                                      

//...
if (isset($tab_result) && is_array($tab_result) && count($tab_result) > 0)
{
    foreach ($tab_result as $value)  echo $value.'<br>';

}   

Re: Affichage d'un message de confirmation

Posté : 20 juin 2012, 23:15
par atari54
Merci pour l'idée AB, cela fonctionne !
if($tab_result > 0){
	   $tab_result[] =  $ligne[0];	
	   }
J'ai juste rajouté les accolades après la condition : petite erreur de frappe j'imagine. :wink:

Re: Affichage d'un message de confirmation

Posté : 20 juin 2012, 23:33
par AB
Merci pour l'idée AB, cela fonctionne !
if($tab_result > 0){
	   $tab_result[] =  $ligne[0];	
	   }
J'ai juste rajouté les accolades après la condition : petite erreur de frappe j'imagine. :wink:
Non, pour les conditions simples on peut s'en passer :wink:

Re: Affichage d'un message de confirmation

Posté : 20 juin 2012, 23:55
par atari54
Merci pour l'idée AB, cela fonctionne !
if($tab_result > 0){
	   $tab_result[] =  $ligne[0];	
	   }
J'ai juste rajouté les accolades après la condition : petite erreur de frappe j'imagine. :wink:
Non, pour les conditions simples on peut s'en passer :wink:
Bien vu AB, ça marche en effet sans les accolades. Au moins maintenant, je le saurai ! :)

Re: Affichage d'un message de confirmation

Posté : 21 juin 2012, 19:03
par AB
J'avais fait pareil pour le foreach (sans accolade).
Cela fonctionne à condition qu'il n'y ait qu'une seule instruction derrière (ce que j'appelle "une condition simple"). Mais s'il y avait plusieurs instructions derrière (plusieurs lignes) les accolades seraient indispensables. Certains les utilise donc systématiquement, soit par habitude soit pour une meilleure lisibilité.