else Regel soll zwei Werte aus einer Tabelle kontrollieren, und einen anderen abfragen

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

  • else Regel soll zwei Werte aus einer Tabelle kontrollieren, und einen anderen abfragen

    Als Basis dafür nehme ich folgenden Code :
    PHP-Code:
    <?php
    if ( $sectionid == 0) {
       
    Bereits vorhandener Code der Übersicht halber weggelassen
    } else {
       
    Code welcher zwei Felder Kontollierenund den Wert eines dritten Feldes ausgeben soll
    }
    ?>

    If tritt nur ein, wenn es sich um einen Bericht handelt, es tritt nicht ein, wenn es eine Inhaltsangabe ist. Ist das die Regel erfüllt, wird eine Datenbankabfrage gemacht, und ein Ergebnis angezeigt. Dabei handelt es sich z.B. um das Datum. Wird die Regel nicht erfüllt, fehlt die Datumsangabe. Dort soll dann das Datum aus aktuellste Bericht der in diesem Inhaltsverzeichnis angezeigt werden.
    Was hinter else kommt ist das Problemkind.

    Die Contenttabelle in MySQL führt alle Berichte auf, sowohl die News von 2005 und 2006. Das Inhaltsverzeichnis ist als Category News 2006 als Section News.
    Die Abfrage müsste so sein, dass sie nur in dem Inhaltsverzeichnis mit übereinstimmenden Section/Categorien sucht. Das wären dann die id's aus der Spalte sectionid und catid. In beiden Fällen wäre es 1. Der Code soll aber heraussuchen, um welche Section und Categorry es sich handelt, dann bleiben nur noch die Berichte aus der Tabelle übrig, die im Inhaltsverzeichnis angezeigt werden. Jetzt gilt es nur noch das aktuellste Datum herauszufinden, und dann anzuzeigen.

    Wie sieht der Code, bzw die Codeteile aus?

  • #2
    man könnte dir besser helfen, wenn du deine DB-Struktur mal posten würdest.
    Sunshine CMS
    BannerAdManagement
    Borlabs - because we make IT easier
    Formulargenerator [color=red]Neu![/color]
    Herkunftsstatistik [color=red]Neu![/color]

    Kommentar


    • #3
      Die gesammte Datenbank könnte sehr umfangreich sein, ich stelle mal die Bereiche da, welche wichtig sein könnten:

      Joomla > Tabelle > jos_categories
      Joomla > Tabelle > jos_content
      Joomla > Tabelle > jos_section


      jos_jos_content: (Hier nur die Überschriften der Spalten)
      id
      title
      title_alias
      introtext
      fulltext
      state
      sectionid
      mask
      catid
      created
      created_by
      created_by_alias
      modified
      modified_by
      checked_out
      checked_out_time
      publish_up
      publish_down
      images
      urls
      attribs
      version
      parentid
      ordering
      metakey
      metadesc
      access
      hits

      Die anderen Tabellen müßte ich dann einzelnd als Anhang beifügen
      Angehängte Dateien
      Zuletzt geändert von Yehudi; 06.02.2006, 12:19.

      Kommentar


      • #4
        categories2
        Angehängte Dateien

        Kommentar


        • #5
          section
          Angehängte Dateien

          Kommentar


          • #6
            Hier die Struktur von jos_content: http://www.noreasontodie-music.com/l...ur-content.jpg

            Hier die Struktur von jos_categories:
            http://www.noreasontodie-music.com/l...categories.png
            Hier die Struktur von jos_section:
            http://www.noreasontodie-music.com/l...os_section.png

            EDIT:
            Ein halbes MB an Bildern direkt eingebunden - aber sonst geht's dir noch gut?
            wahsaga

            Zuletzt geändert von wahsaga; 06.02.2006, 21:37.

            Kommentar


            • #7
              Das liegt doch auf meinem Server.
              Zitat von Benny-one : "man könnte dir besser helfen, wenn du deine DB-Struktur mal posten würdest."
              Und ich wollte den Leuten einfach das klicken auf den Link sparen. Kleiner hätte man das nicht darstellen können, sonst wäre es unleserlich geworden.

              Kommentar


              • #8
                Trotzdem müssen die Bilder jedes mal erst geladen werden.
                Ich z.B. hab nicht eins deiner Bilder angesehen.

                btt:
                Wie übergibst du denn die Werte? Wo speicherst du, welche Kategorie oder Sektion oder was auch immer ausgelesen werden soll?
                Per URL? Per Post-Formular? Per Abfrage aus der DB?

                Wieso machst du nicht einfach an der Stelle, wo du dein Ergebniss haben willst, eine Abfrage mit einer where-Klausel "where id = $section_id"?
                Sortieren kannst du das ganze mit "ORDER BY" am Ende deines Query's.
                mfg - sagg

                Kommentar


                • #9
                  Original geschrieben von sagg
                  Trotzdem müssen die Bilder jedes mal erst geladen werden.
                  Ich z.B. hab nicht eins deiner Bilder angesehen.


                  Fand ich auch ein bisschen verwunderlich, denn das entsprechend anzupassen, das dürfte nicht das Problem sein. (z.B. "sagg" gegen "Yehudi" auf der DB austauschen)

                  Original geschrieben von sagg
                  btt:
                  Wie übergibst du denn die Werte? Wo speicherst du, welche Kategorie oder Sektion oder was auch immer ausgelesen werden soll?
                  Per URL? Per Post-Formular? Per Abfrage aus der DB?
                  Die Daten werden aus der DB geholt. sectionid wäre ein Wert, und daraus der Wert von catid.

                  Original geschrieben von sagg
                  Wieso machst du nicht einfach an der Stelle, wo du dein Ergebnis haben willst, eine Abfrage mit einer where-Klausel "where id = $section_id"?
                  Sortieren kannst du das ganze mit "ORDER BY" am Ende deines Query's.
                  Wenn ich
                  PHP-Code:
                  $query "SELECT introtext FROM `jos_content` WHERE id='$sectionid"
                  mache, dann habe ich zwar ein Ergebnis auf den Seiten also Inhaltsverzeichnissen, auf denen ich es haben will, aber nicht das Richtige.

                  Wenn ich
                  PHP-Code:
                  $query "SELECT introtext FROM `jos_content` WHERE sectionid='$sectionid"
                  mache erhalte ich auf allen Seiten eine Anzeige - durch die else Funktion bekomme ich das für die Seiten wo es nicht sein soll weg - aber ich habe in der Anzeige mehrere Ergebnisse aus der Nachbarkategorie. Der Unterschied der bei Kathegorien besteht in der "catid". Wenn also aus der Category, aus welcher das Inhaltsverzeichnis angezeigt wird, den Wert X hat, so müßte es doch möglich sein nur diesen Wert anzuzeigen. Wenn ich
                  PHP-Code:
                  $query "SELECT introtext FROM `jos_content` WHERE sectionid='$sectionid ORDER BY  catid "
                  angebe, erhalte ich aus die Ergebnisse, wie vorher auch, nur das mit der kleinsten catid das Ergebnis oben steht.
                  Ich will aber nur die Ergebnisse mit der catid, die sich auf das Inhaltsverzeichnis beziehen.

                  Kommentar


                  • #10
                    select bla from tabelle where catid=$deine_catid?

                    Ich verstehe nicht wirklich was daran so schwierig ist.
                    mfg - sagg

                    Kommentar


                    • #11
                      Es gibt keinen festen Wert. Ich müßte also in der Zeile
                      PHP-Code:
                      $query "SELECT introtext FROM `jos_content` WHERE sectionid='$sectionid' ORDER BY  catid "
                      statt "ORDER BY catid" was anderes einsetzen, die also nur die entsprechende catid anzeigt. Das ganze geht nur mit Variablen. Wenn ich catid statt sectionid einsetze, dann erhalte ich ein ganz anderes Ergebnis, irgend so'n Copyright von Joomla.

                      Kommentar


                      • #12
                        Derzeit sieht der Code so aus:

                        PHP-Code:
                         /* Verbindung aufbauen, ausw&auml;hlen einer Datenbank */
                        $link mysql_connect("192.168.3.1""root""")
                           or die(
                        "Keine Verbindung m&ouml;glich: " mysql_error());
                        echo 
                        "Verbindung zum Datenbankserver erfolgreich";
                        mysql_select_db("joomla") or die("Auswahl der Datenbank fehlgeschlagen");

                        /* ausf&uuml;hren einer SQL Anfrage */
                        $query "SELECT introtext FROM `jos_content` WHERE sectionid='$sectionid'";
                        $result mysql_query($query) or die("Anfrage fehlgeschlagen: " mysql_error());

                        /* Ausgabe der Ergebnisse in HTML */
                        echo "<table>\n";
                        while (
                        $line mysql_fetch_array($resultMYSQL_ASSOC)) {
                           echo 
                        "\t<tr>\n";
                           foreach (
                        $line as $col_value) {
                               echo 
                        "\t\t<td><div class=\"grauzone\">$col_value</div></td>\n";
                           }
                           echo 
                        "\t</tr>\n";
                        }
                        echo 
                        "</table>\n";

                        /* Freigeben des Resultsets */
                        mysql_free_result($result);

                        /* schliessen der Verbinung */
                        mysql_close($link); 
                        catid hat Zahlen von 1-15 derzeit. Das heißt im derzeitigen Ergebnis werden mehre Ergebnisse aus 1-15 angezeigt. Anhand die catid ist klar welche Kategorie gemeint ist. Ist das Ergebnis bsp.1, dann sollen nur von dem obigen Code die Ergebnisse mit der 1 in catid angezeigt werden, ist es 15, dann nur 15, etc.

                        Kann mir jemand beim Erstellen und einfügen des Codes helfen?

                        Kommentar


                        • #13
                          Entweder bin ich begriffsstutzig oder Du beschreibst dein Problem nicht richtig. Du redest was von catid - ich seh in Deinem Source aber keine catid.

                          Beschreib doch mal ganz langsam und ausführlich was Du erreichen willst.

                          Kommentar


                          • #14
                            Catid ist dort nicht enthalten, weil ich es nicht eingebaut bekomme. Das derzeitige Ergebnis könnte durch catid selektiert werden.
                            Das Inhaltsverzeichnis besteht aus deckt sich mit der catid.
                            Alle Berichte mit 1 sind in dem Inhaltsverzeichnis News 2001, und 2 News 2002 etc. - Wobei die Jahreszahlen unabhängig davon sind. 6 könnte z.B. Witze 2005 haben. Die catid vom Inhaltsverzeichnis muss sich mit der von den introtexten decken, alle anderen introtexte müssen ausgeblendet werden.

                            Kommentar


                            • #15
                              geh doch mal mit PHPmyAdmin in Deine Datenbank und schau Dir an welchen SQL-Befehl Du brauchst um die korrekten Datensätze auszuwählen.

                              Falls dieser Befehl immer unterschiedlich sein sollte weil es ja verschiedene Inhaltsverzeichnisse gibt, dann nimmst erst mal einen (z.B. Witze 2005) und gibst den Inhalt dieser Anfrage mit php korrekt formatiert aus.

                              Anschließend schaust was an der sql-Anfrage geändert werden muß, damit die anderen Ergebnisse geliefert werden.

                              Edit:

                              hab mir Dein Beispiel noch mal angeschaut:
                              Wenn Du mit dem obigen Source die Ergebnisse der Kategorie 1 korrekt angezeigt bekommst, dann mußt Du ja nur vor der Datenbankanfrage die Variable sectionid ändern. Wo kommt die Variable denn her? Aus nem Formular per POST oder GET oder woher?
                              Zuletzt geändert von Koala; 07.02.2006, 20:38.

                              Kommentar

                              Lädt...
                              X