• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Bestimmte ID aus Datensatz in <div>-Element

  • Ersteller Ersteller Gelöschtes Mitglied 23527
  • Erstellt am Erstellt am
G

Gelöschtes Mitglied 23527

Guest
Hallo liebes Forum,

ich habe momentan ein Projekt für mich am Laufen und stehe nun zwei großen Problemen. Ich weiß nämlich nicht, wie es möglich ist, mein Vorhaben umzusetzen. Auf dieser Seite seht ihr das Projekt. Ich möchte bequem über Datensätze, Artist, Album und das Erscheinungsdatum auf den Cover Arts anzeigen lassen. Das neueste Element steht immer am Anfang, ganz links (momentan Fox Stevenson).

Mir sind 3 Lösungen eingefallen (welche könnte man umsetzen?):

1. Ist es in MySQL möglich, dass ein neuer Datensatz automatisch immer die ID 1 bekommt und sich der Rest der Datensätze nach hinten schiebt? Bspw. wird aus ID 1 beim Erstellen eines neuen Datensatzes ID 2. So könnte man den <div> Elementen eine feste ID zuordnen.

2. Ein neuer Datensatz erstellt ein neues <div>-Element: Wenn ich in phpMyAdmin ein neuen Datensatz erstelle, wäre es möglich, dass sich dadurch ein neues <div>-Element generiert, welches diese ID abruft? Quasi wie ein Blog-System.

3. Das selbe <div> Element liest aus ID 5 aus und liest bei neuem Datensatz aus ID 6 aus. Anschließend aus ID 7?


Noch zwei andere Probleme:
Da ich am Ende des Jahres mehr als 50 DIV-Container haben werde, ist es möglich die ganzen Abfragen in PHP zu speichern? Denke da auch an Lösung 2 mit einem Blog-System.

Des Weiteren lese ich meine Datenbank mit diesem Codeschnipsel aus:

PHP:
<?php
require_once ('mysql-config.php');
$db_link = mysqli_connect (
                    MYSQL_HOST,
                    MYSQL_BENUTZER,
                    MYSQL_KENNWORT,
                    MYSQL_DATENBANK
                    );
$sql = "SELECT * FROM releases WHERE id = '3'";
$db_erg = mysqli_query( $db_link, $sql );
if ( ! $db_erg )
{
  die('Ungültige Abfrage: ' . mysqli_error());
}

                while ($zeile = mysqli_fetch_array( $db_erg, MYSQL_ASSOC))
                {
                  echo "<td>". $zeile['artist'] . "<br />";
                  echo "<td>". $zeile['releasename'] . "<br />";
                  echo "<td>". $zeile['label'] . "<br />";
                  echo "<td>". $zeile['date'] . "<br />";
                }
                mysqli_free_result( $db_erg );
                ?>

Aber das bei jedem Element, ist eine ganz schöne Menge an Daten oder nicht?

Hier noch ein Entwurf:
concept.png


Ich hoffe ihr könnt mir weiterhelfen.
Gruß
 
Hallo,

deine fragen sind etwas caotisch.

Das neuer beitrag automatisch id1 wird ist unlogisch da ja die id eindeutig sein soll und einmal vergeben nicht mehr geändert werden darf/soll.

letzt beitrag oben, das geht per order by

Code:
$sql = "SELECT * FROM releases ORDER BY id DESC";

Da ich am Ende des Jahres mehr als 50 DIV-Container haben werde, ist es möglich die ganzen Abfragen in PHP zu speichern? Denke da auch an Lösung 2 mit einem Blog-System.
was möchtest da speichern?
DB abfragen mit ein paar hunder datensätze ist normal da sind dein 50 echt nichts.

Cheffchen
 
was möchtest da speichern?
DB abfragen mit ein paar hunder datensätze ist normal da sind dein 50 echt nichts.

Cheffchen

die albuminformationen. aber ich hätte am ende mehr als 50 div container.

ich stelle die Frage mal anders rum, was ist die beste Automatisierungsmethode mit MySQL für dieses Vorhaben?
Der Quellcode:

Code:
        <div id="album_releases" class="animated bounceIn">
       
            <div id="headline">Latest Favorite Album Releases</div>

            <div id="frame" class="frame">
       
            <ul class="slidee">
       
              <li><div id="datebox"><img src="images/1310oct.png" width="168" height="168"></div></li>   
             
              <li><div id="blurbox"><div class="blur img"><div class="img-wrap"><div class="img-info">
             
                        <?php
require_once ('mysql-config.php');
$db_link = mysqli_connect (
                    MYSQL_HOST,
                    MYSQL_BENUTZER,
                    MYSQL_KENNWORT,
                    MYSQL_DATENBANK
                    );
$sql = "SELECT * FROM releases WHERE id = '3'";
$db_erg = mysqli_query( $db_link, $sql );
if ( ! $db_erg )
{
  die('Ungültige Abfrage: ' . mysqli_error());
}

                while ($zeile = mysqli_fetch_array( $db_erg, MYSQL_ASSOC))
                {
                  echo "<td>". $zeile['artist'] . "<br />";
                  echo "<td>". $zeile['releasename'] . "<br />";
                  echo "<td>". $zeile['label'] . "<br />";
                  echo "<td>". $zeile['date'] . "<br />";
                }
                mysqli_free_result( $db_erg );
                ?></div>
              <img src="http://behance.vo.llnwd.net/profiles15/3463257/projects/11053081/f9cfd84e97d0330832a4e67d887ae162.jpg" class="hover" width="168" height="168"></div></div></div><div id="caption">
              <img src="images/spotifyicon.png" style="float:left;"><a href="spotify:track:36h7oXucC5CDeISF2LfYxV">Listen on Spotify</a><br />
              <div id="element_sep">-</div>
              <img src="images/servericon.png" style="float:left;"><a href="#">Listen on toegrNAS</a><br />
              <div id="element_sep">-</div>
              <img src="images/itunesicon.png" style="float:left;"><a href="https://itunes.apple.com/de/album/turn-it-around-feat.-kele/id689249415">Listen/Buy on iTunes</a>
              </div></li>

              <li><div id="blurbox"><div class="blur img"><div class="img-wrap"><div class="img-info">
                        <?php
require_once ('mysql-config.php');
$db_link = mysqli_connect (
                    MYSQL_HOST,
                    MYSQL_BENUTZER,
                    MYSQL_KENNWORT,
                    MYSQL_DATENBANK
                    );
$sql = "SELECT * FROM releases WHERE id = '2'";
$db_erg = mysqli_query( $db_link, $sql );
if ( ! $db_erg )
{
  die('Ungültige Abfrage: ' . mysqli_error());
}

                while ($zeile = mysqli_fetch_array( $db_erg, MYSQL_ASSOC))
                {
                  echo "<td>". $zeile['artist'] . "<br />";
                  echo "<td>". $zeile['releasename'] . "<br />";
                  echo "<td>". $zeile['label'] . "<br />";
                  echo "<td>". $zeile['date'] . "<br />";
                }
                mysqli_free_result( $db_erg );
                ?></div>
              <img src="http://ecx.images-amazon.com/images/I/71Z8AoUDO1L._SL1000_.jpg" class="hover" width="168" height="168"></div></div></div><div id="caption">
              <img src="images/spotifyicon.png" style="float:left;"><a href="spotify:track:36h7oXucC5CDeISF2LfYxV">Listen on Spotify</a><br />
              <div id="element_sep">-</div>
              <img src="images/servericon.png" style="float:left;"><a href="#">Listen on toegrNAS</a><br />
              <div id="element_sep">-</div>
              <img src="images/itunesicon.png" style="float:left;"><a href="https://itunes.apple.com/de/album/turn-it-around-feat.-kele/id689249415">Listen/Buy on iTunes</a>
              </div></li>

              <li><div id="blurbox"><div class="blur img"><div class="img-wrap"><div class="img-info">
                        <?php
require_once ('mysql-config.php');
$db_link = mysqli_connect (
                    MYSQL_HOST,
                    MYSQL_BENUTZER,
                    MYSQL_KENNWORT,
                    MYSQL_DATENBANK
                    );
$sql = "SELECT * FROM releases WHERE id = '1'";
$db_erg = mysqli_query( $db_link, $sql );
if ( ! $db_erg )
{
  die('Ungültige Abfrage: ' . mysqli_error());
}

                while ($zeile = mysqli_fetch_array( $db_erg, MYSQL_ASSOC))
                {
                  echo "<td>". $zeile['artist'] . "<br />";
                  echo "<td>". $zeile['releasename'] . "<br />";
                  echo "<td>". $zeile['label'] . "<br />";
                  echo "<td>". $zeile['date'] . "<br />";
                }
                mysqli_free_result( $db_erg );
                ?></div>
              <img src="images/cover/01-wilkinson-afterglow.png" class="hover" width="168" height="168"></div></div></div><div id="caption">
              <img src="images/spotifyicon.png" style="float:left;"><a href="spotify:track:36h7oXucC5CDeISF2LfYxV">Listen on Spotify</a><br />
              <div id="element_sep">-</div>
              <img src="images/servericon.png" style="float:left;"><a href="#">Listen on toegrNAS</a><br />
              <div id="element_sep">-</div>
              <img src="images/itunesicon.png" style="float:left;"><a href="https://itunes.apple.com/de/album/turn-it-around-feat.-kele/id689249415">Listen/Buy on iTunes</a>
              </div></li>   
       
            </ul>
 
Also ich würde das so machen, dass ich nur eine SQL Abfrage habe. Dafür hol ich mir alle Daten. Nur das der letzte Eintrag als erstes angezeigt wird. Cheffchen hats ja schon geschrieben.
Dann würde ich mir eine Funktion schreiben, dem übergebe ich denn nur die Daten von den letzten 3 Einträge in der Datenbank
und dann im html erstelle ich die div's mit den Informationen durch den Funktionsaufruf.

Das was ich aber noch sehe, du eröffnest gar keine table für die Informationen, weil du diese ja in td zellen. Oder ich bin gerade blind :D

Ich hätte da wohl auch eine liste genommen und diese per css in eine Zeile gesetzt wie bei einer Navigation :D
Bin gerade etwas zu blöd zum beschreiben, war stressiger Tag aber vllt weißte ja was ich meine
 
Dann würde ich mir eine Funktion schreiben, dem übergebe ich denn nur die Daten von den letzten 3 Einträge in der Datenbank
und dann im html erstelle ich die div's mit den Informationen durch den Funktionsaufruf.
Kannst du das nochmal genauer erläutern?

Das was ich aber noch sehe, du eröffnest gar keine table für die Informationen, weil du diese ja in td zellen. Oder ich bin gerade blind :D

Hab vergessen den Befehl wieder raus zu nehmen. :D
 
Mir ist gerade aufgefallen, das einzige was ich wissen müsste wäre, wie ich das, was ich mit PHP auslese, splitte und an verschiedenen Stellen einfüge. So erspare ich mir eine Menge Zeilen von Code und jedes Mal das erneute Auslesen - auch
PHP:
$sql = "SELECT * FROM releases ORDER BY id DESC";
würde so funktionieren.
 
Also ich hatte es mir so vorgestellt, falls ich es falsch verstanden habe, dann tut es mir leid
PHP:
$db_link = new mysqli(HOST,USER,PASSWORD,DB);

$sql = "SELECT artist, releasename, label, date FROM releases ORDER BY id DESC LIMIT 3";
$db_erg = $db_link->query( $sql );


function ausgabe($daten) {
    echo "artist: ". $daten->artist ."<br />";
    echo "releasename: ". $daten->releasename ."<br />";
    echo "label: ". $daten->label ."<br />";
    echo "date: ". $daten->date ."<br />";
    echo "<br />";
}

while($daten = $db_erg->fetch_object()) {
    ausgabe($daten);
}

Die funktion ausgabe musst du natürlich mit dem HTML befüllen der sich immer wiederholt. Im SQL Befehl kannst du denn mit LIMIT bestimmen wie viele angezeigt werden soll.
Und es werden immer die letzten 3 angezeigt. Das heißt wenn ein neuer Song hinzukommt erscheint er im html an erster stelle und die anderen rücken sozusagen ein auf.

Achja und nun nicht über den Code beschweren, ist nur mal so hingeklatscht und sicher noch verbesserungswürdig :D
 
FETT! Wohl der beste Lösungsansatz, hat super funktioniert, vielen Dank! Weiß jemand wie ich am Ende des Monats so ein Kästchen dazwischen bekommen? Bild im Anhang.
 

Anhänge

  • Bildschirmfoto 2013-10-17 um 02.16.27.png
    Bildschirmfoto 2013-10-17 um 02.16.27.png
    35,5 KB · Aufrufe: 7
Hallo,

ein möglicher ansatz währe, ein datum aus der DB im passenden format zu bekommen "YYYYMM", dazu einfach im select nach date einfügen
Code:
, date_format(date, '%Y%m') as dateYYYYMM
so hast $daten->dateYYYYMM als Jahr und monat, einfach mal ausgeben zum test.

Wenn das am ende haben möchtest die variable in der while in eine andere variable zwischen packen um die beim nächsten durchlauf zu prüfen ob gleicher monat oder nicht, wenn nicht was ausgeben.
PHP:
while($daten = $db_erg->fetch_object()) {
    ausgabe($daten);

    if(!empty($letzterdate) && $letzterdate <> $daten->dateYYYYMM){echo "neuer Monat: ".$daten->dateYYYYMM."<br />";}
    $letzterdate=$daten->dateYYYYMM;
}
das echo kannst natürlich auch als funktion machen wie ausgabe() damit alles ein schema hat.

So mach ich das zumindest immer, also kann es auch bessere lösungen geben :).

Cheffchen
 
Sorry, dass ich mich erst jetzt melde, war im Urlaub. @Cheffchen könntest du mir deinen Ansatz noch ein wenig genauer erklären? Blicke da nicht so ganz durch.
 
hallö,

wie genau soll ich das denn noch machen, is dich punkt für punkt.

einfach mal machen.

oder was genau verstehst nicht?

cheffchen
 
Zurück
Oben