[PHP] Update dans un formulaire

Tom -  
 Tom -
Bonjour,
J'essaye de pouvoir modifier les données de ma BDD depuis un formulaire, j'ai bien chercher sur CCM mais toutes les explications potentielle sont trop compliqué pour moi ...
J'ai sur ma page : image.php?var=552 :

<?php
if (isset($_POST['image'])   ) // Si les variables existent
{

        // D'abord, on se connecte à MySQL
		include("connexion.php"); 
 
        // On utilise les fonctions PHP mysql_real_escape_string et htmlspecialchars pour la sécurité
        $image = mysql_real_escape_string(htmlspecialchars($_POST['image']));
		
        // Ensuite on enregistre le message
        mysql_query("UPDATE Table SET image='$image'  WHERE id='".$_GET['var']."'     ");
 

}

// Tout d'abord le formulaire :
?>
<FORM method=post action="film_edit.php">

<TABLE BORDER=0>

<TR>
	<TD>Images</TD>
	<TD>
	<TEXTAREA rows="1" cols="40" name="image"></TEXTAREA>
	</TD>
</TR>
<TR>
	<TD COLSPAN=2>
	<br><br><INPUT type="submit" value="Envoyer">
	</TD>
</TR>
</TABLE>
</FORM>

Ce code ne marche pas actuellement, la problemme vient apparement du mysql_query

Merci de m'aider a modifier ma BDD grâce à ce formulaire

.
Configuration: Windows Vista
Firefox 3.5.5

8 réponses

  1. Pilow Messages postés 410 Statut Membre 71
     
    Bonjour

    As tu essayé en enlevant les ' ' autour de $id dans ta requete ?
    0
  2. le père
     
    Bonjour

    Le code de traitement de ton formulaire if (isset($_POST['image']) etc...
    semble être dans ta page image.php?var=552 d'après ce que tu dis.
    Mais il devrait être dans ta page "film_edit.php" car c'est ce script qui traite ton formulaire. C'est ce que veut dire le action="film_edit.php" dans la balise <form>
    De plus, post devrait être entre " dans ta balise <form method="post" ...

    Pour voir s'il y a des problèmes au niveau du mysql_query, ajoute à la fin entre la ) et le ; :
    or die (mysql_error());
    ça te dira s''il y a une erreur dans la requête
    0
  3. Tom
     
    je viens d'essayer :
    
     mysql_query("UPDATE Table SET image='$image'  WHERE id=".$_GET['var']."   ");
    
    

    mais ça ne fonctionne pas non plus.
    une idée ?
    0
  4. le père
     
    N'essaye pas d'ajouter ou d'ôter des apostrophes pour faire plaisir à quelqu'un qui te te demande : tu dois en mettre s'il en faut, et ne pas en mettre s'il n'en faut pas. La règle est très simple : si le champ est un nombre, tu peux t'en passer, si c'est autre chose (un texte), tu en mets. D'ailleurs, même si c'est un nombre, tu peux en mettre en fait.

    Le code que tu présentes est-il dans image.php?var=552 , dans film_edit.php ou en partie dans l'un et dans l'autre ?
    De toutes façons, tu as un problème dans ton form action=film_edit.php : quand tu envoies le formulaire, tu appelles film_edit.php alors qu'il faudrait appeler film_edit.php?var=552, sinon $_GET['var'] n'est plus défini quand tu traites le formulaire
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Pilow Messages postés 410 Statut Membre 71
     
    N'essaye pas d'ajouter ou d'ôter des apostrophes pour faire plaisir à quelqu'un qui te te demande


    Bon ben ok je dis plus rien -_-
    0
    1. le père
       
      Je te jure que je n'en ai pas après toi... Mais c'était une modif forcément inutile.
      0
      1. Pilow Messages postés 410 Statut Membre 71 > le père
         
        Perso j'ai déjà eu des erreurs en comparant un int avec une variable entre ' donc je propose on sait jamais

        Mais promis je dirai plus rien
        0
  7. Tom
     
    je me suis trompé en collant le script ici , en fait j'ai sur ma page image.php?var=552 :

    <?php
    if (isset($_POST['image'])   ) // Si les variables existent
    {
    		include("connexion.php"); 
         $image = mysql_real_escape_string(htmlspecialchars($_POST['image']));
    		
            // Ensuite on enregistre le message
            mysql_query("UPDATE Table SET image='$image'  WHERE id=".$_GET['var']." ") or die (mysql_error()); 
     
    
    }
    
    // Tout d'abord le formulaire :
    ?>
    <FORM method="post" action="image.php">
    
    <TABLE BORDER=0>
    
    <TR>
    	<TD>Images</TD>
    	<TD>
    	<TEXTAREA rows="1" cols="40" name="image"></TEXTAREA>
    	</TD>
    </TR>
    <TR>
    	<TD COLSPAN=2>
    	<br><br><INPUT type="submit" value="Envoyer">
    	</TD>
    </TR>
    </TABLE>
    </FORM>
    

    J'ai modifier ce que vous m'avez dit, mais, le probleme ne vient pas du formulaire mais de la ligne 61 soit la ligne du mysql_query ... ( si j'enleve les " j'ai une `T_STRING' error | et si je met les " j'ai une parse error )
    Merci de m'aider

    .
    0
  8. le père
     
    Non, il n'y a pas de parse error dans cette ligne :
    mysql_query("UPDATE Table SET image='$image' WHERE id=".$_GET['var']." ") or die (mysql_error());
    D'ailleurs, personne n'a parlé d'ôter les " mais les apostrophes qui entourent la valeur qu'il y a après id=

    As-tu lu mon explication du message 4 ? Dans le traitement du formulaire, tu utilises la valeur $_GET['var']
    Mais le formulaire n'envoie pas cette valeur : tu ne risques pas de la retrouver.
    0
  9. Tom
     
    Merci 'le père' , en effet le problème venait du FORM.
    Maintenant j'aimerais modifier 2 valeurs de ma table en même temps grâce au même formulaire . es-ce possible ?
    et qu'es-ce que ça donnerait au niveau du mysql_query ?

    Merci en tout cas pour vos réponse.
    0