meist du damit das alle spalten nutzlos geldan werden wenn ja ...
... soll das dann so umgesetzt werde?
SELECT id FROM musik WHERE id=$top
Naja, die Abfrage macht keinen Sinn, sie kann dir ja nur ein bereits bekanntes Ergebnis liefern, nämlich $top.
Hast du dir den von mir geposteten Link durchgelesen?
Du sollst halt statt * immer nur genau die Felder angeben, die du auch benötigst, die also im weiteren Verlauf des Scripts verarbeitet werden.
Auch wenn du wirklich alle Felder brauchst. Es kann ja immer mal passieren, dass eine Tabelle erweitert wird und du das Feld dann nicht benötigst.
Und grade wenn man, wie du hier, mit numerischem Index im Ergebnis-Array arbeitet, statt mit den Spaltennamen, sollte man auf keinen Fall SELECT * schreiben, da die Reihenfolge in der die Spalten zurückgegeben werden nicht sicher ist.
wenn ich die if-anweisungen vor die schleife setze wie in dem code den du bearbeitet hast
bekomme ich das problem das nach einem vote der erste datensatz sein name ändert und
nur die id des bewerteten datensatzes als namen ausgibt.
Das liegt daran, dass du in deinen if-Bedingungen $row überschreibst. Wozu die SELECT-Abfrage in den if-Bedingungen überhaupt dient habe ich aus deinem Script nicht erkennen würden, so wie du es hier gepostet hast können die SELECT-Abfragen aus den if-/elseif-Bedingungen gelöscht werden, da die Ergebnisse nie verwendet werden.
Hier mal dein Script noch etwas überarbeitet und kommentiert.
<?php
include ("header.php");
require_once('verbindung.php');
// Keine weitere Überprüfung ob Berechtigungen zum löschen vorhanden sind?
// So kann jeder der Zugriff auf die Seite hat einfach über die URL nach und nach alle Einträge löschen.
if(isset($_GET['id'])) {
// mysql_real_escape_string() ergänzt, solltest du dir anschauen und IMMER auf ALLE USEREINGABEN die in SQL-Statements verwendet werden anwenden
$sql = "delete from musik where id=".mysql_real_escape_string($_GET['id']);
$rs = mysql_query($sql);
if (file_exists("musik/".$_GET['d'])) {
unlink("musik/".$_GET['d']);
}
}
if(isset($_GET['top'])) {
// Immer noch die Frage: Wozu die SELECT-Abfrage hier? Das Ergebnis wird doch nirgends verwendet.
$query=mysql_query("SELECT * FROM musik WHERE id=$top") OR die(mysql_error());
$row = mysql_fetch_array($query);
mysql_query ("UPDATE musik SET vote = vote + 1, vote_ges = vote_ges + 1, prozent=(vote*100/vote_ges) WHERE id = '$top'");
}
elseif(isset($_GET['flop'])) {
// Ebenso hier: Zweck der SELECT-Abfrage?
$query=mysql_query("SELECT * FROM musik WHERE id=$flop") OR die(mysql_error());
$row = mysql_fetch_array($query);
mysql_query ("UPDATE musik SET vote = vote - 1, vote_ges = vote_ges + 1, prozent=(vote*100/vote_ges) WHERE id = '$flop'");
}
$sql = "SELECT dateiname, id from musik";
$rs = mysql_query($sql);
// mysql_fetch_array brauchst du hier noch nicht, mysql_num_rows kannst du auch verwenden ohne einen Datensatz abgerufen zu haben
// Die do-while-Schleife unten kann dann in eine normale while-Schleife geändert werden.
// $row = mysql_fetch_array($rs);
?>
<a href="upload.php">Neue Musik hochladen</a><hr/>
<?php
if(mysql_num_rows($rs) == 0) {
echo "Keine Musik vorhanden";
}
else {
while($row=mysql_fetch_array($rs)) {
echo !empty($row[0]) ? "$row[0]" :"kein Bild";
echo "<a href=\"upload.php?id=".$row[1]."\">weiter</a>
<a href=\"uebersicht.php?id=".$row[1]."&d=".$row[0]."\">löschen</a>
<a style=\"color:#000000\" href=\"uebersicht.php?top=".$row[1]."\"><img src=\"img/top.gif\" border=\"0\" height=\"15\"></a>
<a style=\"color:#000000\" href=\"uebersicht.php?flop=".$row[1]."\"><img src=\"img/flop.gif\" border=\"0\" height=\"15\"></a>";
?>
<object type="application/x-shockwave-flash" data="flash/start_stop.swf" height="18" width="20">
<param name="movie" value="flash/start_stop.swf">
<param name="bgcolor" value="#ffffff">
<param name="FlashVars" value="src=musik/<? echo $row[0]; ?>"><br/>
</object>
<br/>
<?php
}
}
mysql_free_result($rs);
mysql_close($verbindung);
include ("footer.php");
?>
Alles anzeigen
Edit: Die Debug-Anleitung von Bandit solltest du auf jedenfall beherzigen und dir angewöhnen, damit kann wenn sie vernünftig und korrekt angewendet wird 95% aller Probleme selbst lösen. Und dabei lernt man dann auch am meisten. 