Ankündigung

Einklappen
Keine Ankündigung bisher.

Geburtstage aus einer Access Datenbank an Telegram übergeben

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Geburtstage aus einer Access Datenbank an Telegram übergeben

    Hallo zusammen,

    ich habe mit Hilfe von einer GitHub Libary einen Bot für Telegram erstellt. Der soll mir nun Täglich die aktuellen Geburtstage senden.

    Dazu habe ich folgenden Code gebaut.

    PHP-Code:


    include '/include/Telegram/Telegram.php';



    header("Content-Type: text/html; charset=ISO-8859-1");


    $conn=odbc_connect('proMemberDSN64','','');
    if (!
    $conn)
      {exit(
    "Connection Failed: " $conn);}

    $sql="SELECT
    MITGLIED.NAME,
    MITGLIED.VORNAME,
    int ((now() -[MITGLIED.GEBURTSTAG])/364.65) as Alter,
    Year(Now())-Year([MITGLIED.GEBURTSTAG])  As Age,
    Format([MITGLIED.GEBURTSTAG],'dd/mm/yyyy') AS Geburtstag
    FROM EATRITT INNER JOIN MITGLIED ON EATRITT.MITGLNR = MITGLIED.MITGLNR
    WHERE (((Format([MITGLIED.GEBURTSTAG],'dd/mm/yyyy'))='17.08.XXXX') AND ((EATRITT.OrgID)=1) AND ((EATRITT.Austritt) Is Null))
    ORDER BY Format([MITGLIED.GEBURTSTAG],'dd/mm/yyyy');"
    ;

    //WHERE (((EATRITT.OrgID)=1) AND ((EATRITT.Austritt) Is Null))
    //WHERE (((Format([MITGLIED.GEBURTSTAG],'dd/mm/yyyy'))=Format(Now(),'dd/mm/yyyy')) AND ((EATRITT.OrgID)=1) AND ((EATRITT.Austritt) Is Null))

    $rs=odbc_exec($conn,$sql);
    if (!
    $rs)
      {exit(
    "Error in SQL");}
    $zaehler 0;




    while(
    $myRow odbc_fetch_array$rs )){



     
    $message $myRow['VORNAME']. " " .$myRow['NAME']. " wird Heute ".$myRow['Age'];
     
    //echo $message;


    }

    $inhalt $message;
    var_dump($inhalt);

    //$inhalt = "XYwird Heute 33";

    odbc_close($conn);

    $telegram = new Telegram('XXXXXg');
    $chat_id "XXX";
    $content = array('chat_id' => $chat_id'text' => $inhalt);
    $telegram->sendMessage($content);


    ?> 
    Das Problem ist, wenn ich den Inhalt von §message diekt an Telegram gebe, kommt nix an. Dann war der Gedanke, die Varibale mal unter die While Schleife zu packen.. Auch nix. Wenn ich aber den Inhalt von Var_dump in die Variable packe kommt es direkt an.

    Habt Ihr eine Hilfestellung warum es nicht direkt ankommt?

    var_dump sagt string.

    Liebe Grüße und Vielen Dank

    Matthias

  • #2
    ein

    PHP-Code:
    $content = array('chat_id' => $chat_id'text' => utf8_encode($Inhalt)); 
    hat es heile gemacht.

    Kommentar


    • #3
      Hallo eine Frage noch:

      wenn ich mit
      PHP-Code:
      if (!empty(odbc_fetch_array$rs ))) 
      prüfe.

      und 1 Ergbniss im Ausdruck habe... sagt er mir das message nicht definiert ist. An was liegt das?


      PHP-Code:
      if (!empty(odbc_fetch_array$rs )))
      {

      while(
      $myRow odbc_fetch_array$rs ))
      {

       
      $message $myRow['VORNAME']. " " .$myRow['NAME']. " wird Heute ".$myRow['Age'];
       
      var_dump($message);

      }

      var_dump($message);
      echo 
      utf8_encode($message);


      odbc_close($conn);

      $telegram = new Telegram(XXXX);
      $chat_id "XXX
      $content = array('chat_id' => $chat_id, 'text' => utf8_encode($message));
      $telegram->sendMessage($content);

      Kommentar


      • #4
        und 1 Ergbniss im Ausdruck habe.
        Dann zeige doch mal den Inhalt von $rs bei dem das passiert.

        Kommentar


        • #5
          PHP-Code:
          if (!empty(odbc_fetch_array$rs )))
          {

          while(
          $myRow odbc_fetch_array$rs )) 
          Damit überspringst du den ersten Datensatz... das "fetch" holt Daten und setzt gleichzeitig den internen "pointer" auf den nächsten Datensatz.

          Es reicht "while ($row = ..fetch()) {...}"
          Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

          Kommentar


          • #6
            Der Inhalt von rs ist:

            PHP-Code:
            resource(3of type (odbc result

            wenn ich aus odbc_fetch_Array fetch bzw odbc_fetch mache bekomme ich einen fehler das es diese Funktion nicht gibt.

            Kommentar


            • #7
              Das war nicht worauf Istegelitz hinaus wollte.
              Der Teil hier muss weg:
              PHP-Code:
              if (!empty(odbc_fetch_array$rs )))

              fetch holt den nächsten Datensatz und schiebt dann den Pointer auf den nächsten Datensatz.
              Wenn du vor der Schleife bereits einen Datensatz abholst, steht in der Schleife logischerweise immer einer weniger zur Verfügung.
              Wenn es kein Ergebnis gibt, wird die Bedienung deiner Schleife false und sie wird nicht ausgeführt.

              Kommentar


              • #8
                Ja, ok das verstehe ich.

                Also mit meiner ersten Prüfung bin ich schon zum nächsten DS gesprungen.... diesem gibts aber nicht... daher der Fehler?

                wie prüfe ich dann am sinnigsten ob das array oder in dem Fall rs leer ist... damit ich zum ende hüpfen kann?

                Kommentar


                • #9
                  Ich würde es mit der Anzahl der zurückgegebenen Datensätze probieren.
                  Probieren deshalb, weil es wohl nicht von allen Treibern unterstützt wird.
                  Dieses wird mit odbc_num_rows ausgelesen, beachte auch die Kommentare darunter.

                  Kommentar


                  • #10
                    Scheint so also ob odbc_num_rows nicht bei mir geht ... es liefert immer -1 zurück. Hatte auch die diversen Kommentare angesehen, komme damit aber auch nicht auf ein Ziel.

                    Wie könnte man das noch abfangen?

                    Kommentar


                    • #11
                      Das stand doch im Zweiten der Benutzerkommentare diese beginnen bei User Contributed Notes, davon der 2.
                      .

                      Kommentar


                      • #12
                        Jup... auch wenn ich das überlesen haben... Ist das der Weg den ich gerade gehen wollte... treibt halt die Antwortzeit hoch.....

                        Kommentar

                        Lädt...
                        X