Update eines externen Fensters

papabaerchen

Mitglied
Hi.

Ich habe folgendes Problem: Ich möchte einen merkzettel für Produkte, bzw Ersatzteile programmieren. Mittels php/mysql wird anhand der artikelnummer der artikel ausgelesen und preis, bezeichnung, lagerfach und so angezeigt. Jetzt habe ich mir das so vorgestellt, dass wen man auf den Link "merken" klickt, sich ein neues Fenster öffnet und dieses Fenster eben auch den Artikel, Bezeichnugn und so anzeigt. Somit kann man im hauptfenster einen zweiten artikel suchen ohne das der erst verloren geht.
So gesehen ist es kein Problem das mit variablen zu übergeben, nur, jetzt kommts, wenn ich den zweiten artikel auch wieder merken will, wird der erste gelöscht. Ich möchte aber das in dem neues Fenster dann beide Artikel angezeigt werden. Ich habe schon ein paar sachen ausprobiert, von abspeichern in sessions bis hin zu cookies aber ich habe immer das problem das ich meist nicht den unterschied zwischen ersten und zweiten machen kann da ich die variablen nicht automatisch gleichmäßig nummerieren kann. Klar bei fünf variablen könnte ich das mit der hand machen aber was ich bei 50

Kennt jemand ne lösung oder wenigstens einen ansatz zur Lösung?

Danke.
 
Ähm...

Ich verstehe dein Problem glaub ich nicht weil mir die Lösung zu einfach scheint.

Hast du es schon mal mit arrays probiert?

Das ist auf jeden Fall die einfachste Möglichkeit etwas durchzunummerieren.

btw: Kannst du demnächst ein paar mehr Absätze machen? Es ist unheimlich schwer deinen Eintrag zu lesen finde ich.
 
Hier einmal ein Beispiel.
Hoffe Du verstehst was ich da an Code gesendet habe.


Ausschnitt aus Artikelliste:
PHP:
<?php 
     error_reporting(E_ALL);
     session_start();
     $sess = session_id();
          
     if(isset($_POST['submit']) && preg_match('/^([0-9]{1,4})$/',$_POST['Anzahl'])){
            $_SESSION['Artikelnummer'] = $_POST['Artikelnummer'];
            $_SESSION['Anzahl'] = $_POST['Anzahl'];
         header('Location:showcart.php?sess='.$sess.'');
     }
     
     //Rest des Code.........


?>
Ausschnitt aus Warenkorb:
PHP:
<?php
     session_start();
     $sess = session_id();
     if( !isset($_SESSION['cart'])){
     $_SESSION['cart'] = array();
     }

 $_SESSION['cart'][$_SESSION['Artikelnummer']] = $_SESSION['Anzahl'];//Artikelnummer und Artikelanzahl in das Array $_SESSION['cart'] schreiben.

     include('connect.inc.php');
     mysql_select_db("Datenbankname", $link) or die(mysql_error());     

 foreach($_SESSION['cart'] AS $key => $values){ // Auslesen der Artikelnummer und Artikelanzahl und aus der Datenbank anzeigen lassen.
     
             $sql = 'SELECT 
                             `ArtikelNr`,
                             `Artikelname`,
                             `Preis`
                     FROM
                             `artikel`
                     WHERE    
                             `ArtikelNr` = '.$key.'
                     ';
      
            $result = mysql_query($sql)or die(mysql_error());
        $row = mysql_fetch_object($result);
        $summ = $row->Preis * $values;
        $summ2 += ($row->Preis * $values);
        $summ_anzahl = $summ_anzahl + count($values); 
         
            if( !empty($key)){
            echo '<tr><td>'.$row->ArtikelNr.'</td>
                  <td>'.$row->Artikelname.'</td>
              <td>'.number_format($summ, 2,',','.').'</td>
                      <td>'.$values.'</td>
<td><a href="cart.php?sess='.$sess.'&art_nr='.$row->ArtikelNr.'">Anzahl ändern</a></td>
<td><a href="showcart.php?sess='.$sess.'&delete='.$row->ArtikelNr.'">löschen?</a></td>
                      </tr>';
     
             }
      }
echo '<tr><td colspan="2"><b><a href="index.php?sess='.$sess.'">< < < Hauptseite</a></b></td>
            <td colspan="4"><b>'.number_format($summ2, 2,',','.').'</b></td>
            </tr>';
      echo '</table>';
      echo '</body>';
      echo '</html>';
      mysql_close();

?>
 
Sorry, kapier ich nicht.....

Ich habe den ganzen Lösungsansatz jetzt mal so geschrieben:
PHP:
//länge wie die session gültig ist; anzahl wie oft überprüft wird.
ini_set("session.gc_maxlifetime", 1200);
ini_set("session.gc_probability", 100);
//starten wir die Session; regestrieren wir ein paar session-variablen
session_start();
session_register(s_counter);
session_register(s_seite);


//übernehmen wir die wichtigen Daten aus der URL
$nummer =$HTTP_GET_VARS["artikelnummer"];
$fach =$HTTP_GET_VARS["fach"];
$preis =$HTTP_GET_VARS["preis"];
$bezeichnung =$HTTP_GET_VARS["bezeichnung"];

//ist s_counter noch null wird es jetzt eben 1 oder es wird um eins hochgezählt
$s_counter ++;

//geben wir s_counter aus, nur zum test
echo $s_counter."<br>";


//NUmmer, bezeichnung usw in neuer variable speichern, getrennt durch "@"-zeichen
$inhalt=$nummer."@".$bezeichnung."@".$preis."@".$fach."@";
//exestiert s_session schon, dann wird inhalt an s_seite angehängt. Ansonsten wird sie neu definiert.
if ($s_seite == "") {$s_seite = $inhalt;} else {$s_seite = $s_seite.$inhalt;}

echo "<script>window.open('session.php?', 'merken','width=640,height=480,scrollbars=yes,location=yes')</script>";
echo '<script language="JAVASCRIPT">window.opener = top;window.self.close();</script>';
und in der datei die das ganze auslesen soll:
PHP:
session_start();


$artikel = explode("@", $s_seite);
echo $s_seite;

so schön so gut, nur das problem was ich habe, ich kann ja die einzelnen einträge von $s_seite auslesen indem ich sie mit $s_seite[1] usw, fixe und anzeigen lasse. Nur wenn jetzt vorher zwei artikel übergeben worden sind muss der zweite artikel ja nicht bei $s_seite[0] anfangen sondern eben von 4 bis 7 alles auslesen. Bei drei artikel bei 8 anfangen.....
Wie bekomme ich das hin
Theoretisch kann ich doch auch eine variable hochzählen lassen die mir immer $s_seite[x] neu definiert. Nur geht das? der befehl $s_seite[.$counter.] oder wie muss cih das machen
 
Aha, ok, guter Befehl. Nur bleibt dann immer noch die sache wie ich das ganze wieder geordnet ausgeben kann. Es soll ja nacheinander in 4er-Gruppe ausgegeben werden, wobei ich nicht vorher weiß wieviele dieser Gruppen es gibt.
 
Zurück