Ankündigung

Einklappen
Keine Ankündigung bisher.

Array und Inhalt einer TXT

Einklappen

Neue Werbung 2019

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

  • Array und Inhalt einer TXT

    Hallöchen PHP.de Gemeinde,

    hätte eine Frage an euch. Programmiere an einem Script das per SMS einen alarm an gewisse eingetragene User verschickt wird.

    Trage über einen Formular (Nachname,Vorname,Telefonnummer,Ort) ein. Diese Daten werden in eine Daten.txt erfasst und mit einem | getrennt.

    zb.:
    test|test|0043123456789|Österreich

    Der SMS versandt läuft derzeit so.
    PHP-Code:
    <?php

    $verbindung 
    = @mysql_connect("xxx.xxx.at","xxxx")
            or die (
    "User falsch!");

    mysql_select_db("xxxx"$verbindung)
            or die (
    "SQL-Fehler: " mysql_error());

    $nr = array(0043123456789,0043987654321);
    foreach (
    $nr as $nummer) {
    $sqlins "insert into outqueue (nummer,text)";
    $sqlins .= "values ('00$nummer','TEST Einsatz  - beim Portier melden')";
    $insdb mysql_query($sqlins)or die(mysql_error());
    }

    unset (
    $nummer);

    echo 
    '<br />';
    echo 
    '<br />';
    echo 
    '<center><font Color="green"><b>Uebungsalarm - SMS erfolgreich versendet!</b></font></Center>';
    echo 
    '<br />';
    echo 
    '<br />';
    echo 
    '<Center><a href="index.php"><img alt="startseite" height="48" src="images/startseite.png" width="48" /></a></Center>';
    ?>
    funktioniert auch tadellos

    Nun will ich aber hergehen und das array so abändern, das es mir aus der daten.txt rein die nummern ausliest und diese dann per sms kontaktiert werden.

    Habe es so probiert aber leider ohne erfolg.:
    PHP-Code:
    <?php

    $verbindung 
    = @mysql_connect("xxx.xxx.at","xxxx")
            or die (
    "User falsch!");

    mysql_select_db("xxxx"$verbindung)
            or die (
    "SQL-Fehler: " mysql_error());

    $nr file("daten.txt");
    foreach (
    $nr as $nummer) {
    $sqlins "insert into outqueue (nummer,text)";
    $sqlins .= "values ('00$nummer','TEST Einsatz  - beim Portier melden')";
    $insdb mysql_query($sqlins)or die(mysql_error());
    }

    unset (
    $nummer);

    echo 
    '<br />';
    echo 
    '<br />';
    echo 
    '<center><font Color="green"><b>Uebungsalarm - SMS erfolgreich versendet!</b></font></Center>';
    echo 
    '<br />';
    echo 
    '<br />';
    echo 
    '<Center><a href="index.php"><img alt="startseite" height="48" src="images/startseite.png" width="48" /></a></Center>';
    ?>
    Vielleicht könnt ihr mir weiterhelfen wie ich das zum laufen bringe

    lg

  • #2
    Fortgeschritten? Weder das Problem, noch der Lösungsansatz ist "Fortgeschritten". Siehe Wer darf hier posten?.

    HTML gibt man seit mehr als 10 Jahren nicht mehr echo aus.

    Hinweise:

    Die original mysql-Erweiterung ist veraltet (mysql_*-Funktionen) und wird in den kommenden Versionen aus PHP entfernt. Aktuell wirft sie schon E_DEPRECATED-Fehler bei einer Verbindung zur Datenbank. Des Weiteren stehen dir sehr viele tolle Features von mysql mit diesen Funktionen nicht zur Verfügung! Weiterführende Links:
    Choosing an API
    Warum man mysql* generell nicht (mehr) nutzen sollte.
    Wie man von mysql* auf PDO umsteigt
    Wissenswertes zum Thema SQL-Injection

    Der schließende Tag eines PHP-Blocks am Ende einer Datei ist optional. In einigen Fällen ist das Weglassen hilfreich:
    • Es können ungewollte Whitespaces am Ende einer Datei auftreten, durch die ein späteres setzen von headern be-/verhindert werden kann.
    • Außerdem verhindert dies, dass beim Output Buffering Whitespaces am Ende eines durch die eingebundenen Dateien erzeugten Parts.
    • Im PSR Standard (PSR-2) ist ?> sogar ausdrücklich verboten, wenn in einer Datei ausschliesslich PHP verwendet wird (2.2 Files).

    Kommentar


    • #3
      PHP-Code:
      $nr = array(0043123456789,0043987654321); 
      Das ist definitiv falsch! Die Zahlen in dem Array sind unter Garantie nicht die, die du haben möchtest.

      Siehe und staune:
      PHP-Code:
      $nr = array(0043123456789,0043987654321);
      var_dump($nr); 
      Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

      Kommentar


      • #4
        Zitat von lstegelitz Beitrag anzeigen
        Das ist definitiv falsch! Die Zahlen in dem Array sind unter Garantie nicht die, die du haben möchtest. (so werden die SMS aber verschickt und kommen an) Es geht jetzt darum, das ich in diesem array die nummern aus der txt was angelegt wird automatisch übernimmt. ohne das ich das immer händisch machen muss)

        Siehe und staune:
        PHP-Code:
        $nr = array(0043123456789,0043987654321);
        var_dump($nr); 

        Kommentar


        • #5
          Jup, das Problem ist, das PHP bei richtigen Integers die führenden Nullen wegnschneidet. Das hast du anscheinend auch bemerkt udn dann ganz galant so gelöst:

          PHP-Code:
          $sqlins .= "values ('00$nummer','TEST Einsatz  - beim Portier melden')"
          Wenn die Daten jetzt allerdings aus einer anderen Datei kommen, dann werden die Nummern nicht als Integer (Zahlen) angesehen, sondern als Strings. Dann brauchst du die beiden Nullen natürlich nichtmehr davor zu packen, da das sonst vermutlich nicht funktioniert.

          Achja, un wenn die daten tatsächlich so vorliegen wie von dir im Text beschrieben, musst du natürlich auch noch die Nummer "rauschneiden". In deinem Fall wäre wohl ein explode() nach "|" sinnvoll. Aber da musst du mal genau gucken, was in der Datenbank ankommt und was nicht funktioniert. Dieser Prozess heißt im Allgemeinen übrigens Debuggen.

          Kommentar


          • #6
            Jup, das Problem ist, das PHP bei richtigen Integers die führenden Nullen wegnschneidet.
            Leider nein. Schreibst du vor ein Integer eine 0, dann wird die nachfolgende Zahl "zur Basis 8" (Oktalzahl) gewertet...

            Dieser Code:
            PHP-Code:
            $nr = array(0043123456789,0043987654321); 
            var_dump($nr); 
            erzeugt folgende Ausgabe:
            Code:
            array(2) {
              [0]=>
              int(73742711)
              [1]=>
              int(35)
            }
            Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

            Kommentar


            • #7
              Ok, das ist interessant. Wusste ich auch nicht....

              Kommentar

              Lädt...
              X