Page 1 sur 1

Probleme avec fonction update

Posté : 26 mai 2005, 11:29
par kjbstar
Hello à tous :)

Voilà, je ne sais pas pourquoi, mais la fonction update et moi , on s'aime pas... ^^
Afin de modifier le nom d'une catégorie dans la zone admin d'un site, j'ai procédé de la maniere suivante:

Formulaire:

Code : Tout sélectionner

<form method="POST"> <font class='a1'><strong>Modifier une catégorie:</font></strong> <TABLE class=design bgColor=#ffffff cellPadding=1 cellSpacing=0 width=600 border='1' BORDERCOLOR="#C0C0C0" STYLE="border-collapse: collapse"> <TR> <TD class='a1' width=80><strong>ID: <INPUT maxLength=2 size=2 name=idcat></font></strong></td> <TD class='a1'><b>Nouveau nom:</b> <INPUT maxLength=50 size=30 name=newnom></font>&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" alt="submit2" value="Valider la modification" width="66" height="20" hspace="5" vspace="5" border="0"></td></font> </tr> </table> </form>
Code PHP:
       if(isset($_POST['idcat'])){

               $sql2 = 'UPDATE catz SET nomcat='.$_POST['newnom'].' WHERE id='.$_POST['idcat'].'';
                $result2 = mysql_query($sql2) or die( mysql_error() );
                if ($result2){
                          echo "<font color=red>Catégorie correctement modifiée dans la base de données ! :)</font><br>";
                }
                        }
Sachant que j'affiche un listing des categories avec leur ID.
Ainsi, pour faire la modification, il suffit d'entrer l'ID de la categorie que l'on souhaite modifier, ainsi que le nouveau nom désiré.
Malheureusement, à la validation, j'obtient un "Unknown column 'Nouveau nom de categorie' in 'field list'
Il croit donc que je tape un nom de champs, et j'avoue que je comprend pas du tout quelle est mon erreur... :'(

Si quelqu un avait une idée ^^
Merci !

kjb

Posté : 26 mai 2005, 11:45
par Cyrano
Salut,
indente correctement ton code et aère-le aussi, ça évite bien des surprises:
<?php
if(isset($_POST['idcat']))
{
    $sql2 = "UPDATE catz SET nomcat = ". $_POST['newnom']." WHERE id = ".$_POST['idcat'];
    $result2 = mysql_query($sql2) or die( mysql_error() );
    if ($result2)
    {
        echo "<font color=red>Catégorie correctement modifiée dans la base de données ! :)</font><br>";
    }
}
?>
Attention aussi aux mélanges de " et de '

Posté : 26 mai 2005, 11:48
par ZeRo[^L^]CoOOL
La valeur de la propriété action de la form c'est koi ?? ou bien c'est deux codes se trouve ds le mm fichier si c le cas est ce que tu peut nous extraire tout le fichier ?

Posté : 26 mai 2005, 12:05
par kjbstar
Effectivement, mon côté "bordélique" se retrouve meme dans mon code ^^
J'ai pas mis de valeur action dans le form, c est vrai, mais sur la meme page il y a egalement l ajout de catégorie qui fonctionne tres bien.

Sinon, voici le code entier de la page:
<?
        chdir("..");
        include("./include/common.php");
        include("accesscontrol.php");
        include("header.php");
        if(isset($_POST['ajoutcat'])){

                $sql = 'INSERT INTO catz (nomcat) VALUES ("'.$_POST['ajoutcat'].'")';
                $result = mysql_query($sql) or die( mysql_error() );
                if ($result){
                          echo "<font color=red>Catégorie correctement ajoutée dans la base de données ! :)</font><br>";
                }
                        }

       if(isset($_POST['idcat'])){

               $sql2 = 'UPDATE catz SET nomcat='.$_POST['newnom'].' WHERE id='.$_POST['idcat'].'';
                $result2 = mysql_query($sql2) or die( mysql_error() );
                if ($result2){
                          echo "<font color=red>Catégorie correctement modifiée dans la base de données ! :)</font><br>";
                }
                        }

              $listcats = mysql_query('SELECT * FROM catz');
?>
<form method="POST">
<TABLE class=design bgColor=#ffffff cellPadding=1 cellSpacing=0 width=600 border='1' BORDERCOLOR="#C0C0C0" STYLE="border-collapse: collapse">
<TR>
<TD class='a1' width=200><strong>Ajouter une catégorie:</font></strong></td>
<TD class='a1'><INPUT maxLength=200 size=25 name=ajoutcat>&nbsp;&nbsp;&nbsp;&nbsp;<font size="1" face="Verdana, Arial, Helvetica, sans-serif"><input type="submit" alt="submit" value="Ajouter" width="66" height="20" hspace="5" vspace="5" border="0"></font>
</tr>
</table>
</form>

<form method="POST">
<font class='a1'><strong>Modifier une catégorie:</font></strong>
<TABLE class=design bgColor=#ffffff cellPadding=1 cellSpacing=0 width=600 border='1' BORDERCOLOR="#C0C0C0" STYLE="border-collapse: collapse">
<TR>
<TD class='a1' width=80><strong>ID: <INPUT maxLength=2 size=2 name=idcat></font></strong></td>
<TD class='a1'><b>Nouveau nom:</b> <INPUT maxLength=50 size=30 name=newnom></font>&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" alt="submit2" value="Valider la modification" width="66" height="20" hspace="5" vspace="5" border="0"></td></font>
</tr>
</table>
</form>

<font class='a1'><strong>Liste des catégories:</font></strong>
<? while ($donnees = mysql_fetch_array($listcats) )
{ ?>
<TABLE class=design bgColor=#ffffff cellPadding=1 cellSpacing=0 width=600 border='1' BORDERCOLOR="#C0C0C0" STYLE="border-collapse: collapse">
<TR>
<TD class='a1' width=50><strong>ID: <font color=#0000FF><? echo $donnees['id']; ?></font></font></strong></td>
<TD class='a1'><b>Nom:</b> <font color=#0000FF><? echo $donnees['nomcat']; ?></font></td></font>
</tr>
</table>
<?
  }      include("footer.php");
?>

Posté : 26 mai 2005, 12:10
par renatane
<font class='a1'><strong>Modifier une catégorie:</font></strong>
ferme </strong> avant </font>.

Posté : 26 mai 2005, 12:18
par kjbstar
Grossiere erreur nocturne de code pas propre, en effet.
Ca et d'autres </font> inutiles.
Merci.

Posté : 26 mai 2005, 15:04
par kjbstar
Euh...Petit up car mon probleme n est pas résolu...
J'ai beau essayer quelques variantes dans le if ou de reunis les 2 <form> en un seul , j'ai toujours le meme resultat: "Unknown column 'Nouveau nom de categorie' in 'field list' "

Merki...