Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & PostgreSQL
PHP & PostgreSQL Forum d'entraide sur PostgreSQL avec PHP. Avant de poster -> FAQ PostgreSQL, Cours PostgreSQL. Pour les questions concernant le moteur PostgreSQL plutôt que les fonctions PHP, merci d'utiliser le forum PostgreSQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/02/2011, 00h27   #1
Nouveau Membre du Club
 
Inscription : juillet 2009
Messages : 147
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 147
Points : 29
Points : 29
Par défaut Suppression d'un utilisateur

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
<?php
require_once("connexion.php");
 
$query="SELECT * FROM utilisateurs ORDER BY idutilisateur";
$repSQL = pg_exec($query) or die ("Erreur");
 
while ($donnees = pg_fetch_assoc($repSQL))
{
	echo $donnees['idutilisateur'].'&nbsp;'.'&nbsp;'.'&nbsp;'; 
	echo $donnees['nom'].'&nbsp;'.'&nbsp;';
	echo $donnees['prenom'].'<br />';
 
	if($_POST["supprimer".$donnees['idutilisateur']]=='on') 
	{  
		echo "BONJOUR";
		$sql ='DELETE FROM utilisateurs WHERE idutilisateur ='.$donnees['idutilisateur'];
		$result=pg_exec($sql) or die ("Erreur");
	}
}
?>
Sur une liste d'utilisateurs, lorsque je coche la checbocks correspondante je souhaiterai supprimer l'utilisateur de la base de données en cliquant sur valider mais ca ne marche pas.

Dans le while, a l'execution, on ne rentre pas dans le if. Serait-elle de là l'erreur ? Erreur dans le code ?
Lenou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2011, 00h30   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Encore une fois, controle ta variable $_POST.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2011, 00h34   #3
Nouveau Membre du Club
 
Inscription : juillet 2009
Messages : 147
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 147
Points : 29
Points : 29
La variable est bien absente mais comment corrigée ceci ?
Lenou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2011, 00h35   #4
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Corrige le formulaire d'ou elle devrait venir.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2011, 00h38   #5
Nouveau Membre du Club
 
Inscription : juillet 2009
Messages : 147
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 147
Points : 29
Points : 29
C'est àdire ? Corriger quoi dans le formulaire ?
Lenou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2011, 01h02   #6
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Je ne suis pas devin et je ne connais pas ton formulaire.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2011, 01h06   #7
Nouveau Membre du Club
 
Inscription : juillet 2009
Messages : 147
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 147
Points : 29
Points : 29
Voici mon premier fichier "supprimer.php"
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
 
require_once("connexion.php");
 
// Vérification du contenu de $_POST['idutilisateur']
if (empty($_POST['idutilisateur'])) {
 exit("Donnée absente");
}
 
 
$query="SELECT * FROM utilisateurs ORDER BY idutilisateur";
$repSQL = pg_exec($query) or die ("Erreur");
 
while ($donnees = pg_fetch_assoc($repSQL))
{
	echo $donnees['idutilisateur'].'&nbsp;'.'&nbsp;'.'&nbsp;'; 
	echo $donnees['nom'].'&nbsp;'.'&nbsp;';
	echo $donnees['prenom'].'<br />';
 
	if($_POST["supprimer".$donnees['idutilisateur']]=='on') 
	{  
		echo "BONJOUR";
		$sql ='DELETE FROM utilisateurs WHERE idutilisateur ='.$donnees['idutilisateur'];
		$result=pg_exec($sql) or die ("Erreur");
	}
}
?>

Voici le second fichier "utilisateurs.php" contenant le formulaire
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
          "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
 <head>
  <meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
   <title>Quiz STRI</title>
    <link rel="stylesheet" type="text/css" href="styles/quiz.css" />
 </head>
 
