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

AJAX Discussion :

[AJAX] Récupérer La Valeur D'un Champ


Sujet :

AJAX

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 104
    Par défaut [AJAX] Récupérer La Valeur D'un Champ
    Bonjour,
    J'ai un formulaire qui permet d'insérer un artiste dans une base de données.
    La première insertion se passe parfaitement.
    Une fois inséré je fais apparaitre deux liens(grâce à un javascript et ajax) (modification et suppression)
    Un click sur modification fait apparaitre un champ text reprenant l'artiste que l'on vient d'entrer pour modification.
    Je n'arrive pas à récupérer la valeur de ce champ.

    Voici le formulaire avec la ligne posant problème en rouge

    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
    <form id="formArtists" action="newArtists.php" method="post">
    	        	Entrez le nom de l'artiste à ajouter : 
    	        	<input type="text" name="artist" value="" />
    	        	<input class="submitButton" type="submit" value="Valider" />
    	        </form>
    	        <div id="artistResponse">
    	        	<p id="intro">Vous venez d'insérer l'artiste <span class="insertedArtistName"></span>, ID n°<span class="insertedArtistId"></span>.<br /><br />
    
    	        	Vous pouvez <a id="modifyArtist" href="#">modifier</a> ou <a id="deleteArtist" href="#">supprimer</a> cette entrée.
    	        	</p>
    	        	
    	        	<div id="modifyArtistBloc">
    	        		
    	        		<form id="formArtistModify" action="updateArtist.php" method="post">
    			        	Modifiez le nom de l'artiste : 
    			        	<input class="artistModifyField" type="text" name="artist_modif" value="" />
    			        	<input class="artistIdField" type="hidden" name="artist_id" value="" />
    
    			        	<input class="submitButton" type="submit" value="Modifier" />
    			        	<input class="cancelButton" type="button" value="Annuler" />
    			        </form>
    Voici maintenant le PHP permettant la modification

    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
    <?php include_once("connexion.php"); ?>
    <?php
    mysql_select_db($database, $base);
     
    //si modification
     
     
    $query_modifArtist = sprintf("UPDATE artists SET art_name = '".$_POST['artist_modif']."' WHERE art_id = '".$_POST['artist_id']."'");
    $artist = mysql_query($query_modifArtist, $base) or die(mysql_error());
    $row_artist = mysql_fetch_assoc($artist);
    $result = array();
    do {  
            $result[] = $row_artist;
        } while ($row_artist = mysql_fetch_object($artist));
                    echo '{"artist":'.json_encode($result).'}';
    ?>
    Merci d'avance

  2. #2
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Salut,

    Peux tu être plus complet car il manque des infos (qu'est ce qui est modifié, quand, comment...)

    ERE

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 19
    Par défaut
    Salut, juste pour info, évite de mettre ca :
    ... art_name = '".$_POST['artist_modif']."' ...
    Car risque de problème de sécurité.

    Mais plutôt ca :
    ... md5(art_name) = '".md5($_POST['artist_modif'])."' ...
    Après pour le reste, j'ai pas pigé ta question

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 104
    Par défaut
    Salut,
    emmanuel.remy et mrtechno01 j'ai bien pris note de vos remarques et je vais tenter d'être le plus explicite possible.

    Je souhaite alimenter une base de données via un formulaire que voici

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <form id="formArtists" action="newArtists.php" method="post">
    	        	Entrez le nom de l'artiste à ajouter : 
    	        	<input type="text" name="artist" value="" />
    	        	<input class="submitButton" type="submit" value="Valider" />
    	        </form>
    Une fois mon artiste inséré, après avoir cliqué sur Valider donc je fais apparaitre l'artiste et son id (dans la base de données) pour m'assurer que l'insertion a été correctement effectuée. Apparaitront également un lien pour modifier ou supprimer l'artiste que l'on vient d'insérer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <div id="artistResponse">
    	        	<p id="intro">Vous venez d'insérer l'artiste <span class="insertedArtistName"></span>, ID n°<span class="insertedArtistId"></span>.<br /><br />
     
    	        	Vous pouvez <a id="modifyArtist" href="#">modifier</a> ou <a id="deleteArtist" href="#">supprimer</a> cette entrée.
    	        	</p>
    Par défaut grâce à une feuille de style le <div id="artistResponse"> n'est pas visible car au lancement de la page il n'a pas lieu d'être.

    Ce div s'affichera que si mon json transporte les infos renseignées dans mon js.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    handleArtistsResponse : function(json){
    		var datas = json.artist[0];
    		this.$artistResponse.find(".insertedArtistName, .deletedArtistName").text(datas.art_name);
    		this.$artistResponse.find(".insertedArtistId, .deletedArtistId").text(datas.art_id);
    		this.$artistResponse.find(".artistModifyField").val(datas.art_name);
    		this.$artistResponse.find(".artistIdField").val(datas.art_id);
    		$("#intro").show();
    		this.$artistResponse.show();
    	},
    Un Click sur le lien de modification fait apparaitre un nouveau formulaire avec un champ texte qui reprend par défaut le nom de l'artiste que l'on vient d'insérer car c'est celui ci que l'on veut modifier. J'ai également un champ caché dans lequel je récupère l'id de l'artiste en question pour le modifier par la suite.

    Voici le formulaire de modification
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <form id="formArtistModify" action="updateArtist.php" method="post">
    			        	Modifiez le nom de l'artiste : 
    			        	<input class="artistModifyField" type="text" name="artist_modif" value="" />
    			        	<input class="artistIdField" type="hidden" name="artist_id" value="" />
     
    			        	<input class="submitButton" type="submit" value="Modifier" />
    			        	<input class="cancelButton" type="button" value="Annuler" />
    			        </form>
    C'est à partir de là que je bloque je n'arrive pas à récupérer la valeur de l'artiste après modification.

    Voilà le message d'erreur que j'ai
    Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/nats/admin_radio/jq/updateArtist.php on line 10

    Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /home/nats/admin_radio/jq/updateArtist.php on line 14
    {"artist":[false]}
    L'artiste et son id son pourtant bien récupéré vu qu'ils apparaissent au niveau des différents div de contrôles.

    J'ai le même problème pour la suppression que j'ai mis en place sur le même principe.

    Je vous mets en pièces jointes les fichiers utilisés dans leur globalité pour que vous puissiez comprendre du mieux possible ce que je tente d'effectuer.

    Le fichier index.php est en construction les informations qui vont nous intéresser ici vont de la ligne 29 à 63

    La feuille de style :index.css
    Le script d'insertion: newArtists.php
    Le script de modification: updateArtist.php
    Le js: index.js


    J'espère avoir été assez clair cette fois ci
    Fichiers attachés Fichiers attachés

  5. #5
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut Ne pas confondre UPDATE etSELECT
    Salut,

    Tu écris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $query_modifArtist = sprintf("UPDATE artists SET art_name = '".$_POST['artist_modif']."' WHERE art_id = '".$_POST['artist_id']."'");
    $artist = mysql_query($query_modifArtist, $base) or die(mysql_error());
    $row_artist = mysql_fetch_assoc($artist);
    Le souci c'est que ce n'est pas une requête SELECT donc ta variable $artist ne contient pas de lignes de données (ressource) mais uniquement true/false pour indiquer que ta mise à jour a été correctement effectuée ou pas. D'où tes erreurs de mysql_fetch_assoc car $artist n'est pas une ressource de curseur.

    Si tu veux obtenir de nouveau les données de la base, tu dois refaire un SELECT après ton UPDATE.

    Bon dev,

    ERE

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 104
    Par défaut
    Merci beaucoup Emmanuel.Remy.

    Voici mon php d'update modifier pour ceux que ça pourrait intéresser

    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 include_once("connexion.php"); ?>
    <?php
    mysql_select_db($database, $base);
     
    //si modification
     
     
    $query_modifArtist = sprintf("UPDATE artists SET art_name = '".$_POST['artist_modif']."' WHERE art_id = '".$_POST['artist_id']."'");
    $artist = mysql_query($query_modifArtist, $base) or die(mysql_error());
     
    if($artist == true){
            $query_modifArtist = sprintf("SELECT * FROM artists WHERE art_id = '".$_POST['artist_id']."'");
            $artist = mysql_query($query_modifArtist, $base) or die (mysql_error());
            $row_artist = mysql_fetch_assoc($artist);
            $result = array();
    do {  
            $result[] = $row_artist;
        } while ($row_artist = mysql_fetch_object($artist));
                    echo '{"artist":'.json_encode($result).'}';
            }
            else{
                    echo json_encode("Veuillez Entrer Un Artiste");
                    }
    ?>
    .

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 19
    Par défaut
    bon je vais être chiant encore mais tu n'as pas appliqué la règle de sécurité de recherche dans une base que je t'ai indiqué.

    je t'indique le bon script car faut vraiment penser au faille php

    voici ton script modifié et sécurisé

    <?php include_once("connexion.php"); ?>
    <?php
    mysql_select_db($database, $base);

    //si modification


    $query_modifArtist = sprintf("UPDATE artists SET art_name = '".$_POST['artist_modif']."' WHERE md5(art_id) = '".md5($_POST['artist_id'])."'");
    $artist = mysql_query($query_modifArtist, $base) or die(mysql_error());

    if($artist == true){
    $query_modifArtist = sprintf("SELECT * FROM artists WHERE md5(art_id) = '".md5($_POST['artist_id'])."'");
    $artist = mysql_query($query_modifArtist, $base) or die (mysql_error());
    $row_artist = mysql_fetch_assoc($artist);
    $result = array();
    do {
    $result[] = $row_artist;
    } while ($row_artist = mysql_fetch_object($artist));
    echo '{"artist":'.json_encode($result).'}';
    }
    else{
    echo json_encode("Veuillez Entrer Un Artiste");
    }
    ?>
    Voila pour ceux qui aime la sécurité absolue lol

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 104
    Par défaut
    mrtechno01 je vais me mettre à la sécurité absolue!!

    Merci encore

  9. #9
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Salut,

    Quelques observations:
    • il y a une fonction dédiée mysql_real_escape_string pour éviter de faire ce genre de manipulation à base de MD5.
    • A partir de php 5 et PDO on peut passer par une requête paramétrée ce qui ôte tout problème
    • Si on garde l'utilisation du MD5, on peut tout aussi bien utiliser la fonction MD5 de mysql plutôt que le MD5 de PHP
    • le sprintf ne sert à rien si on ne passe pas de paramètres...


    ERE

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 19
    Par défaut
    emmanuel.remy => je suis d'accord avec toi, mais le problème c'est que tout les hébergeurs ne sont pas encore passés en php5 donc voila le problème. De plus certaines appli php5 n'y sont pas dispo donc c'est la méthode que j'avais trouvé pour la plupart

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/02/2012, 16h11
  2. API pour récupérer la valeur d'un champ Edit
    Par buteiduil dans le forum Windows
    Réponses: 4
    Dernier message: 15/05/2005, 22h32
  3. Réponses: 1
    Dernier message: 22/02/2005, 23h40
  4. Récupérer la valeur d'un champ disabled
    Par nebule dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/01/2005, 10h45
  5. récupérer la valeur du 2ème champ dans un DBLookUpListBox
    Par jakouz dans le forum Bases de données
    Réponses: 3
    Dernier message: 20/07/2004, 16h45

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