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

jQuery Discussion :

Insertion SQL dynamique + SPAN success


Sujet :

jQuery

  1. #21
    Invité
    Invité(e)
    Par défaut
    Quand on "débute"...

    ... on commence par des EXERCICES SIMPLES !!!

    Je persiste, et signe.
    jreaux62
    Dernière modification par NoSmoking ; 15/11/2018 à 19h49. Motif: N'exagerons rien ;)

  2. #22
    Expert confirmé Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 529
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 529
    Points : 4 739
    Points
    4 739
    Par défaut
    Citation Envoyé par Zarkoffe Voir le message
    En tout cas, le PHP c'était mille fois plus ludique que cette merde de JavaScript. C'est incroyable ce langage, quelle plaie sérieusement :o
    écrire ça dans un forum JavaScript...

    JavaScript est un langage bien plus complexe que PHP, je te l'accorde.
    S'imaginer que c'est juste "un petit langage de script" est une très mauvaise approche.

    Et de toutes façons la base de ton problème ici est due à ta mauvaise compréhension des mécanismes des pages HTML : la présence de la balise <form> entraîne des mécanismes automatiques de la part du navigateur.
    Le langage JavaScript permet bien sur de reprendre la main sur ces mécanismes, mais encore faut il comprendre les rouages du HTML pour y arriver.
    «La pluralité des voix n'est pas une preuve, pour les vérités malaisées à découvrir, tant il est bien plus vraisemblable qu'un homme seul les ait rencontrées que tout un peuple.» [ René Descartes ] - Discours de la méthode

  3. #23
    Expert confirmé Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 529
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 529
    Points : 4 739
    Points
    4 739
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Un autre EXERCICE SIMPLE, pour TESTER serialize() :
    je préfère serializeArray(); au moins sur la console, c'est un peu plus clair à lire
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      $(document).ready(function() {
        $('.submit').on('click', function( event ){
          event.preventDefault();
     
          var datas = $( this ).closest('form').serializeArray();  //serialize(); 
     
          console.log( 'datas:', datas );  
        });
      });
    «La pluralité des voix n'est pas une preuve, pour les vérités malaisées à découvrir, tant il est bien plus vraisemblable qu'un homme seul les ait rencontrées que tout un peuple.» [ René Descartes ] - Discours de la méthode

  4. #24
    Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Janvier 2018
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2018
    Messages : 299
    Points : 67
    Points
    67
    Par défaut
    Merci pour ta réponse.
    Console log me renvoie
    Les valeurs ne semblent pas arriver :S En utilisant le formulaire que tu m'as proposé.
    Si tu as une idée... merci

  5. #25
    Invité
    Invité(e)
    Par défaut
    Voici un EXEMPLE COMPLET, avec appel AJAX et retour PHP :

    1- test.php
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    <?php
    header('Content-type:text/html; charset=UTF-8');        // encodage UTF-8
    error_reporting(E_ALL);         // en TEST !!
    ?>
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8" />
    	<title></title>
    	<!-- Script initialisation jquery -->
    	<script src="http://code.jquery.com/jquery.js"></script>
     
    <script>
     
    $(document).ready(function(){
    	$('.submit').on('click', function( event ){
    		event.preventDefault();
    		// ----------
    		// on récupère toutes les valeurs
    		var devis_ref = []; // array
    		$('input[name^=devis_ref]').each(function() {
    			devis_ref.push($(this).val());
    		});
     console.log( 'avant:'+devis_ref ); // on VERIFIE ce que ça contient !)
    		devis_ref = JSON.stringify(devis_ref); // JSON.stringify() convertit une valeur JavaScript en chaîne JSON
     console.log( 'après:'+devis_ref ); // on VERIFIE ce que ça contient !)
    		$.post('test-ajax.php', {
    			devis_ref: devis_ref
    			}, (reponsehtml) => {
    			$('#result').html( reponsehtml );
    		}); 
    		// ----------
    	});
    });
    </script>
     
    </head>
    <body>
     
    <form>
      <p><input type="text"  name="devis_ref[11]" /></p>
      <p><input type="text"  name="devis_ref[22]" /></p>
      <p><input type="text"  name="devis_ref[33]" /></p>
     
      <p><input type="submit" class="submit" value="OK"/></p>
    </form>
     
    <div id="result"><div>
     
    </body>
    </html>
    2- test-ajax.php :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php
    header('Content-type:text/html; charset=UTF-8');	
     
    $reponse = []; // array
     
    if( isset($_POST['devis_ref']) )
    {
    	foreach( json_decode($_POST['devis_ref']) as $id => $devis_ref )
    	{
    		$reponse[] = $id.' : '.$devis_ref;
    	}
    }
    $reponse = implode('<br />', $reponse); // string
     
    echo $reponse;

    Dans <div id="result"><div>, le retour du traitement PHP s'affiche.

    Nom : snip_test.jpg
Affichages : 83
Taille : 12,1 Ko

    Explication :
    1- dans le JS
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
     devis_ref = JSON.stringify(devis_ref); // JSON.stringify() convertit une valeur JavaScript en chaîne JSON
    • devis_ref est d'abord un array JS.
    • JSON.stringify() va le transformer en string (au format JSON), pour pouvoir le transmettre en paramètre via Ajax.

    2- dans le fichier PHP :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $devis_ref_array = json_decode($_POST['devis_ref'])
    • json_decode() : décode la chaine reçu (au format JSON), et la transforme en array PHP.


    INCONVENIENT : on NE récupère PAS les VRAIS INDEX (11, 22, 33 : voir le code HTML) !
    Dernière modification par Invité ; 14/11/2018 à 00h45.

  6. #26
    Invité
    Invité(e)
    Par défaut
    Voici la solution avec serialize() :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <form>
      <p><input type="text"  name="devis_ref[11]" /></p>
      <p><input type="text"  name="devis_ref[22]" /></p>
      <p><input type="text"  name="devis_ref[33]" /></p>
     
      <p><input type="submit" class="submit" value="OK"/></p>
    </form>
     
    <div id="result"><div>

    Avec .ajax() (pour comparer : les 2 sont équivalents) :
    Code JavaScript : 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
    $(document).ready(function(){
    	$('.submit').on('click', function( event ){
    		event.preventDefault();
    		// ----------
    		// on récupère toutes les valeurs
    		var this_data = $( this ).closest('form').serialize();  //serialize(); 
     
    		$.ajax({
    			url:'test-ajax.php',
    			type:'post',
    			data:this_data,
    			dataType:'html',
    			})
    			.done( function(texthtml) {
    				$('#result').html(texthtml);
    			}); 
     
    		// ----------
    	});
    });

    Avec .post() :
    (après moults essais de syntaxe, car je maitrise mieux .ajax() que .post() que je n'utilise pas)...
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $(document).ready(function(){
    	$('.submit').on('click', function( event ){
    		event.preventDefault();
    		// ----------
    		// on récupère toutes les valeurs
    		var this_data = $( this ).closest('form').serialize();  //serialize(); 
     
    		$.post('test-ajax.php', this_data, '','html')
    			.done( function(texthtml) {
    				$('#result').html(texthtml);
    			}); 
    		// ----------
    	});
    });

    test-ajax.php : Important : on N'utilise PLUS json_decode :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php
    header('Content-type:text/html; charset=UTF-8');	
     
    $reponse = []; // array
     
    if( isset($_POST['devis_ref']) ) // comme pour un formulaire "normal"
    {
    	foreach( $_POST['devis_ref'] as $id => $devis_ref )
    	{
    		$reponse[] = $id.' : '.$devis_ref;
    	}
    }
    $reponse = implode('<br />', $reponse); // string
     
    echo $reponse;

    Nom : snip_test2.jpg
Affichages : 74
Taille : 11,7 Ko

    Avantages :
    • en JS : on ne s'embête pas à récupérer les noms des champs (input) : tout est fait automatiquement
    • en PHP : ça se traite comme un formulaire PHP "normal" *
    • IMPORTANT : on récupère les VRAIS INDEX (11, 22, 33 : voir le code HTML) !


    => Cette solution est à PRIVILEGIER.
    Dernière modification par Invité ; 14/11/2018 à 00h53.

  7. #27
    Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Janvier 2018
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2018
    Messages : 299
    Points : 67
    Points
    67
    Par défaut
    Merci pour tes efforts, je vais privilégier la 2ème solution en remplaçant par mon système d'ajout de ligne manuellement et l'insertion en BDD.
    En revanche j'ai une erreur qui s'affiche pour tes-ajax.php au niveau du foreach. Quel argument ne lui plait pas?
    Warning: Invalid argument supplied for foreach() in D:\xampp\htdocs\AJAX3\test-ajax.php on line 6
    merci

  8. #28
    Invité
    Invité(e)
    Par défaut
    Ca veut sûrement dire qu'il ne reçoit pas un array.

    Comme mon code fonctionne... Il faudrait que tu montres le tien...


    N.B. Rappel : si tu as des checkbox, SEULES celles cochées sont récupérées.
    Il ne faut donc pas oublier d'en tester l'existence.

  9. #29
    Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Janvier 2018
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2018
    Messages : 299
    Points : 67
    Points
    67
    Par défaut
    Non non j'ai simplement testé ton code et c'est ce qu'il me sort.

    AJAX3.rar

  10. #30
    Expert confirmé Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 529
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 529
    Points : 4 739
    Points
    4 739
    Par défaut
    stp non, ton code (AJAX3) est complètement différent de celui que te propose jreaux62 ( https://www.developpez.net/forums/d1.../#post10592604 )

    je comprends que t'ai réussi à l'énerver, et je t'assure, c'est plutôt rare..

    En fait c'est un jeu de ta part? poser des questions techniques et balader ton interlocuteur pour voir jusqu’où tu peux l'énerver ?
    «La pluralité des voix n'est pas une preuve, pour les vérités malaisées à découvrir, tant il est bien plus vraisemblable qu'un homme seul les ait rencontrées que tout un peuple.» [ René Descartes ] - Discours de la méthode

  11. #31
    Invité
    Invité(e)
    Par défaut
    Énervé ?
    Non, pas du tout...

    J'ai seulement l'impression de discuter musique avec un sourd-muet...

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. SQL dynamique avec insert.ORA-00917: missing comma
    Par tway91 dans le forum PL/SQL
    Réponses: 8
    Dernier message: 13/04/2017, 15h17
  2. Problème d'insert en SQL dynamique
    Par greg75 dans le forum SQL
    Réponses: 8
    Dernier message: 23/08/2007, 10h46
  3. Probléme Insert sql dynamique
    Par Xavier2701 dans le forum Oracle
    Réponses: 10
    Dernier message: 26/09/2006, 17h32
  4. Réponses: 4
    Dernier message: 30/01/2005, 14h23
  5. Export sous forme d'INSERT SQL
    Par Kraken dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 04/09/2003, 11h40

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