Macfplus |
Le 16/05/2008 à 10:11 |
|
|
Bonjour, J'ai un souci d'updaite dans un formulaire de modification... J'appelle les données actuelles dans mon formulaire, la ok je les modifie dans le fomulaire Je valide... mon echo me dit que l'ordre n'a pas été executé... Mais je ne comprends pas pourquoi...
Je vous livre mon tit bout de code:
<?
include("sql.inc");
mysql_connect($host, $user, $pass);
mysql_select_db("$bdd")
or die("Ouverture base impossible");
{
$ID = (isset($_GET['ID'])) ? abs(intval($_GET['ID'])) : 0;
$mp3=mysql_query("SELECT * FROM mp3 WHERE ID=' $ID' ");
}
while ($donnees = mysql_fetch_array($mp3) )
{
?>
<table COLS=5 cellpadding="2" border="0"
style="text-align: center; width: 80%; margin-left: auto; margin-right: auto; border-collapse:collapse" bordercolor="#111111" align="left">
<tbody>
<tr>
<center><form method="post" action="modifier.php" name="">
<td style="vertical-align: top; width: 20%">
<p><b>Artiste<br></b></p>
<b>
<input type="text" name="Artiste" maxlength="50" size="20" value="<? echo $donnees['artiste'] ?>"></b></td>
<td style="vertical-align: top; width: 20%">
<p><b>Titre<br></b></p>
<b>
<input type="text" name="Titre" maxlength="50" size="20" value="<? echo $donnees['titre'] ?>"></b></td>
<td style="vertical-align: top; width: 20%">
<p><b>Visuel<br></b></p>
<b>
<input type="text" name="Visuel" maxlength="100" size="20" value="<? echo $donnees['img'] ?>"></b></td>
<td style="vertical-align: top; width: 20%">
<p><b>Mp3<br></b></p>
<b>
<input type="text" name="Mp3" maxlength="100" size="20" value="<? echo $donnees['son'] ?>"></b></td>
</tr>
</tbody>
</table>
<?
mysql_close;
}
?>
<br>
<center>
<p><b><input type="submit" name="submit" value="Modifier">
</b></p>
</form>
</center>
<?
if (isset($_POST['Artiste']) AND isset($_POST['Titre']) AND isset($_POST['Visuel']) AND isset($_POST['Mp3']))
{
if ($_POST['Artiste'] != NULL AND $_POST['Titre'] != NULL AND $_POST['Visuel'] != NULL AND $_POST['Mp3'] != NULL)
// $Artiste = mysql_real_escape_string(htmlspecialchars($_POST['Artiste']));
// $Titre = mysql_real_escape_string(htmlspecialchars($_POST['Titre']));
// $Visuel = mysql_real_escape_string(htmlspecialchars($_POST['Visuel']));
// $Mp3 = mysql_real_escape_string(htmlspecialchars($_POST['Mp3']));
include("sql.inc");
mysql_connect($host, $user, $pass);
mysql_select_db("$bdd")
or die("Ouverture base impossible");
{
$ID = (isset($_GET['ID'])) ? abs(intval($_GET['ID'])) : 0;
$mp3=mysql_query("SELECT * FROM mp3 WHERE ID=' $ID' ");
$mod=mysql_query("UPDATE mp3 SET artiste='$Artiste' ,titre='$Titre' ,img='$Visuel' ,son='$Mp3' WHERE ID=' ".$_GET['ID']."' ");
$ok=mysql_query($mod);
if ($ok){echo 'Données modifiées avec succès !';}
else {echo 'Impossible de modifier les données...';}
}
mysql_close;
}
?>
Si l'un d'entre vous pouvait m'aider ce serait sympa? Merci d'avance Bonne journée |
Anthony |
Le 16/05/2008 à 16:37 |
|
 Admin |
Salut  Tout ça :
if (isset($_POST['Artiste']) AND isset($_POST['Titre']) AND isset($_POST['Visuel']) AND isset($_POST['Mp3']))
{
if ($_POST['Artiste'] != NULL AND $_POST['Titre'] != NULL AND $_POST['Visuel'] != NULL AND $_POST['Mp3'] != NULL)
Remplace-le par ça (en supprimant une accolade fermante aussi) :
if (isset($_POST['Artiste'],$_POST['Titre'],$_POST['Visuel'],$_POST['Mp3']))
{
toutes les vérifs pour voir si c'est égal à NULL c'est inutile ;) Remplace aussi tous tes tags <? par <?php Ensuite en bas tu as la requête $mod=mysql_query("UPDATE mp3 SET artiste='$Artiste' ,titre='$Titre' ,img='$Visuel' ,son='$Mp3' WHERE ID=' ".$_GET['ID']."' "); mais d'où proviennent les variables $Artiste, $Titre, etc ... ? je ne les vois nul part dans ton script ;) Pour les requêtes MySQL, évite le SELECT *, mets plutôt le nom des champs dont tu as besoin (même si tu en as besoin de tous) : Optimiser MySQLTiens-nous au courant ;) -- 
|
Macfplus |
Le 16/05/2008 à 16:51 |
|
|
Anthony a écrit :Salut  Tout ça :
if (isset($_POST['Artiste']) AND isset($_POST['Titre']) AND isset($_POST['Visuel']) AND isset($_POST['Mp3']))
{
if ($_POST['Artiste'] != NULL AND $_POST['Titre'] != NULL AND $_POST['Visuel'] != NULL AND $_POST['Mp3'] != NULL)
Remplace-le par ça (en supprimant une accolade fermante aussi) :
if (isset($_POST['Artiste'],$_POST['Titre'],$_POST['Visuel'],$_POST['Mp3']))
{
toutes les vérifs pour voir si c'est égal à NULL c'est inutile ;) Hello! Tout d'abord, merci pour ton aide! En fait ta mofi ne me done pas d'accolade en moins, le nombre reste le meme, je dois en enlever une fermante quand meme? Remplace aussi tous tes tags <? par <?php ] Ensuite en bas tu as la requête $mod=mysql_query("UPDATE mp3 SET artiste='$Artiste' ,titre='$Titre' ,img='$Visuel' ,son='$Mp3' WHERE ID=' ".$_GET['ID' a écrit :."' "); mais d'où proviennent les variables $Artiste, $Titre, etc ... ? je ne les vois nul part dans ton script ;)
Ben... elle viennent du formulaire que j'ai plus haut,non? ] Pour les requêtes MySQL, évite le SELECT *, mets plutôt le nom des champs dont tu as besoin (même si tu en as besoin de tous) : [url=http://www.vulgarisation-informatique.com/optimiser-mysql.php a écrit :Optimiser MySQL[/url]
Tiens-nous au courant ;) Je vais corriger le code selon tes conseils en attendant de mieux comprendre ce souci de variables que tu évoques Au plaisir de te lire. Cordialement |
Anthony |
Le 16/05/2008 à 20:03 |
|
 Admin |
Si pour l'accolade fermante car je supprime toute la condition if($truc == NULL etc ... Sinon pour les variables si elles proviennent d'un formulaire, il faut utiliser $_GET['champ'] ou $_POST['champ'], tout est détaillé ici : Variables de formulaires et adresses Web en PHP-- 
|
Macfplus |
Le 21/05/2008 à 18:34 |
|
|
Re- Mais je comprends pas ta question... Bien sur que les variables proviennent du formulaire qui est plus haut... Appelées dans les Post situés plus bas... Le souci c'est que l'update ne se fait pas  Merci pour ton aide |
Anthony |
Le 21/05/2008 à 20:06 |
|
 Admin |
Fais un echo "UPDATE mp3 SET artiste='$Artiste' ,titre='$Titre' ,img='$Visuel' ,son='$Mp3' WHERE ID=' ".$_GET['ID']."' ";
et colle-le résultat dans phpmyadmin (onglet "sql") et vois ce que ça te renvoie ;) -- 
|
Macfplus |
Le 22/05/2008 à 16:16 |
|
|
Hello! Je n'ai pas encore testé ce que tu me conseilles, mais j'ai modifié ma requête en :
{
$ID = (isset($_GET['ID'])) ? abs(intval($_GET['ID'])) : 0;
$req = "UPDATE mp3 SET artiste='$Artiste',titre='$Titre',img='$Visuel',son='$Mp3' WHERE ID='$ID' ";
echo "REQUETE EFFECTUEE : ".$req."<br><br>";
$mod=mysql_query($req) or die(mysql_error());
$ok=mysql_query($mod);
if ($ok){echo mysql_error(), 'Données modifiées avec succès !';}
else {echo mysql_error();}
}
et ça me renvoie ceci:
REQUETE EFFECTUEE : UPDATE mp3 SET artiste='test atrtiste',titre='test titre',img='test visuel6',son='test mp3' WHERE ID='0'
Si je comprends bien, il considère que l'ID est 0 or, si je remplace 0 par 1 dans la ligne:
$ID = (isset($_GET['ID'])) ? abs(intval($_GET['ID'])) : 1;
, Alors le code me renvoie la requete faite sur l'ID 1 ... Pourtant j'utilise cette syntaxe dans 3 autres parties de mes pages pour cette base et ça fonctionne sans ce souci...  Merci pour ton aide. |