Ankündigung

Einklappen
Keine Ankündigung bisher.

1 Datensatz pro "ID"

Einklappen

Neue Werbung 2019

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

  • 1 Datensatz pro "ID"

    Hallo

    Vorweg: bin blutiger Anfänger...

    Ich habe 2 sql Datensätze (freunde;freunde_links)

    +----+------------+-----------------------+
    | ID | Name | Titel |
    +----+------------+-----------------------+
    | 1 | test1 | test1 |
    | 2 | test2 | test2 |
    | 3 | test3 | test3+images |


    +----+------------+-----------------------+
    | ID | NewsID | Link |
    +----+------------+-----------------------+
    | 2 | 3 | images/ich.jpg |
    | 3 | 3 | images/ich.jpg |
    | 4 | 3 | images/ich.jpg |


    ausgeben tu ich die...

    PHP-Code:
        $sql "SELECT
                    freunde.ID,
                    freunde.Titel,
                    DATE_FORMAT(freunde.Datum, '"
    .DATE_STYLE."') AS Changedatum
                FROM
                    freunde
                ORDER BY
                    freunde.Datum DESC
                    "
    ;
        
    $result mysql_query($sql) OR die(mysql_error());
        while(
    $row mysql_fetch_assoc($result)) {

    /*......weiterer verlauf wie $row.['Titel'] und ein paar <table>...*/

            
    $sql "SELECT
                        Link
                    FROM
                        freunde_links
                    WHERE
                        NewsID = '"
    .$row['ID']."'
                        "
    ;
            
    $result2 mysql_query($sql) OR die(mysql_error());
            if(
    mysql_num_rows($result2)) {
                while(
    $links mysql_fetch_assoc($result2)) {

                    echo 
    "<img src=\"".$links['Link']."\">\n";

                }
            } else {
            
                echo 
    "    Keine Bilder vorhanden\n";

            } 
    In der NewsID 3 hab ich ein paar Links eingefügt (endung .jpg) und ich möchte sie gerne einzeln ausgeben und nicht alle 3


    Ich brächte sowas wie ne "Blätterfunktion"

    Ich habe schon gedacht das ich ne Count() abfrage stelle, ne Variable dazu stelle aber habe keinen schimmer wie ich das anstelle.

    Bräuchte mal ein Ansatz dazu...
    http://baasel.bplaced.net

  • #2
    Dann lies doch einfach nur einen Datensatz aus und mach irgend einen "weiter" link der dir per get übergibt, welcher Datensatz als nächstes angezeigt werden soll.
    Auf der Folgeseite liest du dann eben genau diesen Datensatz aus....

    Oder hab ich dein Problem falsch verstanden?

    Kommentar


    • #3
      Immer wenn Du soetwas hast:
      PHP-Code:
      $sql "SELECT freunde.ID
      ...
      while(
      $row = mysql_fetch_assoc($result)) {
          
      $sql = "SELECT ... NewsID '".$row['ID']."'"; 
      kannst Du das auch in einer Abfrage mit einem JOIN erledigen. In aller Regel wesentlich effizienter als -zig Abfragen in einer while-Schleife.
      PHP-Code:
      <?php
      $sql 
      "SELECT
                  freunde.ID,
                  freunde.Titel,
                  DATE_FORMAT(freunde.Datum, '"
      .DATE_STYLE."') AS Changedatum,
                  freunde_links.Link
              FROM
                  freunde
              JOIN
                  freunde_links
              ON
                  freunde_links.NewsID=freunde.ID
              ORDER BY
                  freunde.Datum DESC
              "
      ;

      $result mysql_query($sql) OR die(mysql_error());
      while(
      $row mysql_fetch_assoc($result)) {
          echo 
      '<pre>'print_r($row), '<pre><hr />';
      }
      ?>
      Zusammen mit LIMIT, wie bei http://faq-phpfriend.de/q/q-mysql-seitenweise.html beschrieben, bekommst Du Deine Blätterfunktion einfach hin.

      Kommentar


      • #4
        @Nendrew

        ne, stimm, hast eigentlich recht, danke...

        und danke Bruchpilot, werd ich mir anschaun!
        http://baasel.bplaced.net

        Kommentar


        • #5
          okay, ich hab jetzt den ganzen Nachmittag verbracht die SQL Abfrage richtig zu stellen, weil es gab ein Syntax error on line 9(die Zeile wo "JOIN" steht)...

          wo kann ich was nachlesen was ich über "JOIN" und "ON" finde? auf php.net hab ich nüscht gefunden

          €dit: hab was auf www.sql.com gefunden
          http://baasel.bplaced.net

          Kommentar


          • #6
            wo kann ich was nachlesen was ich über "JOIN" und "ON" finde? auf php.net hab ich nüscht gefunden

            €dit: hab was auf www.sql.com gefunden
            das hat ja auch nüscht mit php zu tun.

            http://www.w3schools.com/sql/default.asp

            Kommentar


            • #7
              Ebenfalls recht gut: http://www.little-idiot.de/mysql/mysql-118.html#joins

              Kommentar


              • #8
                Ich habe eben mit den Werten
                Code:
                CREATE TABLE `freunde` (
                  `ID` int(11) unsigned NOT NULL auto_increment,
                  `Name` varchar(80)NOT NULL default '',
                  `Titel` varchar(80)NOT NULL default '',
                  `Datum` date NOT NULL default '0000-00-00',
                  PRIMARY KEY  (`ID`)
                );
                
                CREATE TABLE `freunde_links` (
                  `ID` int(11) unsigned NOT NULL auto_increment,
                  `NewsID` int(11) unsigned NOT NULL default '0',
                  `Link` varchar(80)NOT NULL default '',
                  PRIMARY KEY  (`ID`)
                );
                
                INSERT INTO `freunde` (`ID`,`Name`,`Titel`,`Datum`) VALUES (1,'test1_name','test1_titel','2005-12-15');
                INSERT INTO `freunde` (`ID`,`Name`,`Titel`,`Datum`) VALUES (2,'test2_name','test2_titel','2005-12-15');
                INSERT INTO `freunde` (`ID`,`Name`,`Titel`,`Datum`) VALUES (3,'test3_name','test3+images','2005-12-15');
                
                INSERT INTO `freunde_links` (`ID`,`NewsID`,`Link`) VALUES (2,3,'images/ich.jpg');
                INSERT INTO `freunde_links` (`ID`,`NewsID`,`Link`) VALUES (3,3,'images/ich2.jpg');
                INSERT INTO `freunde_links` (`ID`,`NewsID`,`Link`) VALUES (4,3,'images/ich.jpg');
                INSERT INTO `freunde_links` (`ID`,`NewsID`,`Link`) VALUES (6,2,'images/du.jpg');
                INSERT INTO `freunde_links` (`ID`,`NewsID`,`Link`) VALUES (7,2,'images/du2.jpg');
                meine Abfrage
                Code:
                        SELECT
                            freunde.ID,
                            freunde.Titel,
                            DATE_FORMAT(freunde.Datum, '%d.%m.%Y') AS Changedatum,
                            freunde_links.Link
                        FROM
                            freunde
                        JOIN
                            freunde_links
                        ON
                            freunde_links.NewsID=freunde.ID
                        ORDER BY
                            freunde.Datum DESC
                nochmal getstet. Keine Fehler aufgetreten.
                Keine Ahnung, wo und warum Du da einen Fehler eingebaut hast.

                Kommentar


                • #9
                  ist das nen unterschied das ich "smallint"(in freunde & freunde_links) als "int"

                  Code:
                  CREATE TABLE `freunde_links` (
                    `ID` smallint(6) NOT NULL auto_increment,
                    `NewsID` smallint(6) default NULL,
                    `Link` varchar(200) default NULL,
                    PRIMARY KEY  (`ID`)
                  http://baasel.bplaced.net

                  Kommentar


                  • #10
                    Erzeugt jedenfalls sicher keinen syntax error in der ABfrage.
                    Klar ist das ein Unterschied. Welchen Wertebereich hat ein smallint und wieviele Freunde /links willst Du eintragen? (Dabei geht es nicht um gleichzeitige Einträge sondern absolute Zahlen)

                    Kommentar


                    • #11
                      ist doch eigentlich so weit egal wie viele Einträge das sind, denn die ID läuft ja weiter, oder nicht? Ich kann doch auch Links wieder hinzufügen wenn ich die ID von der News (News.ID) angeben wo die Links eingefügt werden..ich geb euch mal den ganzen sql satz, da steht aber noch mehr drin als nur Titel...

                      Code:
                      #
                      # Tabellenstruktur für Tabelle `freunde`
                      #
                      
                      DROP TABLE IF EXISTS `freunde`;
                      CREATE TABLE `freunde` (
                        `ID` int(6) NOT NULL auto_increment,
                        `Name` varchar(100) default NULL,
                        `Titel` varchar(100) default NULL,
                        `Inhalt` text,
                        `Datum` datetime default NULL,
                        PRIMARY KEY  (`ID`)
                      ) TYPE=MyISAM AUTO_INCREMENT=4 ;
                      
                      #
                      # Daten für Tabelle `freunde`
                      #
                      
                      INSERT INTO `freunde` VALUES (1, 'test1', 'test1', 'asd', '2005-12-12 20:01:18');
                      INSERT INTO `freunde` VALUES (2, 'test2', 'test2', 'asdasd', '2005-12-12 20:19:16');
                      INSERT INTO `freunde` VALUES (3, 'test3', 'test3', 'test3', '2005-12-12 20:23:03');
                      Code:
                      #
                      # Tabellenstruktur für Tabelle `freunde_links`
                      #
                      
                      DROP TABLE IF EXISTS `freunde_links`;
                      CREATE TABLE `freunde_links` (
                        `ID` smallint(6) NOT NULL auto_increment,
                        `NewsID` smallint(6) default NULL,
                        `Link` varchar(200) default NULL,
                        `Beschreibung` varchar(200) default NULL,
                        PRIMARY KEY  (`ID`)
                      ) TYPE=MyISAM AUTO_INCREMENT=4 ;
                      
                      #
                      # Daten für Tabelle `freunde_links`
                      #
                      
                      INSERT INTO `freunde_links` VALUES (2, 3, 'images/ich.jpg', 'link2');
                      INSERT INTO `freunde_links` VALUES (3, 3, 'images/ich2.jpg', NULL);

                      ABer eigentlich ist es egal ob noch mehr Datensätze eingefügt werden, denn es läuft theoretisch auf den gleichen Fehler hinaus, eigentlich, wenn in meiner sql nicht was flasch ist
                      http://baasel.bplaced.net

                      Kommentar


                      • #12
                        Wie sieht deine Abfrage jetzt genau aus?

                        Kommentar


                        • #13
                          Code:
                                  SELECT
                                      freunde.ID,
                                      freunde.Titel,
                                      DATE_FORMAT(freunde.Datum, '%d.%m.%Y') AS Changedatum,
                                      freunde_links.Link
                                  FROM
                                      freunde
                                  JOIN
                                      freunde_links
                                  ON
                                      freunde_links.NewsID=freunde.ID
                                  ORDER BY
                                      freunde.Datum DESC
                          Glaub aber es ist egal wenn ich nun "freunde.Name" und/oder "freunde.Inhalt" drin habe, oder nich?
                          http://baasel.bplaced.net

                          Kommentar


                          • #14
                            Und die exakte Fehlermeldung?

                            Kommentar


                            • #15
                              Code:
                              You have an error in your SQL syntax near 'ON freunde_links.NewsID=freunde.ID ORDER BY freu' at line 10
                              die Zeile wo "JOIN"= Line 10
                              http://baasel.bplaced.net

                              Kommentar

                              Lädt...
                              X