Suppression ligne BD

Résolu/Fermé
Ibilolz Messages postés 130 Date d'inscription mardi 1 avril 2014 Statut Membre Dernière intervention 26 juin 2023 - Modifié par Ibilolz le 6/05/2014 à 11:39
sipherion Messages postés 1809 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 - 6 mai 2014 à 15:58
Bonjour, J'ai une table Salle qui est composé d'un id auto inc, num_salle, description et nombre_poste.

Je voudrais qu'à partir d'un champ de mon site je puisse supprimer une ligne de cette BD en rentrant le numéro de la salle à enlever.

J'ai donc écrit ce code mais apparemment il ne fait rien a ma BD. La connexion est fonctionnelle.

<FORM Method="POST" Action="">
        Numéro de la salle à supprimer : <input type="text" name="nums" size=10 <br></br>
        <br></br>
        <input type="submit", name="submit" Value="Supprimer"> 
<?php

include 'fonctions.connect.php';

if ($_POST['nums']!='')

{

$nums = $_POST['nums']; 
    
    $sql = "DELETE FROM Salle WHERE num_salle = '$nums'"; 

mysql_query($sql) or die(mysql_error()) ;

}

?></div></FORM>




De plus j'ai une table inventaire (num_salle,id_mat) qui montres du matériel dans des salles, je voudrais également rajouter un bout de code pour dire que si dans la salle il y a des choses dedans, impossible. Mais je ne sais pas comment faire. Merci d'avance.

13 réponses

sipherion Messages postés 1809 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
6 mai 2014 à 11:26
Bonjour ? Bonsoir ? Salut ?

Il manque un 's' à ta requête SQL

$sql = "DELETE FROM Salle WHERE num_salle = '$nums'"; 
0
Ibilolz Messages postés 130 Date d'inscription mardi 1 avril 2014 Statut Membre Dernière intervention 26 juin 2023
6 mai 2014 à 11:40
Merci bien, et désolé de ma précipitation du post... Seriez-vous comment je pourrais faire pour avoir un message qui bloque la suppression si une salle contient des ordinateurs (si dans emplacement elle est référencé)?
0
sipherion Messages postés 1809 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
Modifié par sipherion le 6/05/2014 à 12:08

$sql = "SELECT COUNT(*) FROM inventaire WHERE num_salle = '$nums'";
$req = mysql_query($sql) or die(mysql_error()) ;
$resultat=mysql_fetch_row($req)

if ($resultat[0] != 0) {
echo "Il y a du matériel dans cette salle !";
return;
}


"Il vaut mieux savoir tout chercher que chercher à tout savoir."
"Internet est en fait l'acronyme de : Imprévisible Noctambule Transportant un Ensemble de Ragots et de Nouvelles Eminemment Triviales"
0
Ibilolz Messages postés 130 Date d'inscription mardi 1 avril 2014 Statut Membre Dernière intervention 26 juin 2023
6 mai 2014 à 12:30
Si je présente le code comme ça, la page ne marche plus :

<?php

include 'fonctions.connect.php';

if ($_POST['nums']!='')
$nums = $_POST['nums']; 

{

$sql = "SELECT COUNT(*) FROM Salles WHERE num_salle = '$nums'";
$req = mysql_query($sql) or die(mysql_error()) ;
$resultat=mysql_fetch_row($req)

	if ($resultat[0] != 0) {
	echo "Il y a du matériel dans cette salle !";
	return;
	}
	
    
    $sql = "DELETE FROM Salle WHERE num_salle = '$nums'"; 

mysql_query($sql) or die(mysql_error()) ;

}

?>
0

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

Posez votre question
sipherion Messages postés 1809 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
Modifié par sipherion le 6/05/2014 à 13:37
Qu'est ce qui ne "marche" plus ? Quelles sont tes erreurs ?

$resultat=mysql_fetch_row($req)
il manque le ";"
if ($_POST['nums']!='')
$nums = $_POST['nums'];

{


Ce code n'a aucun sens. Tu créé toi même des erreurs par rapport à ton code précédent :

if ($_POST['nums']!='')
{
$nums = $_POST['nums'];

Il faut que tu mettes les codes
$sql = "DELETE FROM Salle WHERE num_salle = '$nums'"; 
et
mysql_query($sql) or die(mysql_error()) ;
dans un else qui suit ton accolade précédente, sinon ce code sera exécuté même si
if ($resultat[0] != 0)
est faux (normalement non à cause du return, mais on sait jamais ; j'utilise rarement "return").


if ($resultat[0] != 0) {
echo "Il y a du matériel dans cette salle !";
} else {
$sql = "DELETE FROM Salle WHERE num_salle = '$nums'";
mysql_query($sql) or die(mysql_error()) ;
}

Excuses moi de te poser cette question, mais est ce que tu comprends ce que tu fais ? parce là, tu fais des erreurs de quelqu'un qui vient juste de commencer à programmer, et si c'est le cas je te conseille fortement de suivre des cours de base en programmation PHP/SQL (via Openclassroom ou autres).

"Il vaut mieux savoir tout chercher que chercher à tout savoir."
"Internet est en fait l'acronyme de : Imprévisible Noctambule Transportant un Ensemble de Ragots et de Nouvelles Eminemment Triviales"
0
Ibilolz Messages postés 130 Date d'inscription mardi 1 avril 2014 Statut Membre Dernière intervention 26 juin 2023
6 mai 2014 à 13:41
Oui je comprend, je commence à programmer et j'ai fini mes tutoriels et cours ^^, c'est vrai que là dessus j'ai écris n'importe quoi.

J'ai donc ce code php

<?php

include 'fonctions.connect.php';

if ($_POST['nums']!='') 
{
$nums = $_POST['nums'];
$sql = "DELETE FROM Salle WHERE num_salle = '$nums'"; 
mysql_query($sql) or die(mysql_error()) ;
}

$sql = "SELECT COUNT(*) FROM Salle WHERE num_salle = '$nums'";
$req = mysql_query($sql) or die(mysql_error()) ;
$resultat=mysql_fetch_row($req);



	if ($resultat[0] != 0) {
	echo "Il y a du matériel dans cette salle !";
	return;
	}
	   

?>


Mais je peux toujours supprimer une salle qui contient des postes et avec la clé étrangères la ligne de la salle avec son poste part aussi de la table emplacement.
0
sipherion Messages postés 1809 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
6 mai 2014 à 13:46
OK, tu n'as pas vu que j'avais modifié plusieurs fois mes messages, c'est de ma faute.

Je vais te donner la solution, ça ira plus vite. Essayes ce code :


<?php

include 'fonctions.connect.php';

if ($_POST['nums']!='') {
$nums = $_POST['nums'];

$sql = "SELECT COUNT(*) FROM inventaire WHERE num_salle = '$nums'";
$req = mysql_query($sql) or die(mysql_error()) ;
$resultat=mysql_fetch_row($req);

if ($resultat[0] == 0) {
$sql = "DELETE FROM Salle WHERE num_salle = '$nums'";
mysql_query($sql) or die(mysql_error());
echo "La salle $nums a bien été supprimée";
} else {
echo "Impossible de supprimer la salle $nums : il y a du matériel dans cette salle !";
}

}
?>
0
Ibilolz Messages postés 130 Date d'inscription mardi 1 avril 2014 Statut Membre Dernière intervention 26 juin 2023
6 mai 2014 à 13:59
Je te remercie, tout marche bien, j'ai changé inventaire par emplacement et par contre j'ai encore un petit soucis, je ne peux plus supprimer les salles remplies, je peux supprimer celles pas remplies mais dans les deux cas j'ai pas de messages. Les echo n'ont pas l'air de fonctionner
0
sipherion Messages postés 1809 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
6 mai 2014 à 14:04
Je croyais qu'on ne devait pas pouvoir supprimer une salle qui avait du matériel à l'intérieur ? Et pourquoi la table "emplacement" ? C'est pas "inventaire" qui définit s'il y a du matériel dans les salles ?

0
Ibilolz Messages postés 130 Date d'inscription mardi 1 avril 2014 Statut Membre Dernière intervention 26 juin 2023
6 mai 2014 à 14:08
A la base c'est inventaire tu as raison, je ne sais plus pourquoi je l'ai renommé emplacement dans ma BD, à changer. Enfaite ce que j'ai voulu dire plus haut c'est que quand je supprime une salle (qui ne contient pas de matériel) je n'ai pas de message la salle ... à été supprimée. Et quand j'essaille de supprimer une salle qui contient du matériel, je clique et rien, il ne la supprime pas mais pas de messages non plus pour dire que c'est pas possible.
0
sipherion Messages postés 1809 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
Modifié par sipherion le 6/05/2014 à 14:25
Ca serait mieux de faire ça dans une page HTML complète :


<html>
<head>
</head>
<body>
<?php

include 'fonctions.connect.php';

if ($_POST['nums']!='') {
$nums = $_POST['nums'];

$sql = "SELECT COUNT(*) FROM inventaire WHERE num_salle = '$nums'";
$req = mysql_query($sql) or die(mysql_error()) ;
$resultat=mysql_fetch_row($req);

if ($resultat[0] == 0) {
$sql = "DELETE FROM Salle WHERE num_salle = '$nums'";
mysql_query($sql) or die(mysql_error());
echo "La salle $nums a bien été supprimée";
} else {
echo "Impossible de supprimer la salle $nums : il y a du matériel dans cette salle !";
}

} else {
?>
<FORM Method="POST" Action="">
Numéro de la salle à supprimer : <input type="text" name="nums" size=10 <br></br>
<br></br>
<input type="submit", name="submit" Value="Supprimer">
<!-- Puis tout le code HTML du formulaire -->
<?php
}
?>
</body>
</html>


Complète les morceaux manquants, notamment au niveau du commentaire en HTML

"Il vaut mieux savoir tout chercher que chercher à tout savoir."
"Internet est en fait l'acronyme de : Imprévisible Noctambule Transportant un Ensemble de Ragots et de Nouvelles Eminemment Triviales"
0
Ibilolz Messages postés 130 Date d'inscription mardi 1 avril 2014 Statut Membre Dernière intervention 26 juin 2023
Modifié par Ibilolz le 6/05/2014 à 14:27
Je comprends pas pourquoi tu as rajouté le sql2 et de quel formulaire tu parles
0
sipherion Messages postés 1809 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
6 mai 2014 à 15:58
J'ai retiré les requêtes sql2, c'était un test chez moi.

<FORM Method="POST" Action="">
C'est ça un formulaire. Il doit donc se terminer par la balise </FORM>
0