UPDATE + GET id
killermano66
Messages postés
249
Statut
Membre
-
dolmenhir Messages postés 251 Statut Membre -
dolmenhir Messages postés 251 Statut Membre -
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:
Page valid_modif.php :
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
?>
Page valid_modif.php :
<?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,
A voir également:
- UPDATE + GET id
- Windows update bloqué - Guide
- Winget update - Guide
- Get data back - Télécharger - Récupération de données
- Asus live update - Télécharger - Utilitaires
- Id telephone - Guide
4 réponses
salut
essaye ca
$requete_update = "UPDATE editorial SET titre='".$titre."' , contenue='".$contenu."' , auteur='".$auteur."' , date='".$date."' WHERE id=".$id;
ou
$requete_update = "UPDATE editorial SET titre='".$titre."' , contenue='".$contenu."' , auteur='".$auteur."' , date='".$date."' WHERE id=".$_GET['id'];
essaye ca
$requete_update = "UPDATE editorial SET titre='".$titre."' , contenue='".$contenu."' , auteur='".$auteur."' , date='".$date."' WHERE id=".$id;
ou
$requete_update = "UPDATE editorial SET titre='".$titre."' , contenue='".$contenu."' , auteur='".$auteur."' , date='".$date."' WHERE id=".$_GET['id'];
Donc,
La deuxième fonctionne trés bien :
$requete_update = "UPDATE editorial SET titre='$titre' , contenue='$contenu' , auteur='$auteur' , date='$date' WHERE id=".$_GET['id'];
Mais j'ai un petit soucis de compréhension aprés ça :
"UPDATE editorial SET titre='$titre' , contenue='$contenu' , auteur='$auteur' , date='$date' WHERE id="
Tu referme la commande UPDATE avant d'avoir déterminé le champ id et c'est ensuite que tu le rajoute. Donc ok, il y a concaténation mais je comprend pas pourquois le $_GET est pris en compte ici.
Enfin c'est juste dans un soucis de compréhension je déteste ne pas comprendre ce que je fais xD.
Merci beaucoup, ça règle mon problème ;)
La deuxième fonctionne trés bien :
$requete_update = "UPDATE editorial SET titre='$titre' , contenue='$contenu' , auteur='$auteur' , date='$date' WHERE id=".$_GET['id'];
Mais j'ai un petit soucis de compréhension aprés ça :
"UPDATE editorial SET titre='$titre' , contenue='$contenu' , auteur='$auteur' , date='$date' WHERE id="
Tu referme la commande UPDATE avant d'avoir déterminé le champ id et c'est ensuite que tu le rajoute. Donc ok, il y a concaténation mais je comprend pas pourquois le $_GET est pris en compte ici.
Enfin c'est juste dans un soucis de compréhension je déteste ne pas comprendre ce que je fais xD.
Merci beaucoup, ça règle mon problème ;)
Autre soucis maintenant avec la commande DELETE qui me renvois une erreur :
J'utilise donc la même méthode :
<?php
include("../../connection.php");
$requete_delete = 'DELETE FROM editorial WHERE id='.$_GET['id'];
$requete = mysql_query($requete_delete) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); // Renvoi une erreur en cas de problème.
echo("L'editorial a etait supprime<br />");
echo("Vous allez etre redirige vers le formulaire dans 3 secondes<br />");
echo("Si vous ne voulez pas attendre <a href='form_edito.php' alt='Formulaire'>Cliquez ici</a>");
header("Refresh: 3; URL=form_edito.php");
?>
Erreur générée :
Erreur SQL !
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
Donc j'ai tenté autrement :
mysql_query('DELETE FROM editorial WHERE id='' . $_GET['id'] . '');
Plus d'erreur mais rien ne se delete. Voilà, je comprend pas trop.
Merci encore.
J'utilise donc la même méthode :
<?php
include("../../connection.php");
$requete_delete = 'DELETE FROM editorial WHERE id='.$_GET['id'];
$requete = mysql_query($requete_delete) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); // Renvoi une erreur en cas de problème.
echo("L'editorial a etait supprime<br />");
echo("Vous allez etre redirige vers le formulaire dans 3 secondes<br />");
echo("Si vous ne voulez pas attendre <a href='form_edito.php' alt='Formulaire'>Cliquez ici</a>");
header("Refresh: 3; URL=form_edito.php");
?>
Erreur générée :
Erreur SQL !
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
Donc j'ai tenté autrement :
mysql_query('DELETE FROM editorial WHERE id='' . $_GET['id'] . '');
Plus d'erreur mais rien ne se delete. Voilà, je comprend pas trop.
Merci encore.
tu joues trop avec les parenthèses (
pas bon ça
dans l'ordre, la premier version fonctionne aussi
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 :
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
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
pas bon ça
dans l'ordre, la premier version fonctionne aussi
$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