IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Suppression ou modification d'un sujet créé


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 236
    Par défaut Suppression ou modification d'un sujet créé
    Bonsoir,

    Je vais essayer d'être le plus explicite possible :

    http://www.noelshack.com/2015-11-142...8-capture1.png

    Le formulaire ci-dessus permet de créer en quelques sorte un "sujet". Ce sujet sera créé par l'utilisateur "Mitsukk" (comme on peut le voir en haut dans l'image).

    Une fois le sujet créer, il apparait dans une nouvelle page, celle-ci :

    http://www.noelshack.com/2015-11-142...0-capture2.png

    Maintenant, j'aimerais pouvoir faire en sorte que le créateur de ce sujet (ici, Mitsukk donc) puisse modifier ou supprimer son sujet, comme là par exemple :

    http://www.noelshack.com/2015-11-142...0-capture2.png

    J'ai réussi à créer une page de modification des informations personnels des différents utilisateurs inscrits dans mon site mais je n'ai pas d'idée à comment associé un "sujet" à un "utilisateur" pour qu'il puisse le supprimer ou le modifier (évidemment il ne pourra pas modifier les sujets créés par d'autres utilisateurs).

    Merci de votre aide

  2. #2
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 133
    Par défaut
    Salut,

    C'est au niveau que la base de données que tout se joue ^^

    Donc tu as une table utilisateur et une table course, jusque là pas de soucis à priori ?
    Ce qu'il faut c'est qu'un utilisateur puisse être attaché à aucune ou plusieurs courses (UML: OneToMany ou Merise: 0,n) et qu'une course soit rattaché à un et un seul utilisateur (UML: ManyToOne ou Merise: 1,1).
    Et pour représenter cela, on rajoute l'identifiant de l'utilisateur dans la table course (`course`.`id_user`).

    Ce faisant, tu pourras faire le test de propriété pour éditer ou supprimer une course.

    Ca répond à ta question ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 236
    Par défaut
    Effectivement, j'ai bien deux tables.

    Une table "inscription" pour inscrire un utilisateur :

    http://www.noelshack.com/2015-11-1426113554-capture.png

    Une table "organiser" pour l’insertion des "sujet" (ce sont des courses à pied) :

    http://www.noelshack.com/2015-11-142...7-capture2.png

    En gros, dans ma table organiser je dois ajouter un champ "utilisateur" ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    1/ je te conseille d'utiliser des noms de champs plus spécifiques et explicites :
    tu as "id" dans les 2 tables = source de futures confusions !
    tu pourrais mettre id_user et id_sujet à la place.

    Idem pour les noms des tables :
    • T_USERS ou T_UTILISATEURS ou T_PARTICIPANTS
    • T_EVENTS ou T_EVENEMENTS ou T_COURSES


    2/ Si UN SEUL user crée UN ou PLUSIEURS "sujet", on a une relation "one to many" :
    il suffit alors juste d'avoir dans la table "sujet" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    id_sujet int(11) primary auto-incrément
    id_user int(11) 
    ....
    De fait, lors de la création d'un sujet, on insert en même temps l'id_user de son créateur.

    Pour afficher la liste des sujets de CET user :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT .... WHERE id_user = ".$id_user." ";
    On peut aussi mette l'id_user en SESSION au moment de sa connexion.
    On aura alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT .... WHERE id_user = ".$SESSION['id_user']." ";
    3/ dans un autre cas de figure, par exemple "les participants à une course" :
    Là on aurait PLUSIEURS participants à UNE ou PLUSIEURS courses ; on a une relation "many to many"
    dans ce cas, on fait appel à une TABLE RELATIONNELLE, dans laquelle on relie 1 user à 1 course.
    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    TABLE "T_EVENT_USER_LINK"
    id_event_user int(11) primary auto-incrément (=> pas nécessairement utile ici !)
    id_event int(11) 
    id_user int(11)
    On peut ajouter des champs en rapport avec cette RELATION.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    date d'inscription (à cette course)
    numéro de dossart
    classement (à cette course)
    temps réalisé
    ...
    Dernière modification par Invité ; 12/03/2015 à 04h21.

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 236
    Par défaut
    Merci pour ces explications, j'y travail et je fournis mes résultats si je coince encore ...

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 236
    Par défaut
    Merci pour ton aide,

    Comme tu me l'as dis, j'ai modifier les noms des id pour qu'ils soient plus explicites.

    J'ai réussi à faire ce que je voulais, ça donne cela :

    http://www.noelshack.com/2015-11-142...au-courses.png

    On peut voir que l'organisateur connecté ne peut ni modifier ou supprimer les "sujets" d'autres organisateur.

    J'arrive à supprimer un sujet à l'aide de ce code :

    https://wall.deblan.org/x1d6b/php/1/

    Le truc est que je n'arrive pas à insérer un message de confirmation de suppression, le bouton de suppression est un href, pas un submit :

    echo '<a href="supprimer.php?id_course='.$id_course.'">Supprimer</a>';

    Comment l'insérer dans une condition ?

    Je ne sais pas si je suis claire dans ma demande ...

  7. #7
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 133
    Par défaut
    Salut,

    Tu peux t'inspirer du système de FlashBag tel qu'on le trouve dans symfony, c'est un message que l'on met en session et qui se supprime dès qu'il est récupéré et donc affiché à l'écran.

    Ainsi peut importe si ta page de traitement fait une redirection vers une autre page sans rien afficher, sur ta page qui liste les courses, tu cherches la présence d'un ou plusieurs message type FlashBag, tu les récupères, supprime les messages en session au passage et affiche sur la page les messages.

    Cette solution a l'avantage d'apporter beaucoup de souplesse.

    ++

  8. #8
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 236
    Par défaut
    Merci pour ta réponse lilalex mais je n'ai pas vraiment compris ce que tu m'as conseillé de faire, j'ai résolu mon problème en faisant cela :

    Code qui permet d'afficher le tableau des "sujets" :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    				<?php
    					//Supprime la course quand la date est dépassé.
    					$sql = "DELETE FROM `bdd`.`organiser` WHERE date < NOW()";
    					$prepa = mysqli_prepare($connexion, $sql);				//Prépare la requète.
    					$prepa->execute();										//Execute la requête.
     
    					//Por afficher les courses.
    					$requete = "SELECT * FROM `bdd`.`organiser` ORDER BY date"; // Requête SQL, permet de trier les résultats par date.
    					$requete = mysqli_query($connexion, $requete) or die ('erreur sql!<br>'.$requete.'<br>'.mysql_error());
     
    					while ($donnees = mysqli_fetch_array($requete)) // On boucle pour afficher toutes les données et on met toutes données dans un tableau
    					{
    						//Récupère l'id pour générer le lien.
    						$id_course = $donnees['id_course'];
     
    						//Affiche les premières informations dans le tableau.
    						$date = $donnees['date'];
    						$nom = $donnees['nom'];
    						$departement = $donnees['departement'];
    						$organisateur = $donnees['organisateur'];
    				?>
    						<tr>
    							<td><?php echo $date; ?></td>
    							<td><?php echo $nom; ?></td>
    							<td><?php echo $departement; ?></td>
    							<td><?php echo $organisateur; ?></td>
    							<td><?php echo '<a href="detail_inscription.php?id_course='.$id_course.'">Détail</a>'?></td><!-- On récupère l'id pour le mettre dans le lien. -->
    							<td>
    								<?php
    									if ($_SESSION["pseudo"] == $organisateur)
    									{
    										echo '<a href="modifier.php?id_course='.$id_course.'">Modifier</a>';
    									}
     
    								?>
    							</td>
     
    							<td>
    								<?php
    									if ($_SESSION["pseudo"] == $organisateur)
    									{
    								?>
    										<a href="supprimer.php?id_course=<?php echo $id_course; ?>" onclick="return(confirm('Etes-vous sûr de vouloir supprimer cette course ?'));">Supprimer</a>
    								<?php
    									}
    								?>
    							</td>
     
    						</tr>
     
     
    				<?php
    					}
    					mysqli_close($connexion); // On déconnecte la base de données
    				?>

    La ligne 43 m’amène à ma page "supprimer.php" où il y a :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    <?php
    	session_start();
    	if($_SESSION["role"] == "Organisateur")
    	{
    		//Code HTML
    	}
    	else
    	{
    		header('Location: index.php'); 
    	}
    ?>
     
    <?php include("bdd/connexionBD.php"); ?>
     
    <?php
    	//Pour que les accents apparaissent.
    	mysqli_query($connexion, "SET NAMES 'utf8'"); 
    	mysqli_query($connexion, "SET CHARACTER SET 'utf8'");
    ?>
     
    <html>
    	<head>
    		<meta charset="utf-8">
    	</head>
    </html>
     
    <?php
     
    	$id_course = $_GET['id_course'];
     
    	if($id_course == false)
    	{
    		header('Location: index.php'); 
    	}
     
    	$sql = "DELETE FROM `bdd`.`organiser` WHERE id_course = $id_course";
    	$prepa = mysqli_prepare($connexion, $sql);	//Prépare la requète.
    	$prepa->execute();	//Execute la requête.
     
    	echo
    	("
    		<SCRIPT LANGUAGE='JavaScript'>
    	        window.alert('Votre course a bien été supprimé.')
    	        window.location.href='index.php'
            </SCRIPT>
    	");
     
    ?>

    A partir de la ligne 27 donc.

    Au final, chaque "créateur de sujet" peut modifier ou supprimer les sujets qu'ils aura créés seulement.

  9. #9
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 236
    Par défaut
    Au fait, le code ne fonctionne pas correctement :

    http://www.noelshack.com/2015-12-1426779931-01.png

    Ici, je suis connecté en tant que "Mitsukk" (on le voit en haut de la page en jaune) et les champs supprimer et modifier ne s'affiche que pour cet utilisateur, jusque là tout va bien.

    Le problème est que, si je tape dans la barre d'adresse, par exemple : localhost/site/supprimer.php?id_course=2

    Je supprime la course de l'utilisateur "Mitsukk2".

    Voici le code qui affiche le tableai des courses disponibles (page de l'image ci-dessus:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    <?php
    	session_start();
    	if($_SESSION["role"] == "Organisateur")
    	{
    		//Code HTML
    	}
    	else
    	{
    		header('Location: index.php'); 
    	}
    ?>
     
    <?php include("commun/page.php"); ?>
    <?php include("commun/menu.php"); ?>
    <?php include("bdd/connexionBD.php"); ?>
     
    <?php
    	//Pour que les accents apparaissent.
    	mysqli_query($connexion, "SET NAMES 'utf8'"); 
    	mysqli_query($connexion, "SET CHARACTER SET 'utf8'");
    ?>
     
    <!DOCTYPE html>
    <link rel="stylesheet" type="text/css" href="style/style.css" />
    <html>
    	<head>
    		<meta charset="utf-8">
    		<title> Participer </title>
    		<center><img src="image/13.png"></center>
    		<style type="text/css">
    			.tableau  {margin:10px auto;border-collapse:collapse;border-spacing:0;border-color:#aabcfe;}
    			.tableau td{font-family:Arial, sans-serif;font-size:14px;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:#aabcfe;color:#669;background-color:#e8edff;}
    			.tableau th{font-family:Arial, sans-serif;font-size:14px;font-weight:normal;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:#aabcfe;color:#039;background-color:#b9c9fe;}
    			.tableau th{font-weight:bold;font-style:italic;font-family:"Arial Black", Gadget, sans-serif !important;;background-color:#656565;color:#ffffff;text-align:center}
    			.tableau td{text-align:center;}
    		</style>
    	</head>
    	<body>
    		<table class="tableau">
    			<thead> <!-- Ensemble de ligne comme "entête" du tableau -->
    				<tr>
    					<th>Date</th>
    					<th>Nom de la course<br></th>
    					<th>Département</th>
    					<th>Organisateur</th>
    					<th>Détail de la course</th>
    					<th>Modifier la course</th>
    					<th>Supprimer la course</th>
    				</tr>
    			</thead>
    			<tbody> <!-- Ensemble de ligne comme le "corp" du tableau -->
     
    				<?php
    					//Supprime la course quand la date est dépassé.
    					$sql = "DELETE FROM `bdd`.`organiser` WHERE date < NOW()";
    					$prepa = mysqli_prepare($connexion, $sql);				//Prépare la requète.
    					$prepa->execute();										//Execute la requête.
     
    					//Por afficher les courses.
    					$requete = "SELECT * FROM `bdd`.`organiser` ORDER BY date"; // Requête SQL, permet de trier les résultats par date.
    					$requete = mysqli_query($connexion, $requete) or die ('erreur sql!<br>'.$requete.'<br>'.mysql_error());
     
    					while ($donnees = mysqli_fetch_array($requete)) // On boucle pour afficher toutes les données et on met toutes données dans un tableau
    					{
    						//Récupère l'id pour générer le lien.
    						$id_course = $donnees['id_course'];
     
    						//Affiche les premières informations dans le tableau.
    						$date = $donnees['date'];
    						$nom = $donnees['nom'];
    						$departement = $donnees['departement'];
    						$organisateur = $donnees['organisateur'];
    				?>
    						<tr>
    							<td><?php echo $date; ?></td>
    							<td><?php echo $nom; ?></td>
    							<td><?php echo $departement; ?></td>
    							<td><?php echo $organisateur; ?></td>
    							<td><?php echo '<a href="detail_inscription.php?id_course='.$id_course.'">Détail</a>'?></td><!-- On récupère l'id pour le mettre dans le lien. -->
    							<td>
    								<?php
    									if ($_SESSION["pseudo"] == $organisateur)
    									{
    										echo '<a href="modifier.php?id_course='.$id_course.'">Modifier</a>';
    									}
     
    								?>
    							</td>
     
    							<td>
    								<?php
    									if ($_SESSION["pseudo"] == $organisateur)
    									{
    								?>
    										<a href="supprimer.php?id_course=<?php echo $id_course; ?>" onclick="return(confirm('Etes-vous sûr de vouloir supprimer cette course ?'));">Supprimer</a>
    								<?php
    									}
    								?>
    							</td>
     
    						</tr>
     
     
    				<?php
    					}
    					mysqli_close($connexion); // On déconnecte la base de données
    				?>
    			</tbody>
    		</table>
    	</body>
    </html>


    Et le code supprimer.php :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    <?php
    	session_start();
    	if($_SESSION["role"] == "Organisateur")
    	{
    		//Code HTML
    	}
    	else
    	{
    		header('Location: index.php'); 
    	}
    ?>
     
    <?php include("bdd/connexionBD.php"); ?>
     
    <?php
    	//Pour que les accents apparaissent.
    	mysqli_query($connexion, "SET NAMES 'utf8'"); 
    	mysqli_query($connexion, "SET CHARACTER SET 'utf8'");
    ?>
     
    <html>
    	<head>
    		<meta charset="utf-8">
    	</head>
    </html>
     
    <?php
     
    	$id_course = $_GET['id_course'];
     
    	if($id_course == false)
    	{
    		header('Location: index.php'); 
    	}
     
    	$sql = "DELETE FROM `bdd`.`organiser` WHERE id_course = $id_course";
    	$prepa = mysqli_prepare($connexion, $sql);	//Prépare la requète.
    	$prepa->execute();	//Execute la requête.
     
    	echo
    	("
    		<SCRIPT LANGUAGE='JavaScript'>
    	        window.alert('Votre course a bien été supprimé.')
    	        window.location.href='index.php'
            </SCRIPT>
    	");
     
    ?>

Discussions similaires

  1. problème avec ajout, suppression et modification
    Par ned_kelly dans le forum VB.NET
    Réponses: 9
    Dernier message: 02/06/2009, 11h32
  2. Suppression et Modification d'un enregistrement
    Par loverdev dans le forum VB.NET
    Réponses: 49
    Dernier message: 21/06/2007, 15h01
  3. Réponses: 2
    Dernier message: 12/12/2006, 11h20
  4. Suppression et modification?
    Par Nino dans le forum Débuter
    Réponses: 3
    Dernier message: 09/06/2003, 23h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo