Partage
  • Partager sur Facebook
  • Partager sur Twitter

peut enregistrer une requete dans plusieurs variab

    26 mai 2018 à 23:15:36

    Bonjour tts le monde,

    j'aimerais savoir si c'est possible de faire la chose suivante.

    1) on se connecte à la base de donnée

    2) je lance la requete pour extraire une colonne avec des numeros de telephone ok

    3) je parcours le tableau dans avec un fetchall

    4) j'enregistre les 10 premiers resutlat dans une variable 

    $numero1 à $numero10

    si oui comment peut t-on parcourir un tableau et prendre les 10 premiers resultat de numero de telephone dans 10 variable différente et après continuer 10 autres jusqu’à la fin du tableau ? 

    merci de votre aide

    -
    Edité par michael10fr 27 mai 2018 à 8:45:24

    • Partager sur Facebook
    • Partager sur Twitter
      27 mai 2018 à 17:39:50

      Bonjour,

      Quel peut être l'intérêt de faire ainsi puisque tu les as déjà tes 10 premières variables dans les 10 premières valeurs du tableau ?

      Si c'est pour mettre tout dans une variable tu peux faire de la concaténation des 10 premières valeurs avec un séparateur.

      Par exemple :

      $variable = $tab[0].",".$tab[1]."," .... etc

      ou utiliser implode : http://php.net/manual/fr/function.implode.php

      Mais sans en savoir plus je ne vois pas l'intérêt.

      A+

      • Partager sur Facebook
      • Partager sur Twitter
        27 mai 2018 à 18:17:13

        bonjour Monkey3D

        merci beaucoup pour ta reponse , je t'explique ce que je veux faire.

        je veut envoyer 10 messages simultanement via une api type url get ci-dessous

        et le probleme est que la boucle fetch lie une ligne par une ligne et ne me permet d'envoyer ou executer une seul url à la fois??

        moi ce que je veux c'est envoyer en masse 10 messages par 10 message soit de boucler 10 premier message en parrallele au lieu d'attendre que la boucle est fini pour envoyer un seul message à la fois.

        que ferais tu toi pour gerer le faire que j'ai 1000 sms a envoyer via mon api et j'attend les 1000 un a la suite de l'autre c'est trop long alors j'ai pensez executer le meme lien en parallele 10 fois ou plus 100fois.

        jespére que  tu comprend ce que je veux faire

        voici mon code

        <?php include("inc/header.php"); ?>
        <?php include("inc/menugauche.php"); ?>
        <?php include("inc/compteur.php"); ?>
        
        
        <?php
        error_reporting( E_ALL );
        ini_set( 'display_errors', 1 );
        
         //1) Connexion au serveur SQL
             $server = "localhost";
             $login = "root";
             $pass = "";
             $comptRow = "";
        
             try {
               $connexion = new PDO("mysql:host=$server;dbname=sms;charset=utf8", $login , $pass);
               $connexion -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
               echo 'connexion établie à la base de donnée <br>';
        
        // 2) Preparation de la requete
              $requete1 = $connexion->prepare(
                "SELECT numero FROM numeros "
              );
              $requete1->execute();
              $resultat = $requete1->fetch(); // je recupere la requete ici
        
        // 3) DEBUT VARIABLE GENERALE
              $username = "user";
              $password = "pass";
              $tel = $resultat['numero'];
        	  
              $from ="0000000000"; // assigned Sender_ID
              $message = urlencode( $_POST["message"]); // Message text required to deliver on mobile number
        
               $data = "username="."$username"."&password="."$password"."&from="."$from"."&to="."$tel"."&text="."$message";
               $url = "https://www.sms.com/myaccount/sendsms.php?".$data;
        
              $arrContextOptions=array( //  4) j'annule le SSL ICI
                 "ssl"=>array(
                     "verify_peer"=>false,
                     "verify_peer_name"=>false,
                 ),
              );
        
                $nb = count($resultat);
                 foreach ( $resultat as $numero ){
                   // boucle foreach enregistré dans la variable $article
                  echo $nb;
                  echo  '<div id="msgSubmit2" style="color:#5cb85c;font-size:25px text-align=center;" class="h3 text-center"> '.$nb.' Message Envoyé !!! </div>';
            
                  $result = file_get_contents($url);
                  echo $result;
        
                }
                 // ferme la boucle
        
        
        
        
              }
            catch (PDOException $e) {
                echo 'Echec de la connexion:' .$e->getMessage();
            }
        
        
        ?>
        



        • Partager sur Facebook
        • Partager sur Twitter
          28 mai 2018 à 5:52:53

          Au premier post tu dis fetchall et là en ligne 26 je vois fetch ... ce n'est pas pareil.

          Ensuite ligne 31, tu affectes dans $tel la valeur du numéro de la ligne en cours.

          Alors à quoi sert en ligne 46 de compter la taille du résultat puisque c'est un fetch ? ligne 47 à quoi sert le foreach puisque une seule ligne et que tu as déjà une variable avec le numéro ?

          Avec fetchall, tu peux récupérer toutes les lignes d'un seul coup. Et à mon avis, cela ne prend pas beaucoup de temps.

          Ensuite il suffit de parcourir le tableau pour avoir les valeurs.

          Quand à faire du parallèlisme avec php, ce n'est pas vraiment fait pour mais il existe des possibilités avec certaines extensions.

          Je ne pense pas avoir tout compris de ta logique.

          A+

          • Partager sur Facebook
          • Partager sur Twitter
            28 mai 2018 à 8:23:15

            Bonjour Monkey3d

            je parler de fetchAll parce que je me suis dit de changer mon fetch car il prenais ligne par ligne justement et çà allez pas assez vite.

            Mon but est de faire un masse emailing sms ok

            le problem du script actuelle est qui faut attendre que la premier requete soit executer pour que la suivante soit envoyer c'est trés trés long surtout si ta 1000 sms a envoyer ????

            ce que je recherche c'est une solution pour executer en parallele le $result = file_get_contents($url);

            en prenant comme variable $tel  les 100 numeros suivant.

            exemple: j'ai 1000 sms a envoyer , je veux que le script lance 100 connexion à l'api simultanément et dans 100 connexion prennent les 100 premiers numero de telephone de la bd dans une variable $tel - $tel100 par exemple  quand un thread ce libere, il prend le numero suivant sans reprendre le meme numero qu'il a deja envoyer, jusqu'a à la fin de tout les numero de la table numeros et de l'envoie des 1000 message sms.

            voila ce que je veux faire.

            Par contre je ne sais pas comment  prendre 100 numeros de tel  dans 100 variable $tel1 - $tel100 et je ne sais pas envoyer en paralelle la requete $result = file_get_contents($url);

            et surtout garder un pointeur pour ne pas renvoyer un sms à ce qu j'ai déjà envoyer...

            voila le challenge que je veux arriver a faire..

            le compteur de ligne sert à savoir combien de sms a envoyer et me baser sur ce compteur pour stoper la boucle foreach.

            peut etre que ma logique bizzard mais je suis débutant donc je demande qu'a apprendre ...

            si tu a d'autre solution je suis trés ouvert pour apprendre de nouvelle façon professionnel de le faire 

            merci de ton aide..

            -
            Edité par michael10fr 28 mai 2018 à 8:30:53

            • Partager sur Facebook
            • Partager sur Twitter
              28 mai 2018 à 10:52:03

              Donc je redis :

              1) tu fais un fetchall et tu récupères les données en base d'un seul coup ... et cela ne prendra pas beaucoup de temps.

              Pour voir la forme du tableau que tu récupères tu fais un vardump de la variable ou un print_r et tu vas voir qu'il est facile de récupérer dans une boucle chaque valeur de numéro.

              2) si tu veux traiter les résultats par pas de 10, 100 ... tu fais une boucle for de 1 à 10, 100 par exemple .... et tu lances pour chaque valeur une thread : http://php.net/manual/fr/class.thread.php

              Enfin c'est une idée.

              A+

              -
              Edité par monkey3d 28 mai 2018 à 10:52:45

              • Partager sur Facebook
              • Partager sur Twitter

              peut enregistrer une requete dans plusieurs variab

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown