Bonjour,
pour mon projet de bac je doit faire une page qui récupère les annonces de l’utilisateur et les afficher dans une liste déroulante. A fin de pour en sélectionner une puis la supprimer.
J’ai déjà fait un script mais il me marque qu’il y a une erreur à la “method post” mais je ne trouve pas c’est quoi.
Suppression d'une annonce
<?php
include('connexion.php');
echo'';
echo '
Choisissez une annonce à supprimer
';
echo'';
$sql = "SELECT Description FROM annonce where Type_anc='location'";
$resultat =mysql_query($sql);
while($ligne=mysql_fetch_array($resultat))
{
echo ''.$ligne["Description"].'';
}
?>
Pouvez vous maindiquer aussi comment utiliser la balise HEADer(location SVP !!
et tu peux même aussi rediriger l’utilisateur après un certain temps
header("Refresh : 3, ta_page.php");
Dans ce cas, le serveur va attendre 3 secondes avant de charger la page que tu as précisé. De même que le header("Location : ") tu peux passer des paramètres de la même manière :
Merci j’ai maintenant réussi a faire marcher la premiere page mais le souci c’est que quand je ve supprimer une annonce le script ne supprime pas mais il reconnait la valeur selectionner et me marque “erreur de suppression” ce qui correspond à mon message d’erreur “echo”.
<?php
include('connexion.php');
$n=$_POST["an"];
echo $n;
$req="delete * from annonce
where Type-anc='".$n."'";
$res=mysql_query($req);
if($req)
{
echo "Votre annonce de location a bien été supprimer !";
}
else
{
echo "La requête de suppression a échoué";
}
?>
<br /><br />
<a href="supvent.html">Supprimer une autre annonce de vente</a>
<br /><br />
<a href="menu.html">Retour au menu</a>
$req="delete * from annonce
where Type-anc='".$n."'";
Je pense que mySQL lit “where (((Type) - (anc)) = (‘xxx’))”
J’ai mis les parenthèses pour faire comprendre qu’il lit un “-” ce qui n’est pas valide syntaxiquement, et si tu as réellement ça comme nom de colonne, et que tu veux que ça le devienne deux solutions :
// si mode ANSI activé
$req= sprintf('delete from annonce where "Type-anc" = \'%s\'', mysql_real_escape_string($s));
// sinon
$req= sprintf('delete from annonce where `Type-anc` = \'%s\'', mysql_real_escape_string($s));
Note que dans ce cas, tu as une chance sur deux que mySQL soit sensible à la casse au niveau du nom de colonne (ie: si tu as définis Type_Anc, taper type_anc marcherait, mais type_anc risque de te faire une erreur nom de colonne inexistant).
J’utilise les singlequotes car je trouve ça mieux, libre à toi d’adapter.
J’utilise sprintf car c’est chiant de concaténer en PHP (et même dans d’autres langages)
J’utilise mysql_real_escape_string pour éviter une injection SQL.
Pour le header, normalement de mémoire, il faut fournir un chemin complet (ie: /xxx/toto.php?x=…) selon la RFC.