Suppression de données en php

Résolu/Fermé
ginger4957 Messages postés 37 Date d'inscription jeudi 12 juin 2008 Statut Membre Dernière intervention 3 mars 2009 - 5 févr. 2009 à 18:12
ginger4957 Messages postés 37 Date d'inscription jeudi 12 juin 2008 Statut Membre Dernière intervention 3 mars 2009 - 6 févr. 2009 à 14:28
Bonjour,
Je réalise un module d'administration en php, et je cherche à savoir ce qui ne fonctionne pas dans mon code que voici:

<?php
// on teste si la variable du formulaire est bien déclarée
if (isset($_POST['nomPropr'])) {
// on recherche le num&aecute;ro du contrat à supprimer
$sql = 'SELECT code_table FROM nom_table WHERE nom = "'.$_POST[nomPropr].'"';
// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
// on recupere le resultat sous forme d'un tableau
$data = mysql_fetch_array($req);
// on recupere la valeur qui nous intersse
$numero_contrat = $data['code'];
// on libère l'espace mémoire alloué pour cette interrogation de la base
mysql_free_result ($req);
// lancement de la requête pour effacer notre membre
$sql ='DELETE from proprietaire WHERE nom="'.$_POST['nom'].'"';
// on exécute la requête (mysql_query) et on affiche un message au cas où la requête ne se passait pas bien (or die)
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
// on ferme la connexion à la base
mysql_close();
// un petit message afin de voir ce qui s'est passé
echo 'Vous venez de supprimer '.$_POST['nomPropr'].' de la base.';
} else {
echo 'La variable du formulaire n\'est pas initialisée.';
}
?>

En effet, lorsque je teste la suppression, cela m'affiche toujours "La variable du formulaire n'est pas initialisée."
De plus je voudrais d'une part vérifier la suppression en demandant à l'utilisateur s'il désire réellement supprimer l'application ou non.

Quoi changer ?

COrdialement,
Ginger
A voir également:

4 réponses

bizu53 Messages postés 1274 Date d'inscription samedi 30 août 2008 Statut Membre Dernière intervention 21 juin 2015 859
5 févr. 2009 à 18:17
As-tu essayé if (isset($_POST["nomPropr"])) { ? (guillemets au lieu de simples cotes) ... je n'ai jamais bien compris la différence. À tester.

Sinon dans la ligne qui suit (mais ce serait un autre problème) tu as mis $_POST[nomPropr], il manque soit le $ si nomPropr est une variable, soit les guillemets.
0
william7007 Messages postés 335 Date d'inscription dimanche 28 décembre 2008 Statut Membre Dernière intervention 23 mars 2010 46
5 févr. 2009 à 19:07
bonsoir
ben excusez moi comme d'hab je suis l'oiseau de mauvais augure. mais voyons ce que nous avons là.

1.ben concernant l'initialisation de la variable de ton formulaire vérifie que la feuille qui fait appele à celle affichée ci dessus contient bien un champ dont la propriété name est (nomPropr). et avant de valider affecte une valeur à ce champ et là tu n'aura plus ton erreur.
2. je ne comprend pas un truc soit c'est moi qui lit mal mais je ne voie en aucun endroit où tu a déclarer la variable $nom (utilisée à la ligne $sql ='DELETE from proprietaire WHERE nom="'.$_POST['nom'].'"'; ).
3. lorsque j'analyse ta requete de sélection dans la base je voie que tu récupère un seul champ du nom de (code_table à la ligne $sql = 'SELECT code_table FROM nom_table WHERE nom = "'.$_POST[nomPropr].'"'; ) mais si je ne me trompe pas lorsque tu veux récuperer ce dernier (à la ligne $numero_contrat = $data['code']; ) tu utilise plus tôt un autre nom différent de celui que tu as sorti de ta requete code (code )

@bizu53 ben il n'y a pas de différence à utiliser les simples ou les doubles cotes avec PHP seulement il faut faire attention si tu utilise l'un laisse l'autre tu risquerais de te tromper en ouvrant un et en fermant plus tot l'autre. et au niveau de la gestion des bougues de l'apostrophe.

cdlt.
0
bizu53 Messages postés 1274 Date d'inscription samedi 30 août 2008 Statut Membre Dernière intervention 21 juin 2015 859
5 févr. 2009 à 19:38
Juste pour précision, il y a bien une différence, je pensais (car je l'avais toujours entendu) pareil avant de m'en rendre compte l'été dernier pendant mon stage sur une recherche du caractère 1 dans une chaîne. Le 1 ne passait pas parce qu'il était pris comme un entier (et donc le caractère de code 1), le '1' ne passait pas (je ne sais pas pourquoi), et le "1" passait bien. (Je vais voir si j'ai encore mon code pour que tu puisses t'en rendre compte, et ainsi donner l'exemple concret).
0
ginger4957 Messages postés 37 Date d'inscription jeudi 12 juin 2008 Statut Membre Dernière intervention 3 mars 2009 1
6 févr. 2009 à 09:53
Bonjour,

merci de vos réponses. La différence entre les simples et les doubles côtes est que les premières servent à ce que php interprète les valeurs.
Je renvoie mon code :


<?php
// on teste si la variable du formulaire est bien déclarée
if (isset($_POST['nomPropr'])) {
// on recherche le numéro du contrat à supprimer
$sql = 'SELECT codePropr FROM table WHERE nomPropr = "'.$_POST['nomPropr'].'"';
// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
// on récupere le resultat sous forme d'un tableau
$data = mysql_fetch_array($req);
// on recupere la valeur qui nous interesse
$numero_contrat = $data['codePropr'];
// on libère l'espace mémoire alloué pour cette interrogation de la base
mysql_free_result ($req);
// lancement de la requête pour effacer notre membre
$sql ='DELETE from proprietaire WHERE nomPropr="'.$_POST['nomPropr'].'"';
// on exécute la requête (mysql_query) et on affiche un message au cas où la requête ne se passait pas bien (or die)
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
// on ferme la connexion à la base
mysql_close();
// un petit message afin de voir ce qui s'est passé
echo 'Vous venez de supprimer '.$_POST['nomPropr'].' de la base.';
} else {
echo 'La variable du formulaire n\'est pas initialisée.';
}
?>

Je ne trouves toujorus pas...
0
ginger4957 Messages postés 37 Date d'inscription jeudi 12 juin 2008 Statut Membre Dernière intervention 3 mars 2009 1
6 févr. 2009 à 10:08
PS : Et comment faire pour afficher un message de confirmation (en php si possible) Ok ou Annuler ?
0
Psyk974 Messages postés 551 Date d'inscription lundi 2 février 2009 Statut Membre Dernière intervention 30 mars 2010 51
6 févr. 2009 à 10:51
Puis-je voir le code de ton formulaire ?
Pour un message de confirmation tu peux utiliser du Javascript dans le Onclick du bouton valider de ton formulaire.
0
ginger4957 Messages postés 37 Date d'inscription jeudi 12 juin 2008 Statut Membre Dernière intervention 3 mars 2009 1 > Psyk974 Messages postés 551 Date d'inscription lundi 2 février 2009 Statut Membre Dernière intervention 30 mars 2010
6 févr. 2009 à 12:23
Oui le voici :


Mon formulaire :

<?php
// connexion à la base de données
mysql_connect("localhost","root","tooreet");
mysql_select_db($database_conn_locasaison, $conn_locasaison);
echo //afficher tous les propriétaires
'<table border="0" cellspacing="3" cellpadding="5" id="logDispo">
<tr><td id="titre">Liste des propriétaires</td></tr>
<tr><td> </td></tr>
<tr id="soustitre">
<td>Nom</td>
<td>Prénom</td>
<td>Date de naissance</td>
<td>Numéro de rue</td>
<td>Nom de rue</td>
<td>Code postal</td>
<td>Ville</td>
<td>Téléphone fixe</td>
<td>Téléphone mobile</td>
<td>E-mail</td>
<td>Modification</td>
<td>Suppression</td></tr>
<tr><td> </td></tr>';
do { //afficher tant qu'il existe des enregistrements
echo '<tr>
<td>'.$row_rsProprietaire['nomPropr'].'</td>
<td>'.$row_rsProprietaire['prenomPropr'].'</td>
<td>'.$row_rsProprietaire['dateNaissPropr'].'</td>
<td>'.$row_rsProprietaire['numRuePropr'].'</td>
<td>'.$row_rsProprietaire['nomRuePropr'].'</td>
<td>'.$row_rsProprietaire['cpPropr'].'</td>
<td>'.$row_rsProprietaire['villePropr'].'</td>
<td>'.$row_rsProprietaire['fixePropr'].'</td>
<td>'.$row_rsProprietaire['mobilePropr'].'</td>
<td>'.$row_rsProprietaire['mailPropr'].'</td>
<td><a href="modifProprio.php?id='.$row_rsProprietaire['codePropr'].'">Modifier</a></td>
<td><a href="suppProprio.php?id='.$row_rsProprietaire['codePropr'].'">Supprimer</a></td></tr>';
}
while ($row_rsProprietaire = mysql_fetch_assoc($rsProprietaire));
echo '</table>';
?>
0
Psyk974 Messages postés 551 Date d'inscription lundi 2 février 2009 Statut Membre Dernière intervention 30 mars 2010 51 > ginger4957 Messages postés 37 Date d'inscription jeudi 12 juin 2008 Statut Membre Dernière intervention 3 mars 2009
6 févr. 2009 à 12:36
Heu ça ressemble pas à un formulaire ce que tu m'as donné lol.


<form name="nom_du_form" action="page.php" method="POST">

...

</form>
0
ginger4957 Messages postés 37 Date d'inscription jeudi 12 juin 2008 Statut Membre Dernière intervention 3 mars 2009 1 > Psyk974 Messages postés 551 Date d'inscription lundi 2 février 2009 Statut Membre Dernière intervention 30 mars 2010
6 févr. 2009 à 12:46
A la place je fais ça sur les lignes de la fin :

<?php
...

<td><a href="modifProprio.php?id='.$row_rsProprietaire['codePropr'].'">Modifier</a></td>
<td><a href="suppProprio.php?id='.$row_rsProprietaire['codePropr'].'">Supprimer</a></td></tr>';
?>

IL y a deux boutons d'envoi qui ne renvoient pas sur la même page c'est pour ça...
Sinon d'habitude par exemple quand il y a un seul bouton Envoyer, j'utilise un formulaire :


<form name ="formProprietaire" action="" method="POST">
<table>
...

<tr><td><input type="submit" value="Envoyer"></input>"
</table>
</form>
0
Psyk974 Messages postés 551 Date d'inscription lundi 2 février 2009 Statut Membre Dernière intervention 30 mars 2010 51 > ginger4957 Messages postés 37 Date d'inscription jeudi 12 juin 2008 Statut Membre Dernière intervention 3 mars 2009
6 févr. 2009 à 13:01
Voilà le lien que tu dois utiliser pour supprimer ton enregistrement dans la base.

<a href="suppProprio.php?id='.$row_rsProprietaire['codePropr'].'">Supprimer</a>

Dans ta page "suppProprio.php" tu dois appeler la variable $_GET.

En effet dans ton lien tu passes en paramètre l'identifiant du propriétaire.

ta condition sera alors

if (isset($_GET['id'])) {
//blabla
}
else {
echo 'Variable n'existe pas.';
}
0