Supprimer information

Mammouth du PHP | 536 Messages

13 juin 2006, 09:13

Bonjour tout le monde, je ne sais pas pourquoi avec ce code je n'arrive pas a supprimer les informations qui sont dans les différentes tables.

Voila mon code :
<?php
/*********************************************************************/
/*				  Script d'administration de stage				     */
/*********************************************************************/

require ("../../../connexion.php");


	//$contenu=$_POST['contenu'];
$query5 = "SELECT * FROM demande_emploi";
$resultat5 = mysql_query($query5);
$id = $_POST['id'];
$nom_etudiant = $_POST['nom_etudiant'];
$nom_cv = $_POST['nom_cv'];

$query6 = "SELECT * FROM cv";
$result6 = mysql_query($query6);			
				
$query2 = "DELETE FROM `cv` WHERE $nom_etudiant=`cv`.`nom_etudiant` AND $nom_cv=`cv`.`nom_cv`";
$result2 = mysql_query($query2);
if ($result2)
{
	$query = "DELETE FROM demande_emploi WHERE id='$id'";
	$result = mysql_query($query);
	if ($result)
	{
	
		if (unlink("../../../etudiant/depot/cv/$nom_cv"))
		{
		echo "le CV correspondant à cette demande a bien été supprimée"; 
		}
		else 
		{
		echo "impossible de supprimer le CV correspondant à cettte demande";
		}
	} else echo "impossible de suppr dans la table demande_emploi<br>";
} else echo "impossible de suppr dans la table cv<br>";

mysql_close($db);
echo "vos données ont bien été supprimées, veuillez à présent cliquer <a href=\"index.php\">ici</a>";
?>
En fait, quand j'éxecute ce script j'ai le message
impossible de suppr dans la table cv
ce qui signifie qu'aucune requète n'est éxécutée pourtant leur syntaxe est bonne?
Un prof désespéré à son élève :
- Et maintenant, dessinez-moi un cercle au tableau... Voila... Alors qu'est-ce que c'est?
- Ben un cercle ?
- Non, c'est votre note, sortez !!

Mammouth du PHP | 1353 Messages

13 juin 2006, 09:15

Tu t'obstines a ne pas mettre les or die(mysql_error()) à la fin de tes query, pourtant on te le dit à chaque fois ;)

Sinon comme d habitude : as tu fais un echo $query2; pour voir si la requete fonctionne etc etc .....

Le probleme ici est

$query2 = "DELETE FROM `cv` WHERE $nom_etudiant=`cv`.`nom_etudiant` ....

Je pense que $nom_etudiant n est pas un nom de champ de ta table....

(avec un echo de la requete tu l aurai vu :) )
Modifié en dernier par guilt92 le 13 juin 2006, 09:17, modifié 1 fois.
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Mammouth du PHP | 536 Messages

13 juin 2006, 09:16

oui c'est vrai j'y pense jamais
Un prof désespéré à son élève :
- Et maintenant, dessinez-moi un cercle au tableau... Voila... Alors qu'est-ce que c'est?
- Ben un cercle ?
- Non, c'est votre note, sortez !!

Mammouth du PHP | 536 Messages

13 juin 2006, 09:21

je viens, d'ajouter les echo et or die(mysql_error()) et j'ai le message suivant
Unknow table 'demande_emploi' in where clause
Un prof désespéré à son élève :
- Et maintenant, dessinez-moi un cercle au tableau... Voila... Alors qu'est-ce que c'est?
- Ben un cercle ?
- Non, c'est votre note, sortez !!

Mammouth du PHP | 1353 Messages

13 juin 2006, 09:21


Le probleme est

$query2 = "DELETE FROM `cv` WHERE $nom_etudiant=`cv`.`nom_etudiant` ....

Je pense que $nom_etudiant n est pas un nom de champ de ta table....
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Mammouth du PHP | 536 Messages

13 juin 2006, 09:23

j'ai changé et j'ai mis ca :
$query2 = "DELETE FROM cv WHERE demande_emploi.nom_etudiant=cv.nom_etudiant AND demande_emploi.nom_cv=cv.nom_cv";
$result2 = mysql_query($query2) or die(mysql_error());
echo $query2;
et j'ai ce mesage d'erreur
Un prof désespéré à son élève :
- Et maintenant, dessinez-moi un cercle au tableau... Voila... Alors qu'est-ce que c'est?
- Ben un cercle ?
- Non, c'est votre note, sortez !!

Mammouth du PHP | 1353 Messages

13 juin 2006, 09:24

Unknow table 'demande_emploi' in where clause
La table est inconnue... Il faut l ajouter dans le FROM :


$query2 = "DELETE FROM cv, demande_emploi WHERE demande_emploi.nom_etudiant=cv.nom_etudiant AND demande_emploi.nom_cv=cv.nom_cv";
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Mammouth du PHP | 536 Messages

13 juin 2006, 09:25

oui mais je ne veux pas que ca supprime dans la table demande_emploi.
Si je la rajoute dans le FROM, ca va suppr dans a table demande_emploi non?
Modifié en dernier par béka le 13 juin 2006, 09:33, modifié 1 fois.
Un prof désespéré à son élève :
- Et maintenant, dessinez-moi un cercle au tableau... Voila... Alors qu'est-ce que c'est?
- Ben un cercle ?
- Non, c'est votre note, sortez !!

Mammouth du PHP | 1353 Messages

13 juin 2006, 09:33

Euh d'ailleurs je ne suis meme pas sur que tu puisses mettre plusieurs nom de tables dans une requete DELETE. Désolé.

Si tu peux utiliser les sous requetes cela peut constituer une solution, sinon tu peux faire un SELECT avant pour connaitre le nom de l étudiant a supprimer puis le supprimer après dans la table.
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Mammouth du PHP | 536 Messages

13 juin 2006, 09:34

je vois pas ce que tu veux dire
le nom de l'étudiant je le connais, c'est une variable que j'obtiens avec $_POST
Modifié en dernier par béka le 13 juin 2006, 09:35, modifié 1 fois.
Un prof désespéré à son élève :
- Et maintenant, dessinez-moi un cercle au tableau... Voila... Alors qu'est-ce que c'est?
- Ben un cercle ?
- Non, c'est votre note, sortez !!

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

13 juin 2006, 09:35

Pour commencer, explique nous ce que tu veux supprimer parce que quand je regarde la clause WHERE de ta requete, je me demande si tu veux réellement supprimer autant de cv :-k
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 536 Messages

13 juin 2006, 09:39

je veux supprimer une annonce déposée par un etudiant (qui est donc stockée dans la table 'demande_emploi') et supprimer le cv correspondant a cette demande (stocké dans le répertoire cv/ et dont les informations sont stockées dans la table 'cv').
Oui je vois ce que tu veux dire zeus quand tu dis "je ne pense pas que tu veux réellement supprimer autant de cv" et c'est pour ca que j'avais utilisé au début la variable $nom_etudiant qui correspondait uniquement à un élève, celui que je voulais supprimer
Un prof désespéré à son élève :
- Et maintenant, dessinez-moi un cercle au tableau... Voila... Alors qu'est-ce que c'est?
- Ben un cercle ?
- Non, c'est votre note, sortez !!

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

13 juin 2006, 10:00

ok, dans ce que t'as dit guilt92, il est interdit de mettre une valeur à gauche du signe =
$query2 = "DELETE FROM `cv` WHERE `cv`.`nom_etudiant` = '".$nom_etudiant."'";
Sinon, tu es déseperant : on passe des heures à chaque fois à t'expliquer les mêmes choses :
-
or die(mysql_error())
déjà dit dans le post
- extraire les chaines des variables
"nom_etudiant` = '".$nom_etudiant."'"
plutot que
"nom_etudiant` = '$nom_etudiant'"
- encadrer les chaines par des ' dans une requete
- rechercher sur le forum et/ou sur le net. Ton message d'erreur était très significatif
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 536 Messages

13 juin 2006, 11:01

voila mon nouveau code
<?php
/*********************************************************************/
/*				  Script d'administration de stage				     */
/*********************************************************************/

require ("../../../connexion.php");


	//$contenu=$_POST['contenu'];
$query5 = "SELECT * FROM demande_emploi";
$resulta = mysql_query($query5) or die(mysql_error());
$id = $_POST['id'];
while ($row = mysql_fetch_array($resulta)) { 
$nom_etudiant = ($row['nom_etudiant']);
}

//$query6 = "SELECT * FROM cv";
//$result6 = mysql_query($query6);			
				
$query2 = "DELETE FROM `cv` WHERE `cv`.`nom_etudiant` = '".$nom_etudiant."'";
$result2 = mysql_query($query2) or die(mysql_error());
echo $query2;
if ($result2)
{
	$query = "DELETE FROM `demande_emploi` WHERE `id`='".$id."'";
	$result = mysql_query($query) or die(mysql_error());
	if ($result)
	{
	
		if (unlink("../../../etudiant/depot/cv/".$nom_cv.""))
		{
		echo "le CV correspondant à cette demande a bien été supprimée"; 
		}
		else 
		{
		echo "impossible de supprimer le CV correspondant à cettte demande";
		}
	} else echo "impossible de suppr dans la table demande_emploi<br>";
} else echo "impossible de suppr dans la table cv<br>";
mais avec ceci, je n'arrive pas a supprimer le fichier cv qui est dans le répertoire cv pourtant il s'agit de la bonne fonction unlink() ?
Un prof désespéré à son élève :
- Et maintenant, dessinez-moi un cercle au tableau... Voila... Alors qu'est-ce que c'est?
- Ben un cercle ?
- Non, c'est votre note, sortez !!