Effacer ligne base de données

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics

Stefano
WRInaute impliqué
WRInaute impliqué
 
Messages: 269
Inscription: Dim Fév 12, 2006 11:09

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 passionné
WRInaute passionné
 
Messages: 684
Inscription: Dim Avr 30, 2006 18:42

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 impliqué
WRInaute impliqué
 
Messages: 269
Inscription: Dim Fév 12, 2006 11:09

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: 2656
Inscription: Lun Juil 28, 2003 15:58

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: 3062
Inscription: Jeu Sep 14, 2006 4:53

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 passionné
WRInaute passionné
 
Messages: 684
Inscription: Dim Avr 30, 2006 18:42

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 impliqué
WRInaute impliqué
 
Messages: 269
Inscription: Dim Fév 12, 2006 11:09

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: 13867
Inscription: Mar Déc 23, 2003 9:04

Message le Jeu Mai 29, 2008 12:48

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

Stefano
WRInaute impliqué
WRInaute impliqué
 
Messages: 269
Inscription: Dim Fév 12, 2006 11:09

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: 13867
Inscription: Mar Déc 23, 2003 9:04

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: 3062
Inscription: Jeu Sep 14, 2006 4:53

Message le Jeu Mai 29, 2008 13:26

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


webac
WRInaute impliqué
WRInaute impliqué
 
Messages: 359
Inscription: Ven Mar 04, 2005 17:30

Message le Jeu Mai 29, 2008 13:28

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


mahdivitche
WRInaute passionné
WRInaute passionné
 
Messages: 902
Inscription: Dim Jan 06, 2008 0:33

Message le Jeu Mai 29, 2008 13:33

peut étre le probleme dans la relation des tables


seebz
WRInaute impliqué
WRInaute impliqué
 
Messages: 480
Inscription: Dim Avr 15, 2007 17:14

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 impliqué
WRInaute impliqué
 
Messages: 269
Inscription: Dim Fév 12, 2006 11:09

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

Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :

Consultez la description détaillée des produits ou services de Google suivants : Google Base

  • Suggestion de mots-clés Google
    Cet outil vous permet d'obtenir une liste de 10 mots ou expressions suggérés par Google sur la base d'un mot que vous fournissez.


Qui est en ligne

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