<body>
 <div class="gauche">
  <img src="images.jpg" alt="logo"/>
 </div>
 
 <h1>Quiz: Formation STRI</h1>
 
   <div class="menu1"> <!-- d?t de la boite contenant les onglets -->
	<a class="onglet" href="admin.php">Accueil</a> <!-- onglet inactif -->
	<a class="onglet" href="cours_quiz2.php">Accès Cours + Quiz</a> <!-- onglet inactif -->
	<a class="onglet" href="creation.php">Cr&eacute;ation Cours</a> <!-- onglet inactif -->
	<a class="onglet" href="creation_quiz.php">Cr&eacute;ation Quiz</a> <!-- onglet inactif -->
	<a class="onglet" href="stats.php">Statistiques</a> <!-- onglet inactif -->
	<span class="onglet-actif">Gestion utilisateurs</span> <!-- onglet ACTIF -->&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  <?php
	session_start();
  ?>
  <input type="button" value="se déconnecter" onclick="self.location.href='deconnexion.php'"/>
   </div>
 
   <div class="contenu2">
	<fieldset>		
     <legend>Gestion des utilisateurs</legend>
	  <p>
	Dans le tableau ci-dessous apparaissent l'ensemble des utilisateurs enregistr&eacute;s.
	  </p>
 
<?php
require_once("connexion.php");
 
// lancement de la requête (on impose aucune condition puisque l'on désire obtenir la liste complète des utilisateurs
$sql = 'SELECT * FROM utilisateurs
		ORDER BY idutilisateur';  
 
$result=pg_exec($connect,$sql) or die ("Erreur");
 
// on va scanner tous les tuples un par un
 echo '<TABLE BORDER="1" CELLPADDING="5" ALIGN="center"><TR>';
 echo '<TH> ID utilisateur </TH>';
 echo '<TH> Nom  </TH>';
 echo '<TH> Prénom  </TH>';
 echo '<TH> Adresse mail  </TH>';
 echo "<TH> Type d'utilisateur  </TH>";
 echo '<TH> Supprimer </TH>';
 echo '</TR>';
 
 echo '<form method="post" action="supprimer.php">';
while ($data = pg_fetch_array($result)) { 
      // on affiche les résultats
	  echo '<TR>';
	  echo '<TD>'.$data['idutilisateur'].'<br /></TD>'; 
      echo '<TD>'.$data['nom'].'<br /></TD>'; 
      echo '<TD>'.$data['prenom'].'<br /></TD>'; 
	  echo '<TD>'.$data['adressemail'].'<br /></TD>';
	  echo '<TD>'.$data['typeutilisateur'].'</TD>';
      echo "<TD><input type=checkbox name=suppression value=supprimer".$data['idutilisateur']."></TD>";
	  echo '</TR>';
}
	  echo '</TR></TABLE>';
	  echo '<br /><input type="submit" value="Valider" name="ok">';
	  '</form>';
 
pg_free_result ($result);
pg_close ($connect);  
?> 
 
    </fieldset>
   </div>
</body>
</html>
Lenou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2011, 01h21   #8
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Code :
echo '<TD><input type="checkbox" name="suppression[]"  value ="' . $data['idutilisateur'] .'">';
supprimer.php
Code :
1
2
3
4
5
6
7
8
<?php
require_once("connexion.php");
if (isset($_POST['suppression'])) {
       $tblId = array_map('intval', $_POST['suppression']);
        $sql ='DELETE FROM utilisateurs WHERE idutilisateur IN (' . implode(',', $tblId) . ')';
	$result=pg_exec($sql) or die ("Erreur");
}
?>
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2011, 01h33   #9
Nouveau Membre du Club
 
Inscription : juillet 2009
Messages : 147
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 147
Points : 29
Points : 29
Merci beaucoup.

Il y a un petit Hic c'est que Idutilisateur est clé étrangère dans d'autres tables et cela gène la suppression d'un ligne.

Comment résoudre ce souci ?
Lenou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2011, 01h45   #10
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Ton champ doit avoir l'option "ON DELETE CASCADE"
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2011, 01h55   #11
Nouveau Membre du Club
 
Inscription : juillet 2009
Messages : 147
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 147
Points : 29
Points : 29
Merci beaucoup !!!
Vous m'avez bien aidée
Lenou est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h09.


 
 
 
 
Partenaires

Hébergement Web