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

MySQL: Erste Zeile wird nicht ausgegeben

  • Ersteller Ersteller ohrflieger
  • Erstellt am Erstellt am
Status
Für weitere Antworten geschlossen.
O

ohrflieger

Guest
Hallo,

MySQL-Problem: Hab eine Tabelle 'Medienlist' mit den Spalten id(auto_increment), medie, titel, code, url, anz, zeig(Inhalt: j und n möglich) und datum.

Bei folgendem Script wird aber die erste Zeile nicht ausgegeben!

PHP:
<?php
$sql1 = "SELECT id,medie,titel FROM Medienlist WHERE zeig = 'j'";
$result1 = mysql_query($sql1) OR die(mysql_error());
if(mysql_fetch_row($result1)) {

while($row = mysql_fetch_assoc($result1)) {
echo '<tr><td>'.$row["id"].'</td><td><font size="-1">'.$row["titel"].'</font></td><td>';
$medie = new Zahl();
echo $medie->Zaehl($row["medie"]);
unset($medie);
echo '</td><td>';
$datei = fopen("../Bild/Text/dl_".$row["medie"].".txt","r");
$in = fgets($datei);
if($in != 0) {
?>
<font size="-1" color="#aaff00">frei</font></td>                  <!-- &ak=0 -->
<td><font size="-1"><a href="downloads_change.php?dl=<?php echo $row['medie']; ?>0">Download sperren</a></font></td>
<?php
} else {
?>
<font size="-1" color="#ffaa00">gesperrt</font></td>                     <!-- &ak=1 -->
<td><font size="-1"><a href="downloads_change.php?dl=<?php echo $row['medie']; ?>1">Download freigeben</a></font></td>
<?php
}
echo '<td>';
$medie = new Durchschnitt();
echo $medie->Errechnen($row["medie"]);
echo '</td></tr>';
}//ende while-schleife
echo '<tr><td colspan="6"><hr color="#e7e7e7" align="left" size="1" width="100%"></td></tr></table>';

} else {//mysql-fetch-row leer
echo '<tr><td colspan="6"><i>Es sind keine Medien vorhanden oder ein kritischer Fehler ist aufgetreten (Datenbank pr&uuml;fen)</i></td></tr>';
}
?>

Wichtig sind eigentlich nur die ersten paar Zeilen. Aus der Tabelle 'Medienlist' werden die Einträge ausgelesen, bei denen 'zeig' = 'j' ist. Aber der erste Eintrag, der diese Angabe erfüllt, wird nicht angezeigt! Ich hab schon versucht, als erste Zeile in der Tabelle eine mit zeig = 'n' zu machen, aber dann wurde das Problem trotzdem nicht gelöst!!! Weiß jemand eine Antwort darauf und kann den Fehler finden?
 
Jaaaa! :D Danke!

Aber warum klappts jetzt plötzlich? Und warum vorher nicht?

EDIT:
Die if-Abfrage prüft doch nur, ob er überhaupt Informationen erhalten hat!
Wieso nimmt er dann die erste zeile nicht?
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

mysql_fetch_* holt immer einen Datensatz, falls kein weiterer existiert wird False zurückgegeben. Daher verschand der erste durch die if-Abfrage.


N43
 
Weiteres Problem

Und wie soll ich den dann prüfen lassen, ob er was gefunden hat oder falls nicht, dass er ne Fehlermeldung ausgibt?

UNd ich hab in nem anderen Script das Problem, dass er nichts findet. Weiß nur nicht wieso. Liegt ds auch an dem MySQL_fetch_row? (Fehler liegt wahrscheinlich in den ersten 20 Zeilen)

PHP:
<?php
include("../leinwand_connect.php");
require_once("class.php");

$dl = $_GET["dl"];
$code = $_GET["code"];
$ssql = "SELECT titel,url,anz FROM Medienlist WHERE medie = '".$dl."'"; // and code = '".$code."'
$sresult = mysql_query($ssql) OR die(mysql_error());

if(mysql_fetch_row($sresult)) {
while($row = mysql_fetch_array($sresult)){}
echo $row["titel"];
?>
</font>
<hr color="#e7e7e7" align="left" size="1" width="100%">
<font size="-2"><a href="index.php">Zurück zur Übersicht</a></font><br><br>
<font size="-1">
<?php
error_reporting(0);
$date = fopen("../Bild/Text/dl_".$dl.".txt","r");
$drin = fgets($date);
if($drin == "1") {

if($row["anz"] == "1") {
?>
<script language="javascript"><!--
function download() {
document.location.href = "http://member.file-upload.net/leinwandag/<?php echo $row["url"]; ?>";
}
//--></script>
<font size="+1">Download</font><br><b><?php echo $row["titel"]; ?></b>
<table border="0" align="left" width="100%" cellpadding="0" cellspacing="3">
<tr><td colspan="2"><hr align="left" width="100%" size="1" color="#f0f0f0"></td></tr><tr>
<td><?php echo $row["titel"]; ?></td>
<td><a href="javascript:download();"><img src="../Bild/dl_dlbutton.jpg" border="0" alt="Downloaden" align="right"></a></td>
</tr><tr><td colspan="2"><hr align="left" width="100%" size="1" color="#f0f0f0"></td></tr></table>
<?php
} else {//anz > 1
$teile = explode("|",$row["url"]);
?>
<font size="+1">Downloads</font><br><b><?php echo $row["titel"]; ?></b>
<table border="0" align="left" width="100%" cellpadding="0" cellspacing="3"><tr><td colspan="2"><hr align="left" width="100%" size="1" color="#f0f0f0"></td></tr>
<?php
$t = 1;
$a = 0;
while($t <= $teile) {
$link = $teile[$a];
?>
<script language="javascript"><!--
function download<?php echo $t; ?>() {
document.location.href = "http://member.file-upload.net/leinwandag/<?php echo $link; ?>";
}
//--></script>
<?php
$t = $t + 1;
$a = $a + 1;
}
reset($teile);

$t = 1;
$a = 0;
while($t <= $teile) {
$link = $teile[$a];
?>
<tr><td>Teil <?php echo $t; ?></td>
<td><a href="javascript:download<?php echo $t; ?>();"><img src="../Bild/dl_dlbutton.jpg" border="0" alt="Downloaden" align="right"></a></td></tr>
<?php
$t = $t + 1;
$a = $a + 1;
}

echo '<tr><td colspan="2"><hr align="left" width="100%" size="1" color="#f0f0f0"></td></tr></table>';
}//'anz>1' zu


//begin zaehler
$sgql = "SELECT COUNT(*) as Anzahl FROM Downloads WHERE ip = '".$_SERVER['REMOTE_ADDR']."' AND medie = '".$dl."'";
$regsult = mysql_query($sgql) OR die(mysql_error());
$grow = mysql_fetch_assoc($regsult);
if($grow['Anzahl']) {
} else { //zaehler else
$sql = "INSERT INTO Downloads (ip, medie, datum) VALUES ('".$_SERVER['REMOTE_ADDR']."','".$dl."', NOW())";
mysql_query($sql) OR die(mysql_error());
} //zaehler zu

} else { //txt gesperrt
echo '<p><font size="+1">Download gesperrt</font></p><p>Der gew&uuml;nschte Download "$row["titel"]" ist zur Zeit leider gesperrt. Das Herunterladen der Medie ist ohne Freigabe nicht m&ouml;glich.</p><p><i>Problembehebung</i></p><p>Ist der Download gesperrt, steht das meist auf der Downloadseite der entsprechenden Medie. Wenn du wissen willst, warum ein bestimmter Download gesperrt ist, kannst du uns unter <a href="../kontakt.php">&raquo; Kontakt</a> schreiben.</p>';
}
fclose($date);
} else { //mysql auslesen fehler
echo 'Fehler beim Auslesen der Mediendaten</font><hr color="#e7e7e7" align="left" size="1" width="100%"><font size="-2"><a href="index.php">Zur&uuml;ck zur &Uuml;bersicht</a></font><br><br><font size="-1"><p><b>Fehler beim Auslesen der Mediendaten</b></p><p>Die angegeben Daten im Link sind falsch oder die gesuchte Medie existiert nicht. M&ouml;glicherweise wurde ein falscher Code &uuml;bermittelt.</p><p><i>Problembehebung</i></p><p>Gehe auf die offizielle Download-Seite der Medie und klicke dort auf den Download-Button. Ist die Medie gesperrt, kannst du sie nat&uuml;rlich nicht downloaden.</p>';
} //mysql auslesen fehler zu
?>

Ich weiß auch nicht, wie ich die Abfrage der Daten formulieren soll:
PHP:
<?php
while($row = mysql_fetch_array($sresult)){}
?>
Denn das kanns ja nich sein.

Was muss ich am Script verändern?
 
Hallo,

du kannst z.B. über mysql_num_rows herausfinden, wie viele Ergebnisse gefunden wurden.

zu deinem zweiten Script: Wenn es nur einen passenden Datensatz gibt wird es an dem if liegen.


N43
 
Jetzt klappt alles :) Danke für die Hilfe! Wieder mal was gelernt :wink:
Hab jetzt einfach abgefragt, ob er was gefunden hat.

PHP:
<?php
if($row = mysql_fetch_array($sresult)) {
?>
Hat natürlich den Nachteil, dass er die ANweisungen auch bei mehreren Datensätzen durchführt. Was passiert denn,w enn er mehrere Datensätze findet und dann den Befehl

PHP:
<?php
echo $row["titel"];
?>
findet?
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben