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

JavaScript Discussion :

Post data d'un formulaire Angular 4 en PHP


Sujet :

JavaScript

  1. #1
    Membre confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2009
    Messages
    67
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : F�vrier 2009
    Messages : 67
    Par d�faut Post data d'un formulaire Angular 4 en PHP
    Bonjour,

    Je suis entrain de cr�er une petite application qui permet de r�cup�rer les donn�es depuis un serveur et apr�s les modifier ou ajouter d'autres entr�e avec les technologies (Angular4, PHP, Mysql)

    1. Pour obtenir les donn�es j'ai un fichier getClients.php
    Code PHP : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    header('Access-Control-Allow-Origin:*');
    include('connection.php');
    $statement = $pdo->prepare( "select * from clients");
    $statement->execute();
    $results= $statement->fetchAll(PDO::FETCH_ASSOC);
     
    $json = json_encode($results);
     
    echo $json;
    ?>
    et �a marche tr�s bien cot� Angular j'arrive � r�cup�rer mes donn�es et les afficher, mon probl�me est: je n'arrive pas � envoyer donn�es au serveur et je pense que le probl�me vient de PHP, le fichier utilis� pour la m�thode POST est postClients.php:

    Code PHP : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    header('Access-Control-Allow-Origin:*');
    header('Access-Control-Allow-Headers: Origin, Content-Type, X-Auth-Token');
    echo "Data envoyées";
     
    $data = json_decode(file_get_contents('php://input'));
    echo $data;
    ?>
    et j'ai essay� encore var_dump ($_POST) et �a ne marche pas.

    mes fichier Angular sont:

    1. clients.service.ts
    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
    import { Injectable } from '@angular/core';
    import {Http, Headers} from '@angular/http';
    import 'rxjs/Rx';
     
     
    @Injectable 
    export class ClientsService {
     
      constructor(private http: Http) {}
     
      // obtenir les client du serveur
      getClients() {
        return this.http.get('http://localhost/testPhp/getClients.php');
      }
     
      // form submit to serveur
      postClient(client: any) {
        const headers = new Headers({'Content-Type': 'application/json'});
        console.log('Client object values from form: ');
        console.log(client);
        return this.http.post('http://localhost/testPhp/postClients.php', client, {headers: headers});
      }
    }
    et dans app.component.ts:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    onSubmit(form: NgForm) {
            this.submitted = true;
     
           this.clienteService.postClient(form.value).subscribe(
                (formContents) => console.log('Form contents in app component sended ' + formContents),
                (error) => console.log('Erreur de ' + error)
            );
     
            this.signupForm.reset();
        }
    et avec le console je v�rifie bien que mes donn�es sont envoy�es au service clients.service.ts :

    avec var_dump($_POST) dans mon fichier postClients.php je n'ai pas d'erreur mais j'ai rien cot� serveur
    avec
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    $data = json_decode(file_get_contents('php://input'));
    echo $data;
    j'ai une erreur 500 :

    Merci � vous si vous pouvez me dire comment je peux r�gler ce probl�me

    Gr

  2. #2
    Membre Expert

    Homme Profil pro
    Ing�nieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Ing�nieur Hospitalier
    Secteur : Sant�

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Billets dans le blog
    1
    Par d�faut
    J'ai pas tout regard� ton code mais la premi�re erreur relev� est que tu POST a PHP pas un formulaire en tant que content type mais un JSON .
    Change ton content type par :
    Dans postClient
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    headers: { 
    const headers = new Headers({'Content-Type': 'application/x-www-form-urlencoded'});

  3. #3
    Membre confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2009
    Messages
    67
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : F�vrier 2009
    Messages : 67
    Par d�faut
    merci headmax,
    J'ai chang� mon code dans mon tables.service.ts :
    Code Javascript : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    postTableContent(contents: any[]) {
          const formData: FormData = new FormData();
          formData.append('data', JSON.stringify(contents));
          const headers = new Headers({'Content-Type': 'application/x-www-form-urlencoded'});
          console.log('form data \n' + JSON.stringify(contents));
     
          return this.http.post('http://localhost/silaboBackend/postData.php',
              formData
              , {headers: headers}
          );
      }

    et j'ai toujours rien cot� serveur avec
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    $data = file_get_contents("php://input");
    var_dump ($data);
    var_dump ($_POST)
    je ne vois pas comment r�cup�rer les donn�es cot� serveur?

  4. #4
    Membre Expert

    Homme Profil pro
    Ing�nieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Ing�nieur Hospitalier
    Secteur : Sant�

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Billets dans le blog
    1
    Par d�faut
    Salut est tu sur que le POST vers postClients.php est bien ex�cut� depuis angular? v�rifie si tu as bien un POST F12 (r�seaux) sur ton navigateur. Tu utilise un controler ou un services dans angular?

  5. #5
    Membre confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2009
    Messages
    67
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : F�vrier 2009
    Messages : 67
    Par d�faut
    Merci headmax,

    J'utilise un service:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    postTableContent(contents: any[]) {
          const formData: FormData = new FormData();
          formData.append('data', JSON.stringify(contents));
          const headers = new Headers({'Content-Type': 'application/x-www-form-urlencoded'});
          return this.http.post('http://localhost/silaboBackend/postData.php',
              formData
              , {headers: headers}
          )
              .map(res => res.json());
      }
    dans reseaux j'ai bien:
    status method File Domain Cause Type Transfer Size
    200 Post postData.php localhost xhr 356 B 54

    et dans mon fichier table.ts la methode onSubmit:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    onSubmit(form: NgForm) {
            this.tableContentsS.postTableContent(form.value)
                .subscribe(
                    (formContents) => console.log('Form Contents sended correctly'),
                    (error) => console.log(error)
                );
            // print form values to the console
            // console.log(JSON.stringify(form.value));
            this.signupForm.reset();
            this.viewForm = false;
        }
    j'ai cherch� par tout pour un example claire avec la submission d'un formulaire Angular vers php sur internet et j'ai rien trouv�

    Merci pour ton aide parce que je suis vraiment bloqu�

    Gr

  6. #6
    Membre Expert

    Homme Profil pro
    Ing�nieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Ing�nieur Hospitalier
    Secteur : Sant�

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Billets dans le blog
    1
    Par d�faut
    Salut je vois que tu stringify contents est tu sur de ce que retourne contents? car PHP attends un POST de donn�es brutes non "stringifier" un tableau des inputs et select ... nomm� en fonction de leur attribut name="nom"
    Citation Envoy� par ghatfan99 Voir le message
    formData.append('data', JSON.stringify(contents));

  7. #7
    Membre confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2009
    Messages
    67
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : F�vrier 2009
    Messages : 67
    Par d�faut
    j'ai remplac� le
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
     formData.append('data', JSON.stringify(contents));
    par
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
     formData.append('data', contents);
    et �a donne rien cot� serveur r�ponse vide,
    le
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
     console.log('form data \n' + contents);
    dans le service donne:
    form data
    [object Object]

    Merci

  8. #8
    Expert confirm�
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 100
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 100
    Par d�faut
    Peut-�tre qu�un var_dump($_REQUEST) pourrait donner quelques indices, notamment la taille de la requ�te, pour v�rifier que le serveur re�oit bien les donn�es.

    Quelle est ta version de PHP ? Quel est ton niveau error_reporting ?
    La FAQ JavaScript � Les cours JavaScript
    Touche F12 = la console → l�outil indispensable pour d�velopper en JavaScript !

  9. #9
    Membre Expert

    Homme Profil pro
    Ing�nieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Ing�nieur Hospitalier
    Secteur : Sant�

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Billets dans le blog
    1
    Par d�faut
    Salut , je rajouterais qu'il faut v�rifier les logs Apaches pour plus de pr�cision, mais moins de convivialit� .

    Si tu es sous linux :
    Code ssh : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    sudo tail -n 30 /var/log/apache2/access.log
    sudo tail -n 30 /var/log/apache2/error.log

  10. #10
    Expert confirm�
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 100
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 100
    Par d�faut
    Merci headmax, c�est le genre de truc que j�oublie tout le temps

    Je rajoute un exemple de chemin pour WAMPServer, car j�ai encore la mauvaise habitude de d�velopper sous Windows
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    C:\wampserver3\bin\apache\apache2.4.23\logs\
    La FAQ JavaScript � Les cours JavaScript
    Touche F12 = la console → l�outil indispensable pour d�velopper en JavaScript !

Discussions similaires

  1. R�ponses: 4
    Dernier message: 14/04/2014, 10h24
  2. [ASP .NET2] Post data sur un formulaire
    Par prez dans le forum ASP.NET
    R�ponses: 8
    Dernier message: 17/08/2007, 10h59
  3. Petit cours pour éviter l'envoi POST data d'un formulaire apres un rafraîchissement
    Par maximenet dans le forum Contribuez / T�l�chargez Sources et Outils
    R�ponses: 8
    Dernier message: 07/10/2006, 00h03
  4. Comment supprimer les post data
    Par jeff_! dans le forum Langage
    R�ponses: 4
    Dernier message: 03/08/2006, 10h55
  5. R�ponses: 1
    Dernier message: 15/05/2006, 18h05

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