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

Langage PHP Discussion :

socket dans un formulaire


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de dlecteur
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 147
    Points : 95
    Points
    95
    Par défaut socket dans un formulaire
    Bonjour a tous,

    j'ai un formulaire qui écrit dans une base MYSQL en cliquant sur un bouton add(add.php), je voulais donc savoir si je peux en meme temps envoyé ces données(separé par un délimiter) via une socket a un daemon? si oui un exemple serait vraiment le bienvenue. Merci a tous.

    Cdt.

  2. #2
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Qu'est ce qui te bloque ? L'utilisation de socket.

    Parce ce que le fait qu'il y ait un formulaire ca n'ajoute pas de difficulté, tu ajoutes tes fonctions socket dans le meme traitement que l'insertion en base de donnée.

  3. #3
    Membre régulier Avatar de dlecteur
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 147
    Points : 95
    Points
    95
    Par défaut
    Merci pour la réponse ;
    ce qui me bloque c'est que je connais pas php! un exemple d'une telle fonction est donc appreciable

    Cdt.

  4. #4
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 243
    Points
    20 243
    Par défaut
    Il faut regarder du coté des fonction socket_*

    Un petit exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
    socket_set_option($socket,SOL_SOCKET,SO_RCVTIMEO,array('sec'=>$timeout,'usec'=>$timeoutmicrosec));
    if(socket_connect($socket,$adresse,$port))
    {
        $data = json_encode($_POST);
        $size = strlen($data);
        socket_write($socket,$data,$size);
    }
    Il faut juste voir comment transférer les données de ton formulaire. Dans l'exemple j'ai convertit en json parce que c'est relativement standard et ca permet de tout envoyer d'un coup, mais tu peux tout à fait envoyer octet par octet si tes données le permettent.

  5. #5
    Membre régulier Avatar de dlecteur
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 147
    Points : 95
    Points
    95
    Par défaut
    merci grunk pour la réponse, j'ai ajouté ton code dans mon formulaire php, mais j'ai ce warning:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: socket_connect() [function.socket-connect]: unable to connect [111]: Connection refused in /var/www/TEST/test_form.php on line 132
    malgré le fait que j'ai spécifié un port et une adresse ip.

    Cdt.

  6. #6
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 243
    Points
    20 243
    Par défaut
    CE message veux simplement dire que le serveur n'a pas accepter la connection sur le port donné.
    Donc soit le serveur n'est pas le bon , soit le port n'est pas correct , mais il n'ya rien sur quoi la socket puisse se connecter.

    Tu peux essayer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo socket_strerror(socket_last_error())
    pour peut être avoir plus de détail

  7. #7
    Membre régulier Avatar de dlecteur
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 147
    Points : 95
    Points
    95
    Par défaut
    Merci,

    et comment je peux ajouter un séparateur par exemple ( entre les champs pour faciliter le parsing derriere.

    Merci.

    Cdt.

  8. #8
    Membre régulier Avatar de dlecteur
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 147
    Points : 95
    Points
    95
    Par défaut
    l'erreur que j'ai c'est une connection timed out.

    Cdt.

  9. #9
    Membre régulier Avatar de dlecteur
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 147
    Points : 95
    Points
    95
    Par défaut
    Autre question, j'ai un bouton add dans mon formulaire et lorsque je click dessus il doit envoyé les data sur la socket en plus de l'ajout dans une BD Mysql, comment je peux donc faire avec une seule action le déclenchement de deux événements (add.php et socket.php). Jusqu'à present c'était juste (add.php pour l'ajout dans la BD).

    Cdt.

  10. #10
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 243
    Points
    20 243
    Par défaut
    et comment je peux ajouter un séparateur par exemple ( entre les champs pour faciliter le parsing derriere.
    Ca c'est à toi de voir, soit tu concatène bêtement tes données du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $datas = $_POST['nom'].'|'.$_POST['prenom'].'|'.$_POST['machin'];
    Soit tu utilises un format standard type json qui permet de sérialiser ton tableau post.

    l'erreur que j'ai c'est une connection timed out.
    Le timeout se règle avec : socket_set_option , voir la doc à ce sujet.

    Autre question, j'ai un bouton add dans mon formulaire et lorsque je click dessus il doit envoyé les data sur la socket en plus de l'ajout dans une BD Mysql, comment je peux donc faire avec une seule action le déclenchement de deux événements
    Mettre l'ajout en bdd et l'envoi sur la socket dans le même fichier.

  11. #11
    Membre régulier Avatar de dlecteur
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 147
    Points : 95
    Points
    95
    Par défaut
    Merci bcp pour ces infos, pour le fait de mettre les deux dans le meme fichier, je ne vois pas comment, car dans ce cas la fonction socket sera lancé automatiquement?! plus de precision est necessaire sur ce point. merci.

    Cdt.

  12. #12
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 243
    Points
    20 243
    Par défaut
    Citation Envoyé par dlecteur Voir le message
    Merci bcp pour ces infos, pour le fait de mettre les deux dans le meme fichier, je ne vois pas comment, car dans ce cas la fonction socket sera lancé automatiquement?! plus de precision est necessaire sur ce point. merci.

    Cdt.
    Oui , mais il me semble que c'est ce que tu souhaite faire : Quand je clic ca envoi dans la bdd et sur la socket.
    Ou alors j'ai rien compris ?

  13. #13
    Membre régulier Avatar de dlecteur
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 147
    Points : 95
    Points
    95
    Par défaut
    oui c'est bien ca, la je crois que j'ai un probleme avec :

    socket_set_option($socket,SOL_SOCKET,SO_RCVTIMEO,array('sec'=>$timeout,'usec'=>$timeoutmicrosec));

    car dés que la connection est up elle se referme sans envoyé de data?!

    Merci.

    Cdt.

  14. #14
    Membre régulier Avatar de dlecteur
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 147
    Points : 95
    Points
    95
    Par défaut
    je n'ai pas compris cette option:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array('sec'=>$timeout,'usec'=>$timeoutmicrosec)

  15. #15
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 243
    Points
    20 243
    Par défaut
    C'est la valeur de timeout en seconde pour le premier et en micro seconde pour le second

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array('sec'=>2,'usec'=>0)
    Donnera un timeout de 2sec à ta socket

  16. #16
    Membre régulier Avatar de dlecteur
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 147
    Points : 95
    Points
    95
    Par défaut
    ok merci, mais k'ai toujours ce pb de time out. en tout cas merci bcp.

    Cdt.

  17. #17
    Membre régulier Avatar de dlecteur
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 147
    Points : 95
    Points
    95
    Par défaut
    finalement j'arrive a envoyer les données sur ma socket quand j'ajoute un bouton (add with socket par exemple), alors que moi je veux une seule action simultanée quand je clique sur ADD c'est a la fois faire un ajout dans la base et envoyer les données sur ma socket. et ca pour l'instant ce n'est pas gagné.

    voila mon code :

    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
    52
    53
    54
    55
    <?php
           echo "<title>Formulaire des clinets</title>";
           echo "<form method=\"post\" action=\"add.php\" name=\"f1\">";
     
           echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"2\">\n";
     
           echo "<tr class=\"champsname\"><td><b>Name</b></td>";
           echo "<td><input type=\"texte\" name=\"name\"/></td>";
           echo "</select></td></tr>\n";
     
           echo "<tr class=\"champsdirection\"><td><b>Direction</b></td>";
           echo "<td colspan=\"2\"><select name=\"direction\">";
           echo "<option value=\"V\">Vente</option>";
           echo "<option value=\"M\">Marketing</option>";
           echo "</select></td>";
           echo "</tr>\n";
     
           echo "<tr class=\"champsdescription\"><td><b>Description</b></td>";
           echo "<td colspan=\"2\"><textarea name=\"description\">";
           echo "</textarea></td>";
           echo "</tr>\n";
           echo "</tr>\n";
     
           echo "<tr class=\"champsphoneNumber\"><td><b>Phone Number</b></td>";
           echo "<td><input type=\"text\" name=\"phoneNumber\" /></td>";
           echo "</tr>\n";
     
           echo "<tr class=\"champsemail\"><td><b>Email</b></td>";
           echo "<td><input type=\"text\" name=\"email\" /></td>";
           echo "</tr>\n";
           echo "</tr>\n";
           echo "</tr>\n";
     
           echo "<tr><td colspan=\"2\">";
           echo "<tr><td colspan=\"2\" align=\"center\">";
           echo "<input type='submit' value='ADD' onclick=\"this.form.target='_blank';return true;\">";
           echo "</td></tr>";
           echo "</table>\n";
           echo "</form>";
     
           // The socket
           $adresse = "localhost";
           $port = 1920;
     
           $socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP) or die("Could not create socket\n");
           socket_set_option($socket,SOL_SOCKET,SO_RCVTIMEO,array("sec"=>10,"usec"=>0));
           if(socket_connect($socket,$adresse,$port))
           {
                   $data = $_POST['name'].':'.$_POST['direction'].':'.$_POST['description'].':'.$_POST['phoneNumber'].':'.$_POST['email']."\n";
                   $size = strlen($data);
                   $buff_sock = socket_write($socket,$data,$size);
           }
     
       }
    ?>
    Merci.

    Cdt.

Discussions similaires

  1. récupération d'un socket dans un autre formulaire
    Par dark-skywalker dans le forum Windows Forms
    Réponses: 3
    Dernier message: 18/03/2011, 22h04
  2. Forcer la saisie en MAJ dans un Formulaire
    Par lolos dans le forum IHM
    Réponses: 4
    Dernier message: 12/08/2003, 10h57
  3. Réponses: 3
    Dernier message: 19/03/2003, 15h19
  4. Réponses: 2
    Dernier message: 12/02/2003, 15h26
  5. [CR][Access] intégrer un viewer dans un formulaire access
    Par nicolak dans le forum SAP Crystal Reports
    Réponses: 7
    Dernier message: 13/01/2003, 15h52

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