|
|
|
|
Salut,
J'ai crée un script qui permet de poster des éditoriaux, de les modifier ainsi que de les supprimer. Je vous met en dessous la partie modification. J'ai un problème au niveau de la validation.
Le script de la page modification.php liste les divers éditos et en cliquant sur les liens permet de les visionner sous formes de formulaire pour les modifier.
Jusqu'ici, tout va bien c'es au niveau de la validation et de la requete SQL UPDATE que j'ai un soucis :
Celle - ci :
$requete_update = ("UPDATE editorial
SET titre='$titre' , contenue='$contenu' , auteur='$auteur' , date='$date'");
Me modifie tous les éditos de ma base ce que je ne souhaite pas, je souhaite qu'elle n'en modifie que celui sélectionné.
J'ai testé comme ça :
$requete_update = ("UPDATE editorial
SET titre='$titre' , contenue='$contenu' , auteur='$auteur' , date='$date' WHERE id='$id' ");
$id étant égal à : $id = $_GET['id'];
Mais la rien ne se passe, et je notes aucunes modification dans ma base de données
Page modification.php:
<?php
include('../../connection.php'); //On se connecte à la base
if(isset($_GET['id'])){ //si la variable id existe
//Lien vers les editos prés a etre modifiés.
$requete_selection = mysql_query('SELECT *
FROM editorial
WHERE id='.$_GET['id']) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$donnees = mysql_fetch_array($requete_selection);
?>
<form action="valid_modif.php" method="post">
Titre :<input type="text" name="titre" value="<?php echo $donnees['titre']; ?>" /><br /><br />
Contenue : <br />
<textarea name="contenu" rows="30" cols="30" style="width: 50%">
<?php echo $donnees['contenue']; ?>
</textarea>
Auteur :
<input type="text" name="auteur" value="<?php echo $donnees['auteur']; ?>" /><br />
<input type="submit" value="Valider">
</form>
<?php
}
//Lien page modification
else {
$requete_selection = mysql_query('SELECT *
FROM editorial') or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
while ($donnees = mysql_fetch_array($requete_selection)){
echo '<a href="modification.php?id='.$donnees["id"].' ">';
echo $donnees['titre'] . '</a>' . ' ' . ' par ';
echo $donnees['auteur'] . '<br />';
}
}
mysql_close(); //On se déconnecte
?>
<?php
if ((empty($_POST['titre'])) OR (empty($_POST['contenu'])) OR (empty($_POST['auteur']))) //On teste si les champs sont bien remplis
{
//Un ou plusieurs champs sont vides
echo("Au moins un champ est vide, l'editorial n'a pas pu etre mis a jour");
}
else {
//Tous les champs sont bien renseignés
include ("../../connection.php/");
$titre = mysql_real_escape_string($_POST['titre']);
$contenu = mysql_real_escape_string($_POST['contenu']);
$auteur = mysql_real_escape_string($_POST['auteur']);
$date = time();
$id = $_GET['id'];
$requete_update = ("UPDATE editorial
SET titre='$titre' , contenue='$contenu' , auteur='$auteur' , date='$date' WHERE id='$id' ");
$requete = mysql_query($requete_update) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); // Renvoi une erreur en cas de problème.
echo("L'editorial a etait correctement mis a jour");
}
?>
Voilà voilà, si quelqu'un à une idée de la provenace de ce petit soucis. Merci bien.
Cordialement,
Configuration: Windows Vista Firefox 3.0.7
Salut
|
Donc,
|
Autre soucis maintenant avec la commande DELETE qui me renvois une erreur :
|
Tu joues trop avec les parenthèses (
$requete_update = "UPDATE editorial SET titre='".$titre."' , contenue='".$contenu."' , auteur='".$auteur."' , date='".$date."' WHERE id=".$id; a condition d'initialiser la variable $id en lui collant préalablement la valeur de $_GET['id']; la variable $_GET['id'] est prise en compte dans toute la page vers laquelle ladite variable a été envoyée je te conseille toutefois de changer de methode dans ton formulaire et d'utiliser plutot du $_POST car les variables n'apparaissent alors pas dans l'url bref, inutile d'initialiser une variable locale... $_POST['id'] ou $_GET['id'] feront bien l'affaire. Pour le DELETE essaye : $requete_delete = "DELETE FROM editorial WHERE id=".$_GET['id']; mais veille à ce que la variable id soit bien envoyée à la page sans quoi ça ne marchera pas si la valeur est vide petit conseil : utilise des champs invisible dans ton formulaire et donne leur les nom de "modifier" "ajouter" et "supprimer" donne leur une value="0" et utilise des bouton de type bouton et non pas submit pour enclencher une action a ces bouton, un script javascript changera la value du champs caché concerné par l'action attendue onClick="modifier.value=1;submit() l'action de ton formulaire renvoie à la page courante (le plus simple c'est d'y mettre un simple #) et dans ta page tu places tes scripts UDPATE, INSERT et DELETE que tu conditionnes à la valeur du champs caché passé en paramètre if($_POST['modifier']==1) {
$requete_update = "UPDATE editorial SET titre='".$titre."' , contenue='".$contenu."' , auteur='".$auteur."' , date='".$date."' WHERE id=".$_GET['id'];
etc...
}
ainsi si $_POST['modifier']==1 alors tu enclenches le script UPDATE et ainsi de suite d'où l'intérêt de n'utiliser qu'une method post plutot qu'une get |