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.