IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

update d'une table sous MySQl


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2008
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 40
    Par défaut update d'une table sous MySQl
    Bonjour,
    me revoila encore avec un petit probleme,
    j'ai l'intention de faire l'update de ma base de données,alors je charge d'abords ma table et je crée pour chaque ligne un lien dont je passe mon id.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <form action="modifier.php">
    			<?php
    				$link = mysql_connect("localhost","root");
    				mysql_select_db("GestionClients",$link)or die(mysql_error());
    				$query = "select * from Client";
    				$result = mysql_query($query, $link)or die($query . " - " . mysql_error());
    				$nbreResultats = mysql_num_rows($result);
    				echo "nombre d'enregistrement: ". $nbreResultats;
    				echo "</br>";
     
    				while ($test=mysql_fetch_row($result)) {
    					list($id, $nom, $prenom, $adresse)=$test;
    					echo $nom.' '.$prenom.' '.$adresse;
    					echo "<a href='modifier.php?num=$id'>modifier</a>";
    					echo '<br>';
    				}
    			?>
    		</form>
    dans la page modifier.php je fais ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <form action="">
    	<?php
    	if($_GET[num])
    		echo $_GET[num];
    	    echo'
    		<input type="text" name="nom">
    		<input type="text" name="prenom">
    		<input type="text" name="adresse">
    		<input type="submit" value="update">';
     
    	    $link=mysql_connect("localhost","root");
    	    mysql_select_db("GestionClients",$link);
    		$query="update client set num=$nom, prenom=$prenom, adresse=$adresse where id=$_GET[num]";
    		mysql_query($query);
    		echo $query;
    		?>
    	</form>
    ca semble bien correct mais il y a certainement quelques choses qui marche pas quelque part!!!!!!!!!!!!!!!!
    merci d'avance

  2. #2
    Membre averti
    Inscrit en
    Août 2008
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 40
    Par défaut
    en fait, j'avais un petit probeme avec ma requete SQL, voila je que je l'ai corrigé mais encore rien ne se produit::::::
    $query= "update client set nom='$nom',nom='$prenom',nom='$adresse'where id=$_GET[num]";

  3. #3
    Membre averti
    Inscrit en
    Août 2008
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 40
    Par défaut
    j'ai fais quelques modifications et le résultat était surprenant, la requête s'exécute mais toutes les variables qui sont transmises à la base de données sont nulles!!!! ceci même si je vois bien les variables sur mon url!!!!
    voici mon code complet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <form action="modifier.php">
    			<?php
    				$link = mysql_connect("localhost","root");
    				mysql_select_db("GestionClients",$link)or die(mysql_error());
    				$query = "select * from Client";
    				$result = mysql_query($query, $link)or die($query . " - " . mysql_error());
    				$nbreResultats = mysql_num_rows($result);
    				echo "nombre d'enregistrement: ". $nbreResultats;
    				echo "</br>";
     
    				while ($test=mysql_fetch_row($result)) {
    					list($id, $nom, $prenom, $adresse)=$test;
    					echo $nom.' '.$prenom.' '.$adresse;
    					echo "<a href='modifier.php?num=$id'>modifier</a>";
    					echo '<br>';
    				}
    			?>
    		</form>
    voici mon formulaire a remplir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <form action="">
    	<?php
    	if($_GET[num])
    		echo $_GET[num];
    	    echo'
    		<input type="text" name="nom">
    		<input type="text" name="prenom">
    		<input type="text" name="adresse">
    		<input type="submit" value="update">';
     
    	    $link=mysql_connect("localhost","root");
    	    mysql_select_db("GestionClients",$link)or die(mysql_error());
    	    $query= "update client set nom=$nom,prenom=$prenom,adresse=$adressewhere id=$_GET[num]"or die($query .' '. mysql_error());
    		mysql_query($query);
    		echo $query;
    		?>							
    	</form>

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 50
    Par défaut
    Salut,
    Ca ne fera probablement pas avancer les choses, mais je ne crois pas que tu puisses mettre ton $_GET[num] directement dans la chaine il vaudrait mieux le sortir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query = "update client set nom = $nom, prenom = $prenom, adresse = $adresse where id=".$_GET['num'];

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    c'est normal : tu utilises $nom, $prenom sans jamais les avoir définis nul part.
    de plus il faut re-passer ta valeur num a travers le deuxieme formulaire.

    et le die il faut le mettre sur l'execution de la requete.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    	<?php
            echo '<form method="post" action="" />
    		<input type="text" name="nom" />
    		<input type="text" name="prenom" />
    		<input type="text" name="adresse" />
    		<input type="submit" value="update" />
                    <input type="hidden" value="' . intval($_GET['num']) . '" />
                  </form>';
     
    // on vérifie que le formulaire a été soumis
    if(strtolower($_SERVER['REQUEST_METHOD']) == 'post') {
    // on protege les champs et on verifie qu'ils sont remplis
      $nom = trim(mysql_real_escape_string($_POST['nom']);
      $prenom = trim(mysql_real_escape_string($_POST['prenom']));
      $adresse = trim(mysql_real_escape_string($_POST['adresse']));
      $num = intval($_POST['num']);
        if ($nom && $prenom && $adresse) {
    	    $link=mysql_connect("localhost","root");
    	    mysql_select_db("GestionClients",$link)or die(mysql_error());
                $query = 'UPDATE client SET nom="' . $nom . '", prenom="' . $prenom . '", adresse="' . $adresse . '" WHERE id=' . $num
    	  	mysql_query($query)   or die($query .' '. mysql_error());
    		?>							
    	</form>
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Invité
    Invité(e)
    Par défaut
    Salut!

    Bon analysons la page de ton formulaire....

    Sachant que le PHP est un langage interpreté, ce dernier va parcourir ta page de haut en bas

    Donc si je parcours ta page comme un interpréteur PHP, voici ce que ça donne....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <form action="">
    <?php
    if($_GET[num])
    echo $_GET[num]; //je vais afficher la valeur du paramètre num passé via l'url
    echo' 
    <input type="text" name="nom">
    <input type="text" name="prenom">
    <input type="text" name="adresse">
    <input type="submit" value="update">'; //j'affiche le formulaire sans valeur
    
    $link=mysql_connect("localhost","root"); // je me connecte à la base de donnéemysql_select_db("GestionClients",$link)or die(mysql_error()); // je sélectionne la base de données
    $query= "update client set nom=$nom,prenom=$prenom,adresse=$adressewhere id=$_GET[num]"or die($query .' '. mysql_error()); // initialisation de la string avec le query à executer. l'update aura les valeur des champs du formulaire à savoir des valeurs vides. 
    De plus ton "or die()" est mal placé tu devrais le mettre au niveau de mysql_query
    mysql_query($query); //Execuction du query
    echo $query; //affichage du query
    ?> 
    </form>

  7. #7
    Membre averti
    Inscrit en
    Août 2008
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 40
    Par défaut
    ce que vous dites semble bien logique mais comment contourner les choses???
    je ne peux pas passer ma requete avant de remplir les champs
    en ce qui concerne ta remarque sabotage, les variables $nom, $prenom et $adresse sans deja dans me formulaire, ce sont aussi les "name" de mes controles. de plus une fois je fais $ je les apercoient toutes dans ma bibliotheque
    alors comment les definir??
    alors qu est ce que vous proposer pour regler tout cela???

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    les variables $nom, $prenom et $adresse sans deja dans me formulaire
    Ce n'est pas parce qu'on a un champ HTML "toto" que $toto existe dans PHP (enfin depuis la fin du register global)
    c'est la qu'arrivent les $_POST, $_GEt, $_REQUEST.

    alors qu est ce que vous proposer pour regler tout cela???
    de regarder ma correction et de voir si ca marche
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. [Hibernate2] Vider une table sous MySQL avec Hibernate
    Par seanbean dans le forum Hibernate
    Réponses: 8
    Dernier message: 07/02/2012, 14h05
  2. creation d'une table sous mysql
    Par DJERDJAR YACINE dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 01/07/2007, 00h20
  3. Comment créer une BD et une table sous MySQL.
    Par User dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 12/03/2007, 16h16
  4. [Mysql] Dump d'une table sous un nom différent
    Par devoo dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 15/09/2006, 16h58
  5. Impossible d'importer un fichier csv dans une table sous MySQL
    Par manue85 dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 20/04/2006, 12h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo