PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 25-03-2010 22:41:55

phpdos
Membre
Inscription : 22-12-2009
Messages : 72

enregistre les changements dans la basse de donné

Bonjour,


J’ai une question,

PHP

J’ai un fichier (edit_form.php)
Le contenu s’affiche dans les champs de texte (sauf id) par les informations qui se trouvent dans mySql selon le paramètre d’url :

http://toto.com/edit_form.php?id=70

Voici le code :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>toto</title>
</head>
<body>
<form>

<table>
    <tr>
      <td align="center">CONTACT DB</td>
    </tr>
    <tr>
      <td><table border="1" width="100%">
          <tr>
            <td>ID</td>
            <td>PRENOM</td>
            <td>NOM</td>
            <td>#</td>
            <td>RUE</td>
            <td>VILLE</td>
          </tr>


<?php

//recuperation la valeur d'un paramettre d'url
$var_id=$_GET['id'];
  //echo $var_id;

//connection au serveur
include"connection.php";
//selection de bd
include"selection.php";
 
 

$rep = "SELECT id,bd_prenom,bd_nom,bd_numero_adresse,bd_rue_adresse,bd_ville_adresse FROM $table_db WHERE id=$var_id";
                        //$var_id      ------------­­>    recuperation la valeur d'un paramettre d'url
                        //$table_db    ------------­­>    venu par selection.php
$result = mysql_query($rep);
 
    while($data = mysql_fetch_row($result)){
      echo("<tr><td>$data[0]</td><td><input type=\"text\" name=\"textfield\" id=\"textfield\" value=\"$data[1]\"/></td><td><input type=\"text\" name=\"textfield\" id=\"textfield\" value=\"$data[2]\"/></td><td><input type=\"text\" name=\"textfield\" id=\"textfield\" value=\"$data[3]\"/></td><td><input type=\"text\" name=\"textfield\" id=\"textfield\" value=\"$data[4]\"/></td><td><input type=\"text\" name=\"textfield\" id=\"textfield\" value=\"$data[5]\"/></td></tr>");
    }

               
         ?>
        </table></td>
    </tr>
  </table>
<input type="submit" name="btn_valider" value="Valider/Enregistrer">
</form>
</body>

Jusqu’au là, tout va bien.

Comment je peux enregistre les changements dans la basse de donné que j’ai fait par les champs de texte ?

Bonne journée


Brave autiste
Cl... clown
Cl ? Cl ? Est-ce que j'ai une gueule de clowns ?
                  @*|*@

Hors ligne

#2 26-03-2010 06:52:41

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : enregistre les changements dans la basse de donné

Lis le cours sur le site et dis nous s'il y a quelque chose que tu ne comprends pas. smile
http://phpdebutant.org/article67.php

Edit : Bien vu Kris, je n'avais pas fait attention qu'il avait un select.
Voici donc l'article en question pour l'update : http://phpdebutant.org/article64.php

Dernière modification par xTG (26-03-2010 12:00:01)

Hors ligne

#3 26-03-2010 10:02:10

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : enregistre les changements dans la basse de donné

Saluton,
S'il s'agit de mettre à jour des informations affichées à partir d'une requête SELECT, il faut t'orienter vers une requête UPDATE.
Le premier problème que j'entrevois c'est que ton formulaire <form> n'a ni attribut method ni attribut action


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#4 26-03-2010 16:05:51

phpdos
Membre
Inscription : 22-12-2009
Messages : 72

Re : enregistre les changements dans la basse de donné

Bonjour,

Merci pour vos aides… Maljuna Kris et xTG...:)

Alors, j’ai fait des changements comme vous m’avez dit…

Dans mon fichier (edit_form.php)
Le contenu s’affiche dans les champs de texte par les informations qui se trouvent dans mySql selon le paramètre d’URL :

ID s’affiche aussi dans un champ de texte, mais non modifiable (readonly=\"readonly\")
Et j’ai ajouté aussi les paramètres dans form (<form name="editForm" method="post" action="edit_form_proceded.php">)
http://toto.com/edit_form.php?id=70

Voici le code :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>toto</title>
</head>
<body>
<form name="editForm" method="post" action="edit_form_proceded.php">
<table>
    <tr>
      <td align="center">CONTACT DB</td>
    </tr>
    <tr>
      <td><table border="1" width="100%">
          <tr>
            <td>ID</td>
            <td>PRENOM</td>
            <td>NOM</td>
            <td>#</td>
            <td>RUE</td>
            <td>VILLE</td>
          </tr>


<?php

//recuperation la valeur d'un paramettre d'url
$var_id=$_GET['id'];
  //echo $var_id;

//connection au serveur
include"connection.php";
//selection de bd
include"selection.php";
 
 

$rep = "SELECT id,bd_prenom,bd_nom,bd_numero_adresse,bd_rue_adresse,bd_ville_adresse FROM $table_db WHERE id=$var_id";
                        //$var_id      ------------­­>    recuperation la valeur d'un paramettre d'url
                        //$table_db    ------------­­>    venu par selection.php
$result = mysql_query($rep);
 
    while($data = mysql_fetch_row($result)){
      echo("<tr><td><input type=\"text\" name=\"id\" id=\"id\" value=\"$data[0]\" readonly=\"readonly\" /></td><td><input type=\"text\" name=\"prenom\" id=\"prenom\" value=\"$data[1]\"/></td><td><input type=\"text\" name=\"nom\" id=\"nom\" value=\"$data[2]\"/></td><td><input type=\"text\" name=\"numero_adresse\" id=\"numero_adresse\" value=\"$data[3]\"/></td><td><input type=\"text\" name=\"rue_adresse\" id=\"rue_adresse\" value=\"$data[4]\"/></td><td><input type=\"text\" name=\"ville_adresse\" id=\"ville_adresse\" value=\"$data[5]\"/></td></tr>");
    }

               
         ?>
        </table></td>
    </tr>
  </table>
<input type="submit" name="btn_valider" value="Valider/Enregistrer">
</form>
</body>

Jusqu’au là, tout va bien.

Ensuite, j’ai fait mon fichier edit_form_proceded.php selon votre indication en changeant la requête  INSERT INTO par UPDATE

Voici mon code

<?php
 
  //connection au serveur
  include"bd_db/connection.php";
  //sélection de la base de données et table
  include"bd_db/selection.php";
    //$table_db  = "nomdeMonTableDans MySql"; vient par le fichier selection.php
    //$table_db="ma_table";
   
    $var_id=""; if(!empty($_POST["id"]))
        $var_id=addslashes($_POST["id"]);
     
    $var_prenom=""; if(!empty($_POST["prenom"]))
        $var_prenom=addslashes($_POST["prenom"]);
   
    $var_nom=""; if(!empty($_POST["nom"]))
        $var_nom=addslashes($_POST["nom"]);  
   
    $var_numero_adresse=""; if(!empty($_POST["numero_adresse"]))
        $var_numero_adresse=addslashes($_POST["numero_adresse"]);  
   
    $var_rue_adresse=""; if(!empty($_POST["rue_adresse"]))
        $var_rue_adresse=addslashes($_POST["rue_adresse"]);  
   
    $var_ville_adresse=""; if(!empty($_POST["ville_adresse"]))
        $var_ville_adresse=addslashes($_POST["ville_adresse"]);  
 
 
 

    // modifier enregistrement
      $var_query = "UPDATE bd_prenom,bd_nom,bd_numero_adresse,bd_rue_adresse,bd_ville_adresse FROM $table_db WHERE id=$var_id";
        //bd_prenom,bd_nom,bd_numero_adresse,bd_rue_adresse,bd_ville_adresse et id les noms de collones dans bd
        //$table_db    ------------­­>    venu par selection.php
       $var_query .= "VALUES ('$var_prenom','$var_nom','$var_numero_adresse','$var_rue_adresse','$var_ville_adresse')";


       $result = mysql_query($var_query, $cnx) or die (mysql_error());
       //$cnx    ------------­­>    venu par connection.php :
       //                           $cnx = mysql_connect( "totot", "nomLogin", "password" ) ;
?>

Je me demande si ma requête  UPDATE n’est pas bonne ? …
ou bien il y a un problème avec la colonne « bd_ville_adresse » parce que je ne vois pas le nom de la ville dans le message d’erreur (il est vide)…

En fait, j’ai rectifié les champs par : prénom [toto ] nom [titi ] numéro [111 ] rue [rue lantiez] ville [berlin]

Voici le message d’erreur :
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 'FROM tb_sndg_paroisse_test WHERE id=57VALUES ('toto','titi','1111','rue lantiez','' at line 1

Alors, que faire ?

Bonne journée


Brave autiste
Cl... clown
Cl ? Cl ? Est-ce que j'ai une gueule de clowns ?
                  @*|*@

Hors ligne

#5 26-03-2010 16:42:42

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : enregistre les changements dans la basse de donné

Euh, la syntaxe d'UPDATE est différente de la syntaxe INSERT
UPDATE nomdelatable SET [nomdelaclonne=valeur,nomduneautrecolonne=valeur,....] WHERE id=$var_id


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#6 26-03-2010 18:33:57

phpdos
Membre
Inscription : 22-12-2009
Messages : 72

Re : enregistre les changements dans la basse de donné

Salut Maljuna Kris,

Super gentil...

J'ai fais ainsi :

$var_query = "UPDATE $table_db SET [bd_prenom='$var_prenom',bd_nom='$var_nom',bd_numero_adresse='$var_numero_adresse',bd_rue_adresse='$var_rue_adresse',bd_ville_adresse='$var_ville_adresse'] WHERE id=$var_id";
 $result = mysql_query($var_query, $cnx) or die (mysql_error());
?>

j’ai rectifié les champs par : prénom [titi] nom [toto] numéro [111 ] rue [coucou] ville [paris]


et voici le message d'erreur :

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 '[bd_prenom='titiq',bd_nom='toto',bd_numero_adresse='111',bd_rue_adresse='coucou'' at line 1

ensuite j'ai fait une autre tentative :

$var_query = "UPDATE bd_prenom, bd_nom, bd_numero_adresse, bd_rue_adresse,  bd_ville_adresse FROM $table_db SET bd_prenom='$var_prenom', bd_nom='$var_nom', bd_numero_adresse='$var_numero_adresse', bd_rue_adresse='$var_rue_adresse', bd_ville_adresse='$var_rue_adresse' WHERE id=$var_id";
$result = mysql_query($var_query, $cnx) or die (mysql_error());
       //$cnx    ------------­­>    venu par connection.php :
       //                           $cnx = mysql_connect( "totot", "nomLogin", "password" ) ;
?>

j’ai rectifié les champs par : prénom [titi] nom [toto] numéro [111 ] rue [coucou] ville [paris]


voici le message d'erreur :

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 'FROM tb_sndg_paroisse_test SET bd_prenom='titi', bd_nom='toto', bd_numero_adress' at line 1


Brave autiste
Cl... clown
Cl ? Cl ? Est-ce que j'ai une gueule de clowns ?
                  @*|*@

Hors ligne

#7 26-03-2010 18:54:08

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : enregistre les changements dans la basse de donné

dans le 1er :
enleve les [ et ] wink

dans le 2ieme
enleve le FROM wink


a++

Hors ligne

#8 26-03-2010 19:17:37

phpdos
Membre
Inscription : 22-12-2009
Messages : 72

Re : enregistre les changements dans la basse de donné

Salut Pierrot,

Super UN GROS MERCI

1er marche

dans le 1er :
enleve les [ et ]

alors j'ai fait

    $var_query = "UPDATE $table_db SET bd_prenom='$var_prenom',bd_nom='$var_nom',bd_numero_adresse='$var_numero_adresse',bd_rue_adresse='$var_rue_adresse',bd_ville_adresse='$var_ville_adresse' WHERE id=$var_id";

marche sans erreur
:)

ensuite j'ai fait aussi pour voir

dans le 2ieme
enleve le FROM

alors j'ai fait

$var_query = "UPDATE bd_prenom, bd_nom, bd_numero_adresse, bd_rue_adresse,  bd_ville_adresse tb_totot SET bd_prenom='$var_prenom', bd_nom='$var_nom', bd_numero_adresse='$var_numero_adresse', bd_rue_adresse='$var_rue_adresse', bd_ville_adresse='$var_rue_adresse' WHERE id=$var_id";

voici l'erreur
Table 'test.bd_prenom' doesn't exist

mais on s'en fout

bonne soirée


Brave autiste
Cl... clown
Cl ? Cl ? Est-ce que j'ai une gueule de clowns ?
                  @*|*@

Hors ligne

#9 26-03-2010 20:51:42

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : enregistre les changements dans la basse de donné

la saint Axe excate dans le 2ieme cas est :
update table set champ1=unevalue, champs2=uneautrevalue wink

a++

Hors ligne

Pied de page des forums