Sabine: Problem mit select

Hallo!

Ich habe folgendes Problem. In meinem CMS habe ich ein Skript zum Editieren von z.B. Produktkategorien - klicke ich auf einen bestimmten Link, gebe ich die ID der Kategorie über den URL weiter - also z.B. http://irgendwas?cat_id=$cat_id. Die aufgerufene Seite liest mir dann die Inhalte der Zeile mit der übergebenen $cat_id aus meiner Tabelle aus - also select * from category where cat_id=$cat_id.

So weit so gut, allerdings habe ich auf meiner Seite ein Menü, dass auch diese Tabelle benötigt - hier rufe ich alle Einträge der Tabelle auf - select * from category und aus dieser Abfrage wird dann das Menü generiert.

Die zwei Abfragen behindern sich aber. Meine übergebene $cat_id kommt dann nicht durch - ich nehme an, weil ich zuvor eben die Abfrage über die gesamte Tabelle habe und somit $cat_id ein Array ist, oder?

Kann mir bitte irgendjemand sagen, wie und ob ich dieses Problem lösen kann?? Ich habe schon versucht, am Beginn (also vor der Abfrage für das Menü den übergebenen Wert aus der URL in einer Variable zu speichern, was mir aber leider nicht geglückt ist.

Danke im Voraus.
Sabine

  1. Ich habe folgendes Problem. In meinem CMS habe ich ein Skript zum Editieren von z.B. Produktkategorien - klicke ich auf einen bestimmten Link, gebe ich die ID der Kategorie über den URL weiter - also z.B. http://irgendwas?cat_id=$cat_id. Die aufgerufene Seite liest mir dann die Inhalte der Zeile mit der übergebenen $cat_id aus meiner Tabelle aus - also select * from category where cat_id=$cat_id.

    So weit so gut, allerdings habe ich auf meiner Seite ein Menü, dass auch diese Tabelle benötigt - hier rufe ich alle Einträge der Tabelle auf - select * from category und aus dieser Abfrage wird dann das Menü generiert.

    Die zwei Abfragen behindern sich aber. Meine übergebene $cat_id kommt dann nicht durch - ich nehme an, weil ich zuvor eben die Abfrage über die gesamte Tabelle habe und somit $cat_id ein Array ist, oder?

    Nein. So aus deiner sehr groben Erklärung heraus würde es bedeuten, daß eine SQL-Abfrage oder die Erzeugung der HTML-Ausgabe munter irgendwelche PHP-Variablen überschreibt - das ist definitiv unmöglich. Ohne explizite Zuweisung mit "=" wird keine Variable überschrieben (Ausnahme: indirekt, aber das ist wohl auch nicht der Fall).

    Du mußt irgendeinen anderen Fehler drin haben, aber ohne Kenntniss deines Quelltextes kann dir da keiner weiterhelfen. Ganz allgemein kann ich dir nur empfehlen, mit einem zusätzlichen "var_dump($cat_id);" hinter jeder Anweisung zwischen Beginn des Skripts und Erstellung des Menüs zu verfolgen, wo der Wert von $cat_id sich ändert.

    Eine zweite Möglichkeit, an die Variablen aus der URL zu kommen ist übrigens das Feld $HTTP_GET_VARS (bzw. ab PHP 4.1.0 $_GET, siehe http://www.php.net/release_4_1_0.php), also in diesem Falle $HTTP_GET_VARS["cat_id"].

    Gruß,
      soenk.e

    1. Ich habe folgendes Problem. In meinem CMS habe ich ein Skript zum Editieren von z.B. Produktkategorien - klicke ich auf einen bestimmten Link, gebe ich die ID der Kategorie über den URL weiter - also z.B. http://irgendwas?cat_id=$cat_id. Die aufgerufene Seite liest mir dann die Inhalte der Zeile mit der übergebenen $cat_id aus meiner Tabelle aus - also select * from category where cat_id=$cat_id.

      So weit so gut, allerdings habe ich auf meiner Seite ein Menü, dass auch diese Tabelle benötigt - hier rufe ich alle Einträge der Tabelle auf - select * from category und aus dieser Abfrage wird dann das Menü generiert.

      Die zwei Abfragen behindern sich aber. Meine übergebene $cat_id kommt dann nicht durch - ich nehme an, weil ich zuvor eben die Abfrage über die gesamte Tabelle habe und somit $cat_id ein Array ist, oder?

      Nein.

      Ohne explizite Zuweisung mit "=" wird keine Variable überschrieben

      Du mußt irgendeinen anderen Fehler drin haben,

      Oha, keine drei Minuten und ich stolpere in http://forum.de.selfhtml.org/?m=26923&t=4797 über das hier:

      ---------8<-------------8<-------------8<-------------8<----
      <?php
      $query = "select * from category";
      $result = safe_query($query) or die(mysql_error());

      [..]

      while (list($cat_id, $category, $button, $buttonover) = mysql_fetch_array($result))
      --->8------------->8------------->8------------->8----------

      Nun sag doch bitte, daß das NICHT der Code ist, der dir obige Probleme bereitet. Bitte, bitte, bitte ;)
        soenk.e

      1. Hallo Soenke!

        Ich habe folgendes Problem. In meinem CMS habe ich ein Skript zum Editieren von z.B. Produktkategorien - klicke ich auf einen bestimmten Link, gebe ich die ID der Kategorie über den URL weiter - also z.B. http://irgendwas?cat_id=$cat_id. Die aufgerufene Seite liest mir dann die Inhalte der Zeile mit der übergebenen $cat_id aus meiner Tabelle aus - also select * from category where cat_id=$cat_id.

        Das ist zwar mein Code, dieser Teil meines Codes betrifft auch mein jetziges Problem - das aber ein anderes ist, als ich damals hatte (beim anderen Posting). Mittlerweile ist aber auch das Problem mit der Variable $cat_id und dem Menü bzw. CMS gelöst.

        lg, Sabine

    2. Hallo Sönke!

      Hoffentlich liest du diesen Thread noch mal durch - ich möchte mich nämlich gerne bei dir bedanken. Hatte jetzt das gleiche Problem mit meinen Subkategorien und habe es nun gleich mit $HTTP_GET_VARS versucht und es hat auf Anhieb geklappt.

      Dankeschön!!!

      Eine zweite Möglichkeit, an die Variablen aus der URL zu kommen ist übrigens das Feld $HTTP_GET_VARS (bzw. ab PHP 4.1.0 $_GET, siehe http://www.php.net/release_4_1_0.php), also in diesem Falle $HTTP_GET_VARS["cat_id"].

      Gruß,
        soenk.e

      Schöne Grüße
      Sabine