|
 |
|
| Autor |
Nachricht |
Kuchen123 Stammuser [User]

Anmeldung: 29.12.06 Beiträge: 28
|
Verfasst am: 22.01.2008, 14:26 Titel: Problem mit mUsikdatenbank |
|
|
Hey,
ich bin dabei ein Musikarchiv zu basteln und hänge jetzt bei folgendem Problem:
ich würde es gerne so machen, dass nicht alle lieder auf einer seite angezeigt werden sondenr immer nur ca. 200, udn wenn man unten dann auf weiter klickt, kommt man zur nächsten seite, ich hab aber keien idee wie ich das einbauen könnte.
functions_inc.php
| Code: | <?php
function showlist() {
$query = "
SELECT *
FROM music_archiv
ORDER BY Artist
";
$sql = mysql_query($query) OR die(mysql_error());
echo '<table class=tableBasic><thead><tr><th class="center">Interpret</th><th class="center">Titel</th><th class="center">Album</th><th class="center">Ändern</th><th class="center">Löschen</th></thead></tr>';
while($row = mysql_fetch_assoc($sql)) {
echo '<tbody><tr><td class="tdContent center">'.$row['Artist'].'</td>
<td class="tdContent center">'.$row['Title'].'</td>
<td class="tdContent center">'.$row['Album'].'</td>
<td class="tdContent center"><a href="?action=edit&ID='.$row['ID'].'"><img src="inc/note_edit.png"></a></td>
<td class="tdContent center"><a href="?action=delete&ID='.$row['ID'].'"><img src="inc/icon_small_cross.png"></td>'.
'</tr></tbody>';
}
return false;
}
function makeentry($cdinfo) {
$query = '
INSERT INTO music_archiv (
Artist,
Title,
Album
) VALUES (
\''.$cdinfo['artist'].'\',
\''.$cdinfo['title'].'\',
\''.$cdinfo['album'].'\'
);
';
if(mysql_query($query)) {
echo '<b>'.$cdinfo['artist'].' - '.$cdinfo['title'].' - '.$cdinfo['album'].'</b> erfolgreich eingetragen.<br /><br /><a href="?action=list">zurück zur Datenbank</a>';
} else {
die(mysql_error());
return false;
}
}
function deleteentry($id) {
$query = '
DELETE FROM music_archiv
WHERE ID = \''.$id.'\'
';
if(mysql_query($query)) {
echo 'Eintrag wurde erfolgreich aus der Datenbank gelöscht!<br /><br /><a href="?action=list">zurück zur Datenbank</a>';
} else
die(mysql_error());
return false;
}
function saveentry($cdinfo, $id) {
$query = '
UPDATE music_archiv
SET
Artist = \''.$cdinfo['artist'].'\',
Title = \''.$cdinfo['title'].'\',
Album = \''.$cdinfo['album'].'\'
WHERE
ID = \''.$id.'\'
';
if(mysql_query($query)) {
echo '<b>'.$cdinfo['artist'].' - '.$cdinfo['title'].' - '.$cdinfo['album'].'</b> wurde erfolgreich geändert.<br /><br /><a href="?action=list">zurück zur Datenbank</a>';
} else
die(mysql_error());
return false;
}
function editentry($id) {
$query = '
SELECT *
FROM music_archiv
WHERE ID = \''.$id.'\'
ORDER BY Artist
';
$sql = mysql_query($query) OR die(mysql_error());
$row = mysql_fetch_assoc($sql);
include "inc/edit.form.inc.php";
}
?> |
index.php
| Code: | <?php
echo "
<html><head>";
include ("inc/header_global_inc.php");
include 'inc/head.inc.php';
echo "
<title>blubb</title>
</head><body>
<div class=divMatrix>";
include ("inc/navigation_global_inc.php");
if($umsSystem->level > 0 ) {
include ("inc/navigation_user_inc.php");
} else {
echo "";
}
if($umsSystem->level == 0 ) {
echo "</div>";
}
$action = strtolower(trim(strip_tags($_GET['action'])));
if(empty($action))
$action = 'list';
switch($action)
{
case 'entry' :
{
include 'inc/form.inc.php';
if(isset($_GET['do']))
{
if(!empty($_POST['artist']) AND !empty($_POST['title']))
{
$cdinfo['artist'] = trim(htmlspecialchars($_POST['artist']));
$cdinfo['title'] = trim(htmlspecialchars($_POST['title']));
$cdinfo['album'] = trim(htmlspecialchars($_POST['album']));
makeentry($cdinfo);
}
else
echo 'Bitte fehlende Felder ausfüllen.';
}
break;
}
case 'edit':
if((isset($_GET['ID'])) OR (isset($_POST['ID']))) {
editentry($_GET['ID']);
if(isset($_GET['do'])) {
$cdinfo['artist'] = trim(htmlspecialchars($_POST['artist']));
$cdinfo['title'] = trim(htmlspecialchars($_POST['title']));
$cdinfo['album'] = trim(htmlspecialchars($_POST['album']));
saveentry($cdinfo, $_POST['ID']);
}
} else {
echo 'Eintrag konnte nicht bearbeitet werden! Bitte versuchen Sie es erneut!<br />';
showlist();
}
break;
case 'delete':
if(isset($_GET['ID']))
deleteentry($_GET['ID']);
else {
echo 'Eintrag konnte nicht gelöscht werden! Bitte versuchen Sie es erneut!<br />';
showlist();
}
break;
case 'search' :
{
include 'inc/search.form.inc.php';
if(isset($_GET['do']))
{
$artist = trim(htmlspecialchars($_POST['artist']));
$title = trim(htmlspecialchars($_POST['title']));
$album = trim(htmlspecialchars($_POST['album']));
if(!empty($artist) || !empty($title) || !empty($album))
{
$query = "SELECT *
FROM music_archiv
WHERE (Artist LIKE '%$artist%')
AND (Title LIKE '%$title%')
AND (Album LIKE '%$album%')";
$sql = mysql_query($query) OR die(mysql_error());
echo '<table class=tableBasic><thead><tr><th class="center">Interpret</th><th class="center">Titel</th><th class="center">Album</th><th class="center">Ändern</th><th class="center">Löschen</th></thead></tr>';
while($row = mysql_fetch_assoc($sql)) {
echo '<tbody><tr><td class="tdContent center">'.$row['Artist'].'</td>
<td class="tdContent center">'.$row['Title'].'</td>
<td class="tdContent center">'.$row['Album'].'</td>
<td class="tdContent center"><a href="?action=edit&ID='.$row['ID'].'"><img src="inc/note_edit.png"></a></td>
<td class="tdContent center"><a href="?action=delete&ID='.$row['ID'].'"><img src="inc/icon_small_cross.png"></td>'.
'</tr></tbody>';
}
}
else
echo 'Ihre Suche brachte keine Ergebnisse.';
}
break;
}
default:
showlist();
}
echo "
</div>";
include 'inc/footer.inc.php';
echo "
</body></html>"; |
Danke schonmal für eure Hilfe
MfG
Chris
|
|
| Nach oben |
|
 |
