Effacer ligne base de données

Stefano
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 273
Inscription: 12 Fév 2006

Effacer ligne base de données

Message le Jeu Mai 29, 2008 12:00

Bonjour,

Je préviens que je suis un autodidacte (encore niveau débuttant) en php.

Voici mon problème j'ai créé un petit script php avec un formulaire pour pouvoir mettre en ligne des actualités.

Il marche très bien. Or, pour l'instant dès que l'événement est passé je me connecte à la base de données et je l'efface manuellement. Mais ce n'est pas très pratique. Je pensais donc créer un petit formulaire où écrire l'id de l"actualité à effacer.

Voici mes problème :

le petit script pour effacer, pourtant banale ne marche pas du tout :

Code: Tout sélectionner
<?php
define('CONF_ONLY', true);
include("./config.php");
mysql_connect($dbhost , $dbuser , $dbpasswd);
mysql_select_db($dbname);
$sql = 'DELETE * FROM `t_mus` WHERE `idann` ='$id' ;';
$result = mysql_query($sql);   
if($result)
{
echo("La suppression à été correctement effectuée") ;
}
else
{
echo("La suppression à échouée") ;
}

     mysql_close();
?>


Il se connecte bien à la base de données mais :

- il n'efface rien du tout. Si je remplace '$id' par l'id de l'actu à supprimer rien ne se passe. Et pourtant le même script avec select affiche les infos de cette table.

- deuxième gros problème. Si j'arrive à faire marche cette instruction, je ne sais pas comment relier ce script à un formulaire pour que je lui donne l'id à supprimer.

Si vous avez des suggestions, je vous en remercie par avance.

FloBaoti
WRInaute impliqué
WRInaute impliqué
 
Messages: 755
Inscription: 30 Avr 2006

Message le Jeu Mai 29, 2008 12:24

Ton problème est le SQL à priori, pas le PHP.

Un DELETE en SQL supprime forcément toute une "ligne", donc il ne faut pas spécifier les champs à supprimer.
La syntaxe est donc : DELETE FROM table WHERE condition;

Stefano
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 273
Inscription: 12 Fév 2006

Message le Jeu Mai 29, 2008 12:42

Bonjour,

t_mus est la table, je n'ai justement pas spécifié le champs.

J'ai donc élimine le *

$sql = 'DELETE FROM `t_mus` WHERE `idann` =$id;';

Mais cela ne marche pas :(


BadProcESs
WRInaute accro
WRInaute accro
 
Messages: 2657
Inscription: 28 Juil 2003

Message le Jeu Mai 29, 2008 12:43

As-tu un message d'erreur ?
As-tu essayé de tester la requête dans l'administration de la base de données ?


YoyoS
WRInaute accro
WRInaute accro
 
Messages: 3827
Inscription: 14 Sep 2006

Message le Jeu Mai 29, 2008 12:44

Toujours essayer sa requête dans un simple client sql avant toute intégration au code, et ceci pour n'importe quel langage. ex: l'onglet sql de phpmyadmin

FloBaoti
WRInaute impliqué
WRInaute impliqué
 
Messages: 755
Inscription: 30 Avr 2006

Message le Jeu Mai 29, 2008 12:46

* signifie tous les champs en SQL. Donc tu avais bien spécifié "tous les champs".

Ensuite, une erreur PHP : '$id'
La concaténation se fait avec des points : '.$id.'

Stefano
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 273
Inscription: 12 Fév 2006

Message le Jeu Mai 29, 2008 12:48

As-tu essayé de tester la requête dans l'administration de la base de données ?


DELETE FROM `t_mus` WHERE `idann` =6

comme ça, ça marche....
Dernière édition par Stefano le Jeu Mai 29, 2008 12:49, édité 1 fois.


e-kiwi
Modérateur
Modérateur
 
Messages: 15546
Inscription: 23 Déc 2003

Message le Jeu Mai 29, 2008 12:48

il te suffit de faire echo $sql en php pour voir ton erreur ;)

Stefano
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 273
Inscription: 12 Fév 2006

Message le Jeu Mai 29, 2008 13:22

il te suffit de faire echo $sql en php pour voir ton erreur

Merci,

Mais rien ne s'affiche. Voilà tout le code dans post.php:

Code: Tout sélectionner
<?php
include("/config.php");

// Insertion dans la base
$id = $_GET["idann"];     
mysql_connect($dbhost , $dbuser , $dbpasswd);
mysql_select_db($dbname);

$sql = 'DELETE FROM `t_mus` WHERE `idann` =$id LIMIT 1;';
$result = mysql_query($sql);   
if($result)
{
echo("La suppression à été correctement effectuée") ;
}
else
{
echo("La suppression à échouée") ;
}

mysql_close();
?>


Il ne reconnait pas idann, car si je remplace le bon chiffre
ça marche.

L'idann est fourni par un formulaire :

Code: Tout sélectionner
<form name="f2" onSubmit="return check2()"  METHOD="POST" ACTION="form.php">
<table border=0 cellpadding=3 width="549" align="center" cellspacing="0" bgcolor="#e8e8e8">
<tr>
<td width="144"><span style="font-size: 10pt;"><font face="Arial"><b>ID</b> :</td>
<td width="387">
<input type="text" name="idann" value="" size=30>
</td>
</tr>
<tr>
<td width="144">
<input type="reset" name="reset" value="Effacer">
</td>
<td align=RIGHT width="387">
<input type="submit" name="  O K  " value="  OK !  ">
</td>
</tr>
</table>
</form>



Peut-être que le problème est là.

Est-ce la fonction $_get qui récupère l'information ?

Merci encore.


e-kiwi
Modérateur
Modérateur
 
Messages: 15546
Inscription: 23 Déc 2003

Message le Jeu Mai 29, 2008 13:24

>> $sql = 'DELETE FROM `t_mus` WHERE `idann` =$id LIMIT 1;';

apres ca tu met : echo $sql;

et tu aura ta requete telle qu'elle est éxécutée (et tu verras que $id est à la palce de sa valeur)


YoyoS
WRInaute accro
WRInaute accro
 
Messages: 3827
Inscription: 14 Sep 2006

Message le Jeu Mai 29, 2008 13:26

Tu vas la mettre ta requete dans phpmyadmin ou pas ? lol


webac
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 373
Inscription: 4 Mar 2005

Message le Jeu Mai 29, 2008 13:28

REMPLACE
$id = $_GET["idann"];
PAR
$id = $_POST["idann"];

mahdivitche
WRInaute impliqué
WRInaute impliqué
 
Messages: 967
Inscription: 6 Jan 2008

Message le Jeu Mai 29, 2008 13:33

peut étre le probleme dans la relation des tables


seebz
WRInaute impliqué
WRInaute impliqué
 
Messages: 808
Inscription: 15 Avr 2007

Message le Jeu Mai 29, 2008 13:56

Simple quote , double quote !

Code: Tout sélectionner
$sql = "DELETE FROM `t_mus` WHERE `idann`=$id";

Stefano
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 273
Inscription: 12 Fév 2006

Message le Jeu Mai 29, 2008 13:57

Tu vas la mettre ta requete dans phpmyadmin ou pas ? lol


Oui, je l'ai fait et donc ce n'est pas un problème de requête :

As-tu essayé de tester la requête dans l'administration de la base de données ?



DELETE FROM `t_mus` WHERE `idann` =6

comme ça, ça marche...
.


$sql = 'DELETE FROM `t_mus` WHERE `idann` =$id LIMIT 1;';

apres ca tu met : echo $sql;


DELETE FROM `t_mus` WHERE `idann` =$id LIMIT 1;La suppression à échouée :(

$id = $_GET["idann"];
PAR
$id = $_POST["idann"];


très bonne suggestion car si je mets echo $id apparait le bon chiffre donc on est sur la bonne voie et je me demande pourquoi quand il se trouve après idann= il n'est pas remplacé :x

Effacer ligne base de données

Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités