Ankündigung

Einklappen
Keine Ankündigung bisher.

Merkliste durch Session erweitern

Einklappen

Neue Werbung 2019

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

  • Merkliste durch Session erweitern

    Hallo.

    Ich versuche gerade eine Merkliste zu erstellen.

    Derzeit kann ich nur einen Eintrag in diese Liste aufnehmen. Wie erreche ich es, dass ich mehrere Werte in diese Liste aufnehmen kann?

    Hier der Aufruf zu Merken:

    PHP-Code:
    echo '<a id="'$row->objektnr '" style="cursor: pointer;" class="my_Weiterempfehlen" onclick="myPopup2(id)"> Objekt merken</a>'
    dann das Schreiben in die Session:

    PHP-Code:
    <?php
    error_reporting
    (E_ALL); #zeig alle Fehler 
    ini_set('display_errors''1'); 

    require_once 
    'cms/inc/connect.inc.php';
        
    $verbindung = @mysqli_connect($server$benutzer$passwort);
             
         if (
    $verbindung){
             
    mysqli_select_db($verbindung$datenbank);
        
        if(
    mysqli_error($verbindung)){
          echo 
    'Fehler: ' mysqli_error($verbindung);
                      
          }else{
                    
            if (isset(
    $_GET['objektnr'])) {
                                                            
            
    $sql "SELECT objektnr FROM objekte WHERE objektnr = '" $_GET['objektnr'] . "';";
                                                                            
            
    $auswahl mysqli_query($verbindung$sql);
            
            
    print_r($auswahl);
                
                
    $_SESSION['merk_array'][] = array();
                                            
                while(
    $merken mysqli_fetch_assoc($auswahl))
                {
           
                
    $_SESSION['merk_array']['objektnr'] = $merken['objektnr'];
                                
                }
            
            echo 
    "<center><strong>Das Objekt wurde gemerkt.</strong></center><br><br>";        
                     
            } else { 
    "<center><strong>Das Objekt wurde nicht gemerkt.</strong></center><br><br>";        
        }
    } }        echo 
    '<center><div><input type= "submit" name="" value="zurück zum Objekt" onclick="window.opener.location.reload(true); setTimeout(window.close(),1000);"></div></center>';
    ?>
    und letztendlich die Ausgabe im Listenbereich:

    PHP-Code:
    <?php             

        
    if(empty($_SESSION['merk_array']['objektnr'])) {
        
        echo 
    "Kein Objekt in der Merkliste";
        
        }else{
            
        
    $merken $_SESSION['merk_array']['objektnr'];    
            
        echo 
    '<a href="objekt_detail.php?objektnr='$merken '" style="cursor: pointer;">'$merken '</a>'; }
    ?>

  • #2
    $_SESSION['merk_array']['objektnr'] erweitern. $_SESSION['merk_array']['objektnr'][].

    Kommentar


    • #3
      Hallo,

      du überschreibst deine Sessionwerte immer selbst indem du ständig in

      PHP-Code:
      $_SESSION['merk_array']['objektnr'] = $merken['objektnr']; 
      schreibst.

      Stattdessen solltest du z.B.

      PHP-Code:
      $_SESSION['merk_array'][] = $merken['objetnr']; 
      machen und das brauchst du auch nicht in einer while-Schleife zu machen, da du ja eine (hoffentlich) eindeutige ID abfragst...

      Grüße,

      Dirk

      Kommentar


      • #4
        Hallo und vielen Dank erstmal.

        Ich habe den betreffenden Bereich wie folgt geändert:

        PHP-Code:
        $_SESSION['merk_array'][] = array();
                                                
                    while(
        $merken mysqli_fetch_assoc($auswahl))
                    {
               
                    
        $_SESSION['merk_array']['objektnr'][] = $merken['objektnr'];
                                    
                    } 
        Die Ausgabe modifiziert auf:

        PHP-Code:
        $merken $_SESSION['merk_array']['objektnr'];
                
                foreach(
        $_SESSION['merk_array'] as $key){
                
                
        $merken $key['objektnr']; ----> <Line 14
            
                
        echo '<a href="objekt_detail.php?objektnr='$merken '" style="cursor: pointer;">'$merken ',&nbsp;</a>';
            
                } 
        Nun verhält es sich so das ich alle Objekte (5 in der Zahl) in der Liste angezeigt bekommen, zuätzlich erhalte ich noch folgende Fehlermeldung:

        Code:
        Notice: Undefined index: objektnr in /nav/navi_merkliste.php on line 14
        , das ganze 8 mal, warum auch immer.

        Nachtrag:
        PHP-Code:
        $merken $_SESSION['merk_array']['objektnr'];
        var_dump($merken); 
        Ich habe zwei mal ein Objekt ausgewählt:

        array(2) { [0]=> string(5) "AS001" [1]=> string(5) "AS002" }, die Session ist schon mal korrekt.

        Kommentar


        • #5
          PHP-Code:
          $_SESSION['merk_array']['objektnr'][] = $merken['objektnr']; 
          PHP-Code:
          $merken $key['objektnr']; 
          Du speicherst in Line 14 ein Array in der Variable merken, nicht den Wert!
          Ein Beispiel für Line 14 wäre
          PHP-Code:
          $key->['objektnr'][1
          anstelle von
          PHP-Code:
          $key->['objektnr'
          um DEN WERT in $merken zu speichern.

          Müsstest doch aber eig. selbst erkennen, augrund des var_dump, dass $merken ein Array ist.

          Kommentar


          • #6
            Du speicherst in Line 14 ein Array in der Variable merken, nicht den Wert!
            Ok das verstehe ich soweit, aber die Auflösung über $key->['objektnr'][1] verstehe ich ehrlich gesagt nicht so ganz.

            Ich habe es jetzt so gelöst:

            PHP-Code:
            }else{
                                            
                    foreach(
            $_SESSION['merk_array']['objektnr'] as $key){
                        
                    echo 
            '<a href="objekt_detail.php?objektnr=' $key '" style="cursor: pointer;">' $key '</a>&nbsp;&nbsp;';
                
                    } 
            Das funktioniert einwandfrei und ist für mich auch logisch.

            Kannst du mir bitte noch mal deine Variante näher bringen, ich möchte das gerne verstehen, danke.

            Gruß

            Kommentar

            Lädt...
            X