benjam4 Bekannter [Mod]


Anmeldung: 17.05.06 Beiträge: 1312 Wohnort: Ostfildern ...
|
Verfasst am: 22.01.2008, 14:39 Titel: |
|
|
Ich hab mir deinen Code jetzt nicht durchgelesen, aber du solltest dir mal dem SQL-Befehl "LIMIT" anschauen, damit machst du das _________________ Rechtschreibfehler sind beabsichtigt, sie dienen der Verschleiherung meiner tatsächlichen Genialität
____________________________________
Eine Signatur sie alle zu knechten
|
|
| Nach oben |
|
 |
Kuchen123 Stammuser [User]

Anmeldung: 29.12.06 Beiträge: 28
|
Verfasst am: 22.01.2008, 14:57 Titel: |
|
|
naja den Befehl kenn ich ja, das problem is wie mach cih das dann das man auf die nächste seite kommt, sonst zeigt der z.b. ja einfach 200 titel an udn dann is ende, obwohl ich vlt 10000 hab..
|
|
| Nach oben |
|
 |
benjam4 Bekannter [Mod]


Anmeldung: 17.05.06 Beiträge: 1312 Wohnort: Ostfildern ...
|
Verfasst am: 22.01.2008, 15:30 Titel: |
|
|
Ok, ich geh jetzt hier nicht auf deinen Code ein, sondern zeige dir nur ein Bsp:
Über den URL wird ?seite=1.......unendlich weitergegeben.
| Code: |
if (!isset($_GET[seite])) {$seite = 1;}
else { $seite=$_GET[seite];}
$sel="SELECT id FROM songs";
$sel=mysql_query($sel);
$anz=mysql_num_rows($sel);
#Damit hast du die gesamtzahl der Ergebnisse.
$seite=$seite - 1;
$limit1=200*$seite;
$limit2=$limit1 + 200;
$sel="SELECT * FROM songs LIMIT ".$limit1.",".$limit2;
$sel=mysql_query($sel); |
So damit bekommst du immer die übergebene Seite raus. Jetzt fehlt noch die Verlinkung:
| Code: |
print "Seiten: ";
$seiten=ceil($anz / 200);
$i=1;
while ($i<=$seiten) {
print "<a href='me.php?seite=".$i."'>".$i."</a>";
$i++;
} |
Kann sein, das ein paar Syntax oder Rechtschreibfehler drin sind. Ich habe das Ding nicht getestet, aber an sich sollte das so Funktionieren. _________________ Rechtschreibfehler sind beabsichtigt, sie dienen der Verschleiherung meiner tatsächlichen Genialität
____________________________________
Eine Signatur sie alle zu knechten
|
|
| Nach oben |
|
 |
chris1988 Bekannter [User]

Anmeldung: 12.12.05 Beiträge: 1624
|
Verfasst am: 22.01.2008, 15:43 Titel: |
|
|
Ich glaub' die Argumente für Limit sind da jetzt falsch, daran hatte ich mir bei nem Skript auch mal ordentlich einen abgebrochen...
Die erste Zahl beschreibt die Position; allerdings ist wäre die erste Position = 0, also hier dann
$limit1 = (200 * $seite) - 1;
wobei wenn $seite == 1
$limit1 = 0
darauf muss soweit ich weiß die Anzahl der gewünschten Ausgaben folgen, also
$limit2 = 200
Bin mir aber nicht 100%ig sicher.
Schönen Gruß,
chris _________________ Mancher ertrinkt lieber,
als daß er um Hilfe ruft.
(Wilhelm Busch)
|
|
| Nach oben |
|
 |
benjam4 Bekannter [Mod]


Anmeldung: 17.05.06 Beiträge: 1312 Wohnort: Ostfildern ...
|
Verfasst am: 22.01.2008, 15:48 Titel: |
|
|
Bei der ersten Seite ist $seite=0 also wird auch limit1 Null, somit fängts ganz vorne an.
Bei dir wäre ja bei seite 1 limit so: LIMIT 199,200
Und ich meine insgesamt, das die start und die endposition angegeben werden muss.
Wenn es anders wäre, dann muss limit2 halt immer 200 sein, wie du es geschrieben hast. _________________ Rechtschreibfehler sind beabsichtigt, sie dienen der Verschleiherung meiner tatsächlichen Genialität
____________________________________
Eine Signatur sie alle zu knechten
|
|
| Nach oben |
|
 |
chris1988 Bekannter [User]

Anmeldung: 12.12.05 Beiträge: 1624
|
Verfasst am: 22.01.2008, 16:28 Titel: |
|
|
| benjam4 hat folgendes geschrieben: | Bei der ersten Seite ist $seite=0 also wird auch limit1 Null, somit fängts ganz vorne an.
Bei dir wäre ja bei seite 1 limit so: LIMIT 199,200
|
Wenn du beim letzten nicht die erste Seite meinst sondern die 2te (Also $seite = 1), dann ja
| Zitat: |
Und ich meine insgesamt, das die start und die endposition angegeben werden muss.
Wenn es anders wäre, dann muss limit2 halt immer 200 sein, wie du es geschrieben hast. |
Grad nochmal nachgeguckt:
http://php.about.com/od/mysqlcommands/g/Limit_sql.htm
So wie du hab ich's damals intuitiv auch vermutet, und dementsprechend die Ausgabe überhaupt nicht verstanden  _________________ Mancher ertrinkt lieber,
als daß er um Hilfe ruft.
(Wilhelm Busch)
|
|
| Nach oben |
|
 |
benjam4 Bekannter [Mod]


Anmeldung: 17.05.06 Beiträge: 1312 Wohnort: Ostfildern ...
|
Verfasst am: 22.01.2008, 16:37 Titel: |
|
|
ok, also limit2=200 _________________ Rechtschreibfehler sind beabsichtigt, sie dienen der Verschleiherung meiner tatsächlichen Genialität
____________________________________
Eine Signatur sie alle zu knechten
|
|
| Nach oben |
|
 |
Kuchen123 Stammuser [User]

Anmeldung: 29.12.06 Beiträge: 28
|
Verfasst am: 22.01.2008, 18:59 Titel: |
|
|
hm, also ich weiß dass das forum nicht dafür da ist, aber evtl könnte mir das ja jemand in das script einbauen - bin irgendwie irritiert und bekomme es auch nicht hin, also das wäre nur ne bitte, wenn nicht wäre das auch nicht schlimm, wenn es nach dem einbauen nich funktionieren würde knnte man ja immernoch fehler ausmerzen..
habe hier auch nochwas gefunden, weiß nicht ob das weiter hilft:
http://www.inspire-world.de/readartikel.php?aid=11
Danke schonmal für die Bemühungen udn auch die antworten
MfG
Chris
|
|
| Nach oben |
|
 |
Kuchen123 Stammuser [User]

Anmeldung: 29.12.06 Beiträge: 28
|
Verfasst am: 28.01.2008, 19:55 Titel: |
|
|
keiner eine idee? stelle auhc gerne das ganze script zur Verfügung, müsst euch nur per pn melden 
|
|
| Nach oben |
|
 |
|
|
 |
|
Alle Zeiten sind GMT + 1 Stunde
|
| Seite 1 von 1 |
|  |