Problème de DELETE FROM en phpmysql...

Fermé
Taku - 22 juin 2012 à 11:58
 Taku - 26 juin 2012 à 11:50
Bonjour,

Ça fait maintenant trois jours que je ne sais plus comment faire pour régler ce problème... Je m'explique :

Sur une de mes pages j'ai le code suivant :
?>
<tr valign=top><td><a href="Traitement.php?do=DelCon&con=<? echo $rowConcert['index']; ?>" onclick="return(confirm('Etes-vous sûr de vouloir supprimer cette entrée?'));"><font color=red>SUPPRIMER</font></a></td><td><? echo $Date; ?></td><td><? echo $rowConcert['Lieu']; ?></td><td><? echo $Heure; ?></td><td><? echo $rowConcert['Description']; ?></td><td><? echo $rowConcert['Entree']; ?></td></tr>
<?


Donc ce code me permet d'afficher tout ce qui vient de ma table Concerts et, lorsque l'on clique dessus, me renvoye sur ma page traitement.php avec deux variables : do (retourne DelCon et con (qui me retourne l'id de la video dans la table).

Jusque la tout fonctionne, mais sur traitement.php vient mon problème :
if ($do == "DelCon"){
	$con = @$_GET['con'];
	mysql_query("DELETE FROM Concerts WHERE index = '$con'");
	header('Location: admin.php');
	}


Donc, après vérif, ce n'est pas un problème de la variable $do.... Car j'entre dans le if. C'est donc ma requête qui ne veut pas aboutir. Je vous prévient déjà que j'ai, je pense, essayer toutes les façon du monde avec les guillemets et que rien n'y fait. Il y a un autre point louche, sur la même page il y'a ce petit bout de code :
if ($do == "DelVid"){
	$vid = @$_GET['vid']."%";
	mysql_query("DELETE FROM Videos WHERE lien LIKE '$vid'");
	header('Location: admin.php');    
	}


qui la, lui, fonctionne parfaitement de la meme manière, à la seul différence que j'utilise un like et rajoute un % après ma variable.

Je ne comprend vraiment rien... AU SECOURS T_T
A voir également:

13 réponses

Utilisateur anonyme
22 juin 2012 à 22:58
Bonjour

WHERE index = '$con'");
Index est un mot réservé, si tu testais le résultat de la requête tu verrais qu'il y a une erreur
Soit tu changes le nom du champ index, soit tu l'entoures d'accents graves (touche Altgr 7)
0
D'accord merci beaucoup (les guillement spéciaux n'y on rien fait mais après changement de l'index, tout va mieux...)

Je me permet de poser une autre question... Même cas de figure mais cette fois :

if ($do == "Texte"){ 
 $Texte = @$_POST['Texte'] ; 
 mysql_query("UPDATE Article SET Accueil = '$Texte'"); 
 header('Location: admin.php'); 
 } 


Je sèche également la dessus... Mon update ne fonctionne pas... Désoler...
0
Utilisateur anonyme
23 juin 2012 à 15:41
i
f (isset($_POST['Texte'])) {
$Texte = mysql_real_escape_string($_POST['Texte']) ; 
...
}

Car s'il y a des apostrophes dans $_POST['Texte'], ta requête devient incorrecte.
Il faut aussi ABSOLUMENT que tu ajoutes une condition WHERE à ton update, sinon, ce sont tous les champs Accueil qui vont prendre la nouvelle valeur en même temps. Je doute que ce soit l'effet recherché.

les guillement spéciaux n'y on rien fait Mais si ça marche, tu n'avais pas dû les mettre au bon endroit.
0
Merci de prendre du temps pour me répondre :) Néanmoins ma requête ne fonctionne toujours pas... Une autre idée ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
23 juin 2012 à 15:55
Pourquoi ne mets tu rien pour essayer de comprendre l'erreur ?
mysql_query("UPDATE Article SET Accueil = '$Texte'") or die(mysql_error());
0
Il faut vraiment que je m'y remette, je ne me souvenais plus de ce genre de chose. Malheureusement il me dit le fameux error avec le field list :

Unknown column 'Accueil' in 'field list'

après recherche je n'ai toujours pas trouver d'ou cela pourrait venir. Si j'ai bien compris, il ne trouve pas mon champs accueil dans ma table ? Pourtant après vérification tout est correcte du coté de la base de donnée... Je nage T__T
0
Utilisateur anonyme
26 juin 2012 à 10:45
accueil ou Accueil ? Attention aux majuscules / minuscules
0
Non non effectivement c'est juste c'est bien avec une majuscule :)
0
Utilisateur anonyme
26 juin 2012 à 11:27
mysql se trompe rarement, s'il te dit que ce champ n'existe pas, c'est très très très probablement qu'il n'existe pas. J'estime la probabilité à 100% ^^

C'est bien dans la table Article ?

Peux-tu donner la définition de ta table (obtenue avec la fonction exporter de phpmyadmin par exemple)
0
CREATE TABLE IF NOT EXISTS 'Article' (
  'IdArticle' int(11) NOT NULL AUTO_INCREMENT,
  'Titre' text NOT NULL,
  'Contenu' text NOT NULL,
  PRIMARY KEY ('IdArticle')
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;

--
-- Contenu de la table 'Article'
--

INSERT INTO 'Article' ('IdArticle', 'Titre', 'Contenu') VALUES
(1, 'Accueil', 'Tr?®s jeune, elle ?©tudie la guitare classique et le chant lyrique pour lequel elle obtient en <b>1981 un Dipl?¥me professionne [...]


Voila, j'ai juste tronquer le contenu (long).
0
Utilisateur anonyme
26 juin 2012 à 11:40
Effectivement, tu n'as pas de champ Accueil

¨Tu as des champs idArticle, Titre et Contenu

Le mot 'Accueil' que tu vois n'est pas le nom d'un champ, mais la valeur contenue dans un champ.
0
Utilisateur anonyme
26 juin 2012 à 11:44
Je pense que ce que tu cherchais à faire c'est

$Texte = mysql_real_escape_string($_POST['Texte']) ;
mysql_query("UPDATE Article SET Contenu = '$Texte'" WHERE Titre='Accueil' );
Mais ce n'est pas logique de sélectionner un enregistrement par le champ 'Titre' plutôt que par IdArticle.
0
champs... Titre... Where... Accueil... J'ai honte... MERCI !!!
0
Utilisateur anonyme
26 juin 2012 à 11:45
Tu as vu que j'ai posté en même temps que toi ?
0
Haha oui :p encore merci, et je vais chercher par l'id du coup :)
0