Suppression de données en php
Résolu
ginger4957
Messages postés
37
Date d'inscription
Statut
Membre
Dernière intervention
-
ginger4957 Messages postés 37 Date d'inscription Statut Membre Dernière intervention -
ginger4957 Messages postés 37 Date d'inscription Statut Membre Dernière intervention -
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
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:
- Suppression de données en php
- Fuite données maif - Guide
- Forcer suppression fichier - Guide
- Supprimer les données de navigation - Guide
- Easy php - Télécharger - Divers Web & Internet
- Trier des données excel - Guide
4 réponses
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.
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.
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.
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.
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).
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...
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...
PS : Et comment faire pour afficher un message de confirmation (en php si possible) Ok ou Annuler ?
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>';
?>
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>';
?>
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>
<?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>
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.';
}
<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.';
}