Bouton supprimer / Débutant - PHP - Programmation
Marsh Posté le 25-02-2011 à 09:27:00
Il va te falloir un peu plus d'information pour realiser ce genre de chose.
1. Je te conseille de rajouter un ID unique qui te permettra d'identifier un contact, et sera donc la cle primaire dans ta table.
2. Tu crees un second script php (ex: delete.php), que tu vas appeler avec l'ID d'un contact (ex: delete.php?id=1) et qui s'occupera de la suppression de la ligne dans ta base.
Tu devrais avoir un truc qui ressemble a ca:
contacts.php
Code :
|
delete.php
Code :
|
Marsh Posté le 25-02-2011 à 10:22:12
Merci Axel! J'avais bossé la dessus hier soir et je me dirigeais vers cette solution.
J'ai mis un ECHO après la requète qui me dit que c'est bon. Par contre je ne sais pas comment faire pour me rediriger vers la page contact et rafraichir.
J'ai effectué quelques recherches et il semblerait que je puisse faire çà avec un header ou un POST. Quel est la meilleur méthode? Comment faire?
Marsh Posté le 25-02-2011 à 10:53:49
Oui utilise la fonction header, ca marche tres bien. Tiens regarde du cote de la doc. pour plus d'info: http://www.php.net/manual/fr/function.header.php
Marsh Posté le 28-02-2011 à 11:00:09
Bonjour à tous,
J'ai toujours des problèmes avec ma fonction "supprimer"
Je vous mets le code:
contact.php
<php>
<HTML><HEAD>
<TITLE>contact.php</TITLE>
</HEAD>
<BODY>
<FORM>
Nom: <INPUT TYPE=TEXT NAME='Nom'><BR>
Prenom: <INPUT TYPE=TEXT NAME='Prenom'><BR>
Fonction: <INPUT TYPE=TEXT NAME='Fonction'><BR>
Societe: <INPUT TYPE=TEXT NAME='Societe'><BR>
Téléphone: <INPUT TYPE=TEXT NAME='Telephone'><BR>
Email: <INPUT TYPE=TEXT NAME='Email'><BR>
Adresse: <INPUT TYPE=TEXT NAME='Adresse'><BR>
Commentaire: <INPUT TYPE=TEXT NAME='Commentaire'><BR>
<INPUT TYPE=SUBMIT VALUE='ajouter' NAME='ajouter' >
</FORM>
<?php
$connexion = mysql_connect("localhost", "dbcolas", "sn2011" );
if (!$connexion)
{
echo "Connexion impossible \n";
exit;
}
if (!mysql_select_db("suivi" ))
{
echo "Connexion base impossible\n";
exit;
}
$res=mysql_query("SELECT * FROM contact",$connexion) or die(mysql_error());
//echo $res;
$Nom = $_GET['Nom'];
$Prenom = $_GET['Prenom'];
$Fonction = $_GET['Fonction'];
$Societe = $_GET['Societe'];
$Telephone = $_GET['Telephone'];
$Email = $_GET['Email'];
$Adresse = $_GET['Adresse'];
$Commentaire = $_GET['Commentaire'];
//FONCTION AJOUTER
if( isset( $_GET['ajouter'] ) )
{
echo "Entrez vos champs";
$requete = mysql_query("INSERT INTO contact (Id, Nom, Prenom, Fonction, Societe, Telephone, Email, Adresse,
Commentaires) VALUES ('$Id', '$Nom', '$Prenom', '$Fonction', '$Societe', '$Telephone', '$Email', '$Adresse', '$Commentaire')" );
}
?>
<table>
<TR><th>--------------------</th><th>
<?
//AFFICHAGE DES RESULTATS
$req= mysql_query("SELECT * FROM contact" );
while($data=mysql_fetch_object($req))
{
echo '<tr><td>',$data->Id, '</td><td>', $data->Nom,'</td><td>',$data->Prenom,'</td></tr>';
?>
<TR><th>--------------------</th><th>
<?php
//FONCTION SUPPRESSION
echo "<a href=\"suppression.php?Id=" . $data['Id'] . "><INPUT TYPE=SUBMIT VALUE='supprimer' NAME='supprimer' ></a>";
//FONCTION MODIFIER
//echo "<a href=\"modification.php?Id=" . $data['Id'] . "><INPUT TYPE=SUBMIT VALUE='modifier' NAME='modifier' ></a>";
}
?>
</BODY></HTML>
</php>
suppression.php
<php>
<?php
$connexion = mysql_connect("localhost", "dbcolas", "sn2011" );
if (!$connexion)
{
echo "Connexion impossible \n";
exit;
}
if (!mysql_select_db("suivi" ))
{
echo "Connexion base impossible\n";
exit;
}
$Id = $_GET['Id'];
$req=mysql_query("DELETE FROM contact WHERE Id='$Id'" )or die(mysql_error());
//echo $Id;
header("Location:contact.php" );
exit;
</php>
Après enquête, il s'avère qu'il y a un décalage d'une unité entre l'Id affiché dans mon tableau et l'Id en écho de ma requéte supprimer. Donc çà ne marche pas (sans me renvoyer d'erreur) puisque le programme doit supprimer un truc qui n''existe pas (ou qui est vide).
Quelqu'un a t-il une idée de ce que je dois pour régler ce problème?
Marsh Posté le 02-03-2011 à 03:47:00
Un conseil pour commencer: organise un peu mieux ton code
Essaye d'identifier chaque action de maniere a separer ton code proprement.
Par exemple, tu dupliques 2 fois le code pour la connexion a ta base de donnees. Ecris un script, mysql.php, qui s'occupe UNIQUEMENT de cette tache et te retourne la variable $connexion. Tu inclus ce script en haut de ton fichier contact.php/suppression.php et tu utilises $connexion pour faire tes requetes SELECT, INSERT, DELETE.
De la meme maniere tu devrais separer le code relatif a l'ajout et a la modification d'un contact. Le plus simple (et clair), c'est peut etre d'avoir UNE fonction (~script) pour UNE action.
Concernant ton probleme, tu utilises la fonction mysql_fetch_object qui retourne un objet et non un tableau (cf. mysql_fetch_array si tu veux un tableau). Donc d'un cote tu accedes au contenu de $data comme si c'etait un objet ($data->Id) OK, et d'un autre tu accedes a son contenu comme si c'etait un tableau ($data['Id']) MARCHE PAS!. Autre conseil, etre consistant dans son code
Marsh Posté le 24-02-2011 à 14:45:52
Bonjour à tous,
Je réalise actuellement une base de données MySQL bien que ce en soit absolument pas ma spécialité (vous avez peut être déjà vu mes posts sur ce forum...).
J'ai réussi à créer la fonction "ajouter" (quand je rempli des champs et je clique sur l'input ajouter, la BdD enregistre ces champs et me les affiche comme ci dessous:
CHIRAC jacques
---------- supprimer
halliday johnny
---------- supprimer
Voici une partie du code (boucle while):
<table>
<TR><th>----------</th><th>
<?
$req= mysql_query("SELECT * FROM contact" );
while($data=mysql_fetch_object($req))
{
echo '<tr><td>',$data->Nom,'</td><td>',$data->Prenom,'</td></tr>';
?>
<TR><th>----------</th><th>
<INPUT TYPE=SUBMIT VALUE='supprimer' NAME='supprimer' >
<?php
}
?>
J'ai ajouté un input supprimer dans la boucle (à l'endroit ou il y a marqué supprimer en gras ci dessus). Je souhaiterais maintenant pouvoir supprimer la ligne de ma BdD quand je clique sur ce bouton.
Dois-je faire une autre boucle dans la boucle avec une fonction MySQL DELETE? Est il possible de faire ce que veux? Quelqu'un a t-il une idée?
Merci