La fonction delete ne fonctionne pas ?
Hors ligneSalva Le 17/12/2005 à 20:24 Profil de Salva Configuration de Salva

Bonjour,

Je souhaite supprimer un enregistrement dans une Bd Mysql depuis un formulaire sur mon site. Pour ce faire j'utilise la fonction delete
mais ca ne fonctionne pas, je n'ai aucune erreur qui apparait mais rien n'est supprimé dans ma base.

Le formulaire ce trouve sur la page acces.php avec un bouton qui appel la page delete_agenda.php qui contient  le script Php qui doit exécuter la requete Delete :

<?php require_once('Connections/connexionmy57595.php'); ?>
<?php
session_start();
include ("acces.php");
global $ville;
global $date_fin;

//RECUPERATION DES DONNEES
$ville=(isset($_POST['ville'])) ? $_POST['ville'] : Null;
$date_fin=(isset($_POST['date_fin'])) ? $_POST['date_fin'] : Null;

$ville = $_REQUEST['ville'];
$date_fin = $_REQUEST['date_fin'];
$sql = "DELETE * FROM agenda WHERE ville='$ville' AND date_fin='$date_fin'";
$result=mysql_query($sql) ;
?>

A savoir que dans le formulaire je j'affiche des données issues de l'enregistrement concerné.

Merci pour votre aide.

Salutations.
Hors ligneFanch Le 17/12/2005 à 23:04 Profil de Fanch Configuration de Fanch

Waugh !

Je n'ai pas la réponse immédiate à ta question mais je m'en pose plusieurs en voyant ton script :

  - pourquoi déclarer $ville et $date_fin en global ??
  - pourquoi affecter à $ville et $date_fin les valeurs du $_REQUEST ?? En effet tes deux conditions de contrôle précédentes ne servent plus à rien du coup et tu t'exposes à une faille de sécurité par la méthode GET
  - pourquoi ne pas travailler avec un index numérique du genre evenenement_id qui simplifierai ta requête en DELETE * FROM agenda WHERE evenement_id=$id et qui serait plus facile à gérer au niveau relation avec le formulaire ?

A+
--
<waugh>Salutations à toi paisible surfeur !</waugh>
Hors ligneSalva Le 18/12/2005 à 11:34 Profil de Salva Configuration de Salva

Bonjour,

Merci pour ta réponse.
Effectivement mon script peut paraitre incohérent du fait que je n'y connait pas grand chose en Php et Mysql, je pioche des bout de script à gauche et à droite sur des Forum et j'essai de les assembler au mieux pour arriver à mes fin, ce qui n'est pas le cas actuellement :-(

Je t'explique donc comment se déroule le processus sur mon site ce qui pourra peut-être t'aider à comprendre ce à quoi je veux arriver.

Tout d'abord c'est un site ou j'ai référencé toutes les mairies de ma région dans des Bd Mysql.
Le visiteur à accès à une page ou un script lui permet de choisir une des villes du département.
Une fois cette ville choisie, il est renvoyé sur la page de la ville concerné ou il trouve diverse information sur la commune.
Sur cette page il y a un lien qui permet à ceux qui sont autorisé d'accèder à une page de modification.
Pour cela ils doivent s'authentifier et il sont redirigé vers une page ou ils peuvent faire des modifications mais uniquement pour la commune ou il était précedement. Donc il y a une percistence de la valeur "ville" depuis la page ou il voit la commune, puis sur l'authentification, puis sur la page de modification. (sionon tout le monde pourrait modifier pour toutes les villes.

Par contre sur cette page, je permet à la personne authorisée pour certains cas de modifier des champs (ca sa marche) et pour d'autre de
supprimer des enregistrements et la ca marche pas.

Ce qui ne marche pas :
Pour supprimer un enregistrement, j'ai créé un formulaire ou je rapatrie la valeur "ville" et "date_fin" et un bouton supprimer qui envoi le code Php que j'ai mis dans mon précedent post.
Pourquoi "ville" pour que la personne qui supprime ne supprime que des données dans des enregistrements de sa ville.
Pourquoi "date_fin" parce que le but est de supprimer dans un agenda les rendez vous qui sont déjà passé. Donc dans le formulaire
apparait le Rdv le plus ancien pour que la personne ne supprime que celui là.

Voilà, enfait c'est pas facile à expliquer, je sais pas si je me fait bien comprendre.

Sinon, le but serait que directement dans l'agenda tous les anciens événements soient automatiquement supprimé une semaine (par exemple) après que la date soit echue, mais ca je sa je sais pas le faire non plus.

Si tu veux voir à quoi ressemble le site :

http://www.atoutslor.com
va ensuite dans Moselle
puis choisi une ville, ensuite inscrit toi pour avoir accès à la page de modification. (Ca me fait penser que n'importe qui peux s'inscrire et donc s'authentifier et donc faire des modifs !!!!:-(((((
Y a encore du boulot pour sécuriser tout ca !!!!



Merci pour ton aide.


Salutations.
Hors ligneFanch Le 18/12/2005 à 12:50 Profil de Fanch Configuration de Fanch

Là je suis occupé mais dans la soirée ou dans les jours qui viennent je vais essayer de t'aider à organiser tout ça.
En premier lieu il sera bon de réfléchir à l'organisation de ta bdd.
--
<waugh>Salutations à toi paisible surfeur !</waugh>
Hors ligneSalva Le 18/12/2005 à 17:15 Profil de Salva Configuration de Salva

Cool, c'est sympa.

@+
Hors ligneAnthony Le 24/12/2005 à 15:32 Profil de Anthony Configuration de Anthony

Admin
Salut,

le DELETE * est incorrect, enlève l'astérisque.

La requête corrigée donne ceci :

"DELETE FROM agenda WHERE ville='$ville' AND date_fin='$date_fin'";

a +
--

Hors ligneSalva Le 26/12/2005 à 13:09 Profil de Salva Configuration de Salva

Bonjour,

Même en suprimant "*" ca ne marche pas.
Pourtant si je fait la requete directement dans ma base par PhpmyAdmin ca fonctionne. Ce n'est donc pas la requête qui pose problème mais plutôt les champs date_fin et ville qui ne doivent pas être correctement utilisé ou transmise pour permettre à la fonction DELETE de fonctionner.

Merci de votre aide.

Salutations.
Hors ligneAnthony Le 26/12/2005 à 22:56 Profil de Anthony Configuration de Anthony

Admin
fais un

echo "DELETE FROM agenda WHERE ville='$ville' AND date_fin='$date_fin'";

qu'on voit ce que ça donne
--

Hors ligneSalva Le 27/12/2005 à 00:49 Profil de Salva Configuration de Salva

Bonjour,

On avance, effectivement en faisant un "Echo" comme tu me l'as proposé j'ai l'affichage suivant :

DELETE FROM agenda WHERE ville='metz' AND date_fin=''

J'en conclu que la valeur date_fin n'est pas transmise et que le problème vient de là. Par contre je ne sais pas pourquoi.

As-tu une idée à ce sujet.

Merci

Salutations.
Hors ligneFulub Le 27/12/2005 à 08:53 Profil de Fulub Configuration de Fulub

Bonjour,

Je trouve ton script un peu compliqué, on gagne souvent à les simplifier.

J'ai aussi eu un problème similaire qui venait de mon éditeur quand je programmais sur mon portable.

Je sais c'est étonnant, mais en changeant d'éditeur j'ai résolu le problème!

Problème d'affichage je pense

Philippe

PS le design de ton site est réussi , il est très joli, mais il y a du boulot pour tout remplir.
Vous avez résolu votre problème avec VIC ? Faites-le savoir sur les réseaux sociaux !
Vulgarisation-informatique.com
Cours en informatique & tutoriels