Probleme mit $_array und $_session.

  • Hallo bin neu hier und hoffe auf ein wenig Unterstützung.

    Ich möchte Serienbriefe erstellen(und etwas Später auch Serienmails).

    Das Prinzip ist derart aufgebaut, dass sich die Informationen im Baukastenprinzip
    zusammenstellen.

    1. Adressauswahl
    2. Textauswahl
    3. Grafikauswahl
    4. Ausgabe der zusammengestellten Informationen in PDF mittels dompdf.

    Leider harpert es schon beim schreiben in das Array.

    Hier mal die Ursprungsdatei für die Auswahl der Adressen mittels checkbox.

    Im nächsten Schritt sollen die Daten mittles POST in die Session geschrieben werden

    Eine Ausgabe per:

    PHP
    <?php echo '<pre>';
    print_r($_SESSION['adressarray']);
    echo '</pre>'; ?>

    ....ergibt, dass er mir immer nur den letzten Datensatz anzeigt.

    Nach meiner Annahme ist es wohl so, dass er immer wieder das Array überschreibt.

    Kann mich bitte mal jemand bei dieser ersten Etappe begleiten und mir etwas Input verabreichen :)

    Danke
    Der
    Hauser

  • ändere das:


    zu dem:

    beim testen zuerst die session löschen!!! sonst sind die bestehenden daten fehlerhaft

    Something big is coming. And there will be pirates and ninjas and unicorns...

  • Aus

    $_SESSION['adressarray']['firma'] = $kontakte['firma'];

    mache

    $_SESSION['adressarray'][$count]['firma'] = $kontakte['firma'];

    Setze dann $count++ in dein Schleife zum bleistift

  • Hallo !

    Ich habe jetzt ein Testbereich erstellt:

    1. Adressen Senden
    Ich habe 3 Testadressen mit Herr Test1 ... Herr Test3 angelegt.
    2. Adressen in die Session
    3. Ausgabe der Adressen

    zu 1. Wie im 1. Posting.

    zu 2. habe ich jetzt wie Dodo es beschrieben hat in die session1.php geschrieben......

    session1.php

    ... und in der session2.php includet:

    session2.php(Ausgabe)

    Leider kommt dabei nur 9 x Herr Test1 raus, also 9 x die Anzahl der Variablen mit Herr Test 1.

  • ändere beim auslesen das:


    zu dem hier:

    Something big is coming. And there will be pirates and ninjas and unicorns...

  • Hallo Dodo, vielen lieben Dank, dass du dich meiner so annimmst, das ist nicht selbstverständlich, glaube mir....lach....:D

    Nun gut, ich habe dein Script so angewand:

    Ergebnis ist :

    HerrTest3

    Die Ausgabe müsste aber:

    HerrTest1HerrTest2HerrTest3

    sein.

    Deine Script scheint mir als vollkommen logisch. Evtl. ist der Hund doch eher im $auswahl begraben und er sendet nur den einen Eintrag. Hmmm...

  • Ein

    PHP
    <?php
    echo '<pre>';
    print_r($_SESSION['adressarray']);
    echo '</pre>';
    ?>

    gibt folgenden Wert zurück:
    Array
    (
    [0] => Array
    (
    [firma] =>
    [anrede] => Herr
    [vorname] => Test3
    [name] =>
    [strasse] =>
    [plz] =>
    [ort] =>
    [email] =>
    [telefon] =>
    )

    )

  • dann änder mal das hier:


    auf das hier:

    PHP
    while($_SESSION['adressarray'][] = mysqli_fetch_assoc($auswahl));


    (ja, das soll so kurz sein ;D
    aber lösche vor dem test die session und baue sie neu auf.

    Something big is coming. And there will be pirates and ninjas and unicorns...

  • OK, der Print meldet:

    Array
    (
    [0] => Array
    (
    [ID] => 403
    [quelle] => Test
    [anrede] => Herr
    [vorname] => Test3
    [name] =>
    [firma] =>
    [strasse] =>
    [plz] =>
    [ort] =>
    [email] =>
    [telefon] =>
    [status] =>
    )

    [1] =>
    )

  • ja ganz einfach: Da ist nur Test3 drin. Bzw. es wird nur Test3 ausgelesen.

    PHP
    $auswahl= intval($_POST['auswahl']);
            $sql = "SELECT * FROM kontakte WHERE ID = ".$auswahl;

    Dadurch wird auch klar, wieso ;)
    Ich schätze mal, deine ID ist unique.
    Dadurch existiert nur ein eintrag, der dies erfüllt.

    Something big is coming. And there will be pirates and ninjas and unicorns...

  • Ich habe es nachgeschaut die ID ist in der DB nicht auf unique gesetzt.

    Ich habe den Code:

    PHP
    echo "<tr> <td><input type='checkbox' name='auswahl' value={$kontakte['ID']}></td>";

    mal auf

    PHP
    echo "<tr> <td><input type='checkbox' name='auswahl[]' value={$kontakte['ID']}></td>";

    geändert und mit :

    PHP
    <?php    
    echo '<pre>';
    print_r($_POST['auswahl']);
    echo '</pre>';
    ?>

    ausgeben lassen. Ergebnis ist:

    Array
    (
    [0] => 401
    [1] => 402
    [2] => 403
    )

    Also wird die Auswahl doch gesetzt, bzw. ich muss am
    name='auswahl' value={$kontakte['ID']} etwas anders machen.

  • gut, jetzt ändere das hier:

    PHP
    $auswahl= intval($_POST['auswahl']);
            $sql = "SELECT * FROM kontakte WHERE ID = ".$auswahl;


    auf das hier

    PHP
    foreach($_POST['auswahl'] as $k => $v)
              $auswahl[$k]= intval($v);
            $where = implode(' OR ID = ', $auswahl);
            $sql = "SELECT * FROM kontakte WHERE ID = ".$where;


    Ist nicht getestet, aber sollte klappen.
    du liest nur eine ID aus der datenbank aus. dadurch bekommst du auch nur eine.

    Something big is coming. And there will be pirates and ninjas and unicorns...

  • Hab es geändert:

    Nun gibt es folgende Fehlermeldungen:

  • LOL fantastic !!!

    HerrTest1HerrTest2HerrTest3 Array
    (
    [0] => Array
    (
    [ID] => 401
    [quelle] => Test
    [anrede] => Herr
    [vorname] => Test1
    [name] =>
    [firma] =>
    [strasse] =>
    [plz] =>
    [ort] =>
    [email] =>
    [telefon] =>
    [status] =>
    )

    [1] => Array
    (
    [ID] => 402
    [quelle] => Test
    [anrede] => Herr
    [vorname] => Test2
    [name] =>
    [firma] =>
    [strasse] =>
    [plz] =>
    [ort] =>
    [email] =>
    [telefon] =>
    [status] =>
    )

    [2] => Array
    (
    [ID] => 403
    [quelle] => Test
    [anrede] => Herr
    [vorname] => Test3
    [name] =>
    [firma] =>
    [strasse] =>
    [plz] =>
    [ort] =>
    [email] =>
    [telefon] =>
    [status] =>
    )

    [3] =>
    )

    Nun kann ich weitermachen, danke dir erstmal bis dato !!!

    Ich hoffe dich darf dich bei Fragen nochmals belästigen :D

    Werde das Thema erstmal nachbearbeiten und genau analysieren damit
    ich es auch ganz und gar verstehe !!!

    Recht herzlichen Dank.
    :danke2: