In ein Array schreiben ...

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

  • #16
    Gut, verstanden. Aber was ist, wenn es jetzt ein Newsletter-System ist, und der Admin stellt Artikel für den Monat August zusammen und er stellt die eine Hälfte im Juli ein und die andere erst Anfang August? Was dann?

    Kommentar


    • #17
      wenn er artikel 'zusammenstellt', werden diese einfach mit hilfe eine weiteren spalte für den newsletterversandt 'markiert'.

      dein select auf diese EINE tabelle benützt in der where das flag. somit kommen dann nur diese 'zusammengestellten' artikel rein.
      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


      Kommentar


      • #18
        Ich werd' mal drüber schlafen. Klingt interessant.

        Kommentar


        • #19
          Original geschrieben von Innuendo
          Klingt interessant.
          und vor allem ist es sauber.

          und 1000%ig besser als deine variante...
          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


          Kommentar


          • #20
            Deine PHP-MySQL-Künste würde ich NIE anzweifeln. Vielleicht bekomme ich es ja hin.

            Kommentar


            • #21
              Original geschrieben von Innuendo
              Deine PHP-MySQL-Künste würde ich NIE anzweifeln.
              OffTopic:
              dann kann ich ja wieder schlafen gehen...


              wenn noch fragen dazu sind. einfach in DIESEN thread posten.....
              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


              Kommentar


              • #22
                Ich habe mir jetzt folgendes überlegt:

                Das vorherrschende Problem bezüglich des Newslettersystems ist ja, dass die Artikel nicht einzeln, sondern sozusagen ausgabeweise im Archiv liegen sollen. Das soll bedeuten, dass, wenn der Nutzer im Archiv ist, er nicht jeden Artikel einzeln sehen soll, sondern immer die komplette Ausgabe (in der er dann erst die einzelnen Artikel ansehen kann).

                Meine Idee ist jetzt, 2 Tabellen anzulegen. Die erste besteht aus 3 Spalten: Monat, Jahr und Artikel-IDs. Sie könnte also ungefähr so aussehen:

                Code:
                Monat     Jahr     Artikel-IDs
                -------------------------------------------------------------------
                Juli      2003     5730639f*|*12432587*|*g6ff98d0....
                Die IDs werden also per Trennzeichen, hier *|*, in die Spalte geschrieben. So könnte ermittelt werden, welche Artikel zu welcher Ausgabe gehören.

                Die zweite Tabelle enthält dann die Artikel an sich.

                Die Artikel im Archiv liegen dort nur zur Ansicht, sprich sie können nicht bearbeitet werden. Also würde es doch reichen, pro Ausgabe eine PHP-Seite zu erzeugen, die genauso wie der Newsletter aussieht und dort entsprechend die IDs der Artikel aus der jeweiligen Ausgabe enthält.

                Wie wäre es mit der Herangehensweise? Bin dankbar für jeden Tipp.

                Kommentar


                • #23
                  ich würde eine tabelle für die artikel machen. ist klar soweit. das hattest du dir ja auch gedacht.

                  aber ich würde gar nicht erst mit der MÜLL-trennung anfangen.

                  hier mal was besseres. ich hatte grad mal gute laune.

                  Code:
                  # phpMyAdmin MySQL-Dump
                  #
                  # Table structure for table `archiv`
                  #
                  # Creation: Jul 03, 2003 at 02:09 PM
                  # Last update: Jul 03, 2003 at 02:09 PM
                  #
                  
                  DROP TABLE IF EXISTS `archiv`;
                  CREATE TABLE `archiv` (
                    `ArcId` int(11) NOT NULL auto_increment,
                    `ArcDate` date NOT NULL default '0000-00-00',
                    `ArtId` int(11) NOT NULL default '0',
                    PRIMARY KEY  (`ArcId`),
                    UNIQUE KEY `ArcDate_ArtId` (`ArcDate`,`ArtId`)
                  ) TYPE=MyISAM AUTO_INCREMENT=7 ;
                  
                  #
                  # Dumping data for table `archiv`
                  #
                  
                  INSERT INTO `archiv` (`ArcId`, `ArcDate`, `ArtId`) VALUES (1, '2003-05-01', 1);
                  INSERT INTO `archiv` (`ArcId`, `ArcDate`, `ArtId`) VALUES (2, '2003-05-01', 2);
                  INSERT INTO `archiv` (`ArcId`, `ArcDate`, `ArtId`) VALUES (3, '2003-06-01', 3);
                  INSERT INTO `archiv` (`ArcId`, `ArcDate`, `ArtId`) VALUES (4, '2003-06-01', 4);
                  INSERT INTO `archiv` (`ArcId`, `ArcDate`, `ArtId`) VALUES (5, '2003-06-01', 5);
                  INSERT INTO `archiv` (`ArcId`, `ArcDate`, `ArtId`) VALUES (6, '2003-07-01', 6);
                  # --------------------------------------------------------
                  
                  #
                  # Table structure for table `artikel`
                  #
                  # Creation: Jul 03, 2003 at 02:04 PM
                  # Last update: Jul 03, 2003 at 02:07 PM
                  #
                  
                  DROP TABLE IF EXISTS `artikel`;
                  CREATE TABLE `artikel` (
                    `ArtId` int(11) NOT NULL auto_increment,
                    `ArtText` text NOT NULL,
                    PRIMARY KEY  (`ArtId`)
                  ) TYPE=MyISAM AUTO_INCREMENT=7 ;
                  
                  #
                  # Dumping data for table `artikel`
                  #
                  
                  INSERT INTO `artikel` (`ArtId`, `ArtText`) VALUES (1, 'artikel 1');
                  INSERT INTO `artikel` (`ArtId`, `ArtText`) VALUES (2, 'artikel 2');
                  INSERT INTO `artikel` (`ArtId`, `ArtText`) VALUES (3, 'artikel 3');
                  INSERT INTO `artikel` (`ArtId`, `ArtText`) VALUES (4, 'artikel 4');
                  INSERT INTO `artikel` (`ArtId`, `ArtText`) VALUES (5, 'artikel 5');
                  INSERT INTO `artikel` (`ArtId`, `ArtText`) VALUES (6, 'artikel 6');

                  und die passende abfrage dazu. diese muss natürlich angepasst werden.

                  Code:
                  SELECT  *
                  FROM    archiv
                              LEFT OUTER JOIN artikel USING(ArtId)
                  INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                  Kommentar


                  • #24
                    Puh. LEFT OUTER JOIN. Damit habe ich mich noch nicht befasst. Ist mir NOCH zu kompliziert. Ich probiere es mal aus und sag' Dir Bescheid.
                    Zuletzt geändert von ; 03.07.2003, 13:17.

                    Kommentar


                    • #25
                      @Abraxax:

                      Ich versteh's nicht. Ist mir zu hoch. Erklärst Du mir mal bitte die folgende Zeile?

                      PHP-Code:
                      $sql "SELECT * FROM archiv LEFT OUTER JOIN artikel USING(ArtId)"
                      Und aus Deiner Tabellenidee werde ich, ehrlich gesagt, auch nicht schlau.

                      Kommentar


                      • #26
                        in der tabelle artikel sind alle artikel drin. jeder artikel hat eine id. ein datum ist nicht angegeben. ist auch nicht weiter schlimm...

                        in der tabelle archiv wird eine fortlaufende id vergeben. anschliessend ein datum, an dem ein bestimmter artikel erschien. dabei wir nun aber nur die id aus der aktikel-tabelle angegeben. so können auch mehrere artikel an einem tag verbunden werden. (theoretisch könnte man statt der artid auch direkt den text des artikels dort einbinden. nur ist man relativ unflexibel, wenn man die artikel noch woanders benötigen sollte. dort könnte man sie nämlich nur durch die id bereits verwenden)

                        die abfrage geht so. hole mit alles aus dem archiv raus. und 'verbinde' beide tabellen (left outer join) aufgrund der artid (using). (das feld artid heisst in beiden tabellen so)

                        durch das LEFT OUTER JOIN wird zuerst links nachgeschaut (also tabelle archiv) und dann rechts (artikel) die passende id geholt und der text eingebunden.

                        du kannst auch noch mehr artikel in der artikel-tabelle haben. solange sie nicht vom archiv verwendet werden, können sie nicht gezeigt werden.

                        verstanden?

                        hoffe ich doch mal. ansonsten schaue mal im mysql-manual nach JOIN.
                        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                        Kommentar


                        • #27
                          @Abraxax:

                          Das wird mir zu kompliziert. Ich steig' da nicht hinter. Ich glaube, ich nehme den Ansatz, den ich weiter oben erklärt habe (wo in die eine Tabelle alle Artikel, die zu einer Ausgabe gehören, mittels *|* in der entsprechenden Zeile stehen). Da blicke ich wenigstens halbwegs durch. Dieses "LEFT OUTER JOIN"-Ding ist mir zu kompliziert. Mal unabhängig davon, dass ich dann immer noch nicht das Problem mit den "Ausgaben" gelöst habe. Aber danke dennoch für Deine Mühen.

                          Kommentar

                          Lädt...
                          X