php wenn nichts im suchen dann letzter artikel anzeigen

Hi,

woher soll ich das wissen? ;) Alles, was Du für die Auswahl gebraucht hast halt. Sorry, aber ich steige durch Deinen Code nicht durch und kann Dir daher nur den theoretischen Ablauf erklären.

LG
 
Hi,

irgendwie speicherst Du doch schon jetzt Deine $_GET-Parameter in die Session. Alles, was Du machen musst, um im Fehlerfall das alte Suchergebnis anzuzeigen, ist, Deine Suche auf die $_GET-Parameter machen und die nur bei Erfolg in die Session zu übernehmen, ansonsten eine Suche auf die in der Session gespeicherten Parameter machen. Ich steige durch Deine Variablen wirklich nicht durch, was soll ich Dir denn sonst sagen?

Na ja, hab ein bischen den Eindruck, dass Du selbst da auch leicht den Überblick verloren hast :)

LG
 
Moin,

danke für die Antwort.
Ich hab ja gesagt das es etwas umständlich ist aber du kennst dich aus für dich ist es ein leichtes. Ich verstehe es nicht.
Ich klicke auf einen Artikel, der wird in den Warenkorb gelegt ohne das sich die Seite geändert hat nur im Suchen will es nicht funktionieren.
Wenn dir mein Code nicht gefällt, dann sag mir wie hättest es du geschrieben. Ich nehme gerne neues an nur Verstehen muss ich es und Geduld brauch derjenige.
Gruß
grübel grübel
 
Jetzt hab ich etwas heraus bekommen.

Wenn ich im Suchen etwas suche was es nicht gibt und dann auf Suchen klicke, wird ja die Seite neu geladen aber der Inhalt der $_SESSION["id"] = LEER was ja nicht sein darf.
Könnte mir da jemand helfen der nicht gleich aufgibt.
Gruß
grübel grübel
 
Hi,

Ich hab ja gesagt das es etwas umständlich ist aber du kennst dich aus für dich ist es ein leichtes.

Das mag sein, aber es ist ein Fehler zu glauben, dass wir kurz auf solche unkommentierten Codeschnipsel schauen und schwups: sofort wissen wir, was das Ganze soll, was die Variablen bedeuten usw. und was genau dann falsch ist.

Könnte mir da jemand helfen der nicht gleich aufgibt.

Was soll das denn heißen? Bist Du mal auf die Idee gekommen, dass "jemand wie ich" einenn Job haben könnte? Ich habe nicht die Zeit, stundenlang auf Deinen Code zu starren, um zu erraten, welche Denkfehler Du so machst. Das hat nichts damit zu tun, dass ich Dir nicht helfen will.

Wie man das prinzipiell lösen könnte, habe ich Dir schon geschrieben, da gehst Du kaum drauf ein. Ich mach's nochmal mit etwas Code, vielleicht klingelt's dann:

PHP:
if(isset($_GET['suchen'])) {     //Formular abschickt?
   // hier Deine Suchabfrage
   // dabei die $_GET-Parameter in die Abfrage stecken
   $sql = "...";
   $result = mysql_query($sql, $connID);
   if(mysql_num_rows($result) > 0) {     // was gefunden?
      $_SESSION['land'] = $_GET['land'];
      ...  // alle Suchparameter in die Session übernehmen
   } else {   // Suche war erfolglos
      $search_failed = true;
      if(isset($_SESSION['land'])) { // gibt's überhaupt eine vorherige Suche
         // Suche auf die Parameter, die in der Session gespeichert sind
         $sql = "...";
         $result = mysql_query($sql, $connID);
      }         
   }
   if(isset($search_failed)) {
      echo "ätsch"; // irgendeinen Hinweis ausgeben, dass nichts gefunden wurde
   }
   if(isset($result)) {     // gibt's ein Suchergebnis?
      // deine Trefferausgabe
   }
}

...$_SESSION["id"] = LEER was ja nicht sein darf.

Und wofür verwendest Du die überhaupt? Warum schusterst Du so eine id aus Sessionwerten zusammen und speicherst das dann wieder in der Session? Ist doch dann doppelt und damit unnötig.

LG
 
Jetzt stelle ich die Frage noch mal weil ich glaube falsch verstanden wurde.
Die Webseite hat 5 Ebenen.
Ich kann mir z.B. die 2te Ebene anschauen auch wenn es noch die 3te Ebene gib, dass bedeutet das die Abfrage an die DB etwas kleiner ist als die Abfrage für die 5te Ebene.

Es gibt also einige query`s „sql“ für die Anzeige der Waren.
Welches sql gerade der Kunde gerade Abgefragt hat weis ich nicht.

1ste IF Hier wird geprüft ob Suchen geklickt wurde oder schon das Ergebnis zu sehen ist.
2 te IF Hier wird das Land in eine Zahl umgewandelt

PHP:
if (isset($suchen) || isset($_SESSION["zugehoer"])){

   if (isset($suchen)){

       /* Hier wird aus Berlin (bm_bez) die Zahl 218 (kat_id) */

$result = mysql_query("
                   SELECT
                        bm_datenbank.minr,
                        bm_datenbank.bm_id,
                        bm_versionen.bm_id,
                        bm_kategorien.kat_bez,
                        bm_kategorien.kat_id,
                        bm_datenbank.zugehoer
                    FROM
                        bm_datenbank,
                        bm_versionen,
                        bm_kategorien,
                        bm_kat
                    WHERE
                        bm_datenbank.bm_id = bm_versionen.bm_id
                    and
                        bm_versionen.bm_id = bm_kat.bm_id
                    and
                        bm_kategorien.kat_id = bm_kat.bm_kat
                    and
                        bm_kategorien.kat_bez = '".$_GET['land']."'
                    AND
                        bm_datenbank.minr = ".$_GET['minr']."
                    group by
                        bm_kategorien.kat_bez
                    ") or die(mysql_error());

                    $suchen1 = mysql_fetch_assoc($result);

                     $_GET["zugehoer"] = $suchen1['zugehoer'];
                     $_GET["kat_id"] = $suchen1['kat_id'];
                     }
                     if(mysql_num_rows($result) > 0) {     // was gefunden?

                          $_SESSION['land'] = $_GET['land'];
                          $_SESSION["zugehoer"] = $_GET["zugehoer"];
                          $_SESSION["menu1"] = $_GET["kat_id"];
                          }
                     else {   // Suche war erfolglos
                            $search_failed = true;
                          }

Hier wird angezeigt wenn Artikel vorhanden.

PHP:
if (isset($_SESSION["zugehoer"])){
   echo $artikel;

          $sql = "SELECT
                    `bm_datenbank`.`bm_bez1`,
                    `bm_datenbank`.`minr`,
                    `bm_datenbank`.`bm_id`,
                    `bm_versionen`.`vers_id`,
                    `bm_versionen`.`art_nr`,
                    `bm_versionen`.`t_preis`,
                    `bm_versionen`.`bild_a`,
                    `bm_versionen`.`bm_id`,
                    `bm_datenbank`.`zugehoer`,
                    `bm_kategorien`.`kat_id`,
                    `bm_kat`.`bm_kat`
               FROM
                    `bm_datenbank`,
                    `bm_versionen`,
                    `bm_kategorien`,
                    `bm_kat`
               WHERE
                    `bm_datenbank`.`bm_id` = `bm_versionen`.`bm_id`
               AND
                    `bm_versionen`.`bm_id` = `bm_kat`.`bm_id`
               AND
                    `bm_kategorien`.`kat_id` = ".$_SESSION["menu1"]."
               AND
                    `bm_datenbank`.`zugehoer` = ".$_SESSION["zugehoer"]."
               GROUP BY
                     bm_versionen.vers_id
               ";

 }

Hier sollen die letzten Angebote angezeigt werden wenn der Artikel vergriffen.

PHP:
if (isset($search_failed)){

echo $keine_artikel;

// Hier soll die Seite angezeigt werden die zuletzt offen war ?

} }

1 ster Fehler Wenn Artikel vorhanden richtige anzeige. Wenn Artikel in den Warenkorb gelegt Falsche Anzeige der Seite.
Die $_SESSION[„zugehoer“] ist dann leer.

$_SESSION[„id“] ist die id die für die Anzeige der einzelnen Seiten ist und zum Blättern.

WIE IMMER FUNKTIONIERT ES NICHT.

Gruß
grübel grübel
 
Zurück