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

MySQL Abruf in while fuktioniert nicht

DD-Stylz

Neues Mitglied
Morgen

habe ein Problem und es ist mir einfach unklar was da los ist.

Habe einen Datenbankabruf der so aussieht:

PHP:
if(isset($_POST['los'])) {
    if($_POST['choise'] != "Alle") {
      $kat = "AND `art` = '" . $_POST['choise'] . "'"; 
      $titelnew = "Neusten " . $_POST['choise'];    
    }    
} 

$sql = "SELECT * FROM `bilder` WHERE `art` != 'Avatar' {$kat} ORDER BY `datum` DESC";
$result = mysql_query($sql);

so und dann kommt folgende while (abgekürzt)

PHP:
while($row = mysql_fetch_array($result)) {
    [.....]
}


dass dumme ist das ich da nur ein Ergebniss rausbekomme. habe in anderen Seiten von genau das selbe verfahren und dort klapts nur hier i-wie nicht. habe mir nochmal extra mit

PHP:
print mysql_num_rows($result);
print mysql_error();

den Error und die Zeilenanzahl ausgeben lassen und es gibt keinen Errror und bei Zeilen kommt eine 3, was stimmt.

hat jemand eine Idee worans liegt?
 
Werbung:
ok, da kommt der Inhalt der while.

PHP:
 if(strlen($row['beschreibung']) > 150) {
            $text = substr($row['beschreibung'], 0, 150) . "<small><a href=\"galerie.php?picid={$row['id']}\" style=\"text-decoration: none;\">  weiterlesen...</a></small>";
        } else {
            $text = $row['beschreibung'];
        }        
        $info = getimagesize($row['thumb1']);
        
        $x = (135 - $info[1]) / 2;
        
        $result = mysql_query("SELECT `nick` FROM `user` WHERE `id` = {$row['userid']}");
        $rowup = mysql_fetch_array($result);
        $datum = datumzeit($row['datum']);
        $news .= "<div style=\"width: 550px; float: left; border-bottom: 1px solid #000000; margin-top: 10px;\">
                      <div style=\"float: left; width: 150px; height: 135px; text-align: center;\">
                          <a href=\"galerie.php?picid={$row['id']}\" style=\"text-decoration: none; margin: auto 0;\"><img src=\"" . $url2 . "/" . $row['thumb1'] . "\" alt=\"{$row['name']}\" title=\"{$row['name']}\" style=\"width: {$info[0]}px; height: {$info[1]}px; border: none; margin-top: {$x}px;\"></a>
                      </div>
                      <div style=\"float: right; width: 400px;margin-top: 5px;\">
                          <big><i><a href=\"galerie.php?picid={$row['id']}\" style=\"text-decoration: none; margin: auto 0;\">{$row['name']}</a></i></big>
                          <hr style=\" height: 0px; border: dotted 1px #000000;\">
                          {$text}
                          <hr style=\" height: 0px; border: dotted 1px #000000;\">
                          <small> upgeloadet von <a href=\"profil.php?userid={$row['userid']}\">{$rowup['nick']}</a> am {$datum}</small>
                     </div>
                  </div>";         
    
    }
 
Werbung:
Und da kommt die Lösung:

Code:
$result = mysql_query("
innerhalb der Schleife überschreibst du die Variable $result, die noch für die while-Schleife für die Funktion mysql_fetch_array($result) benötigt wird!

Nenne die Variable innerhalb der Schleife z.B: $result2
 
ohh man lol xD hab vergessen das up dranzuhängen xD

Danke ;) jetzt funktionierts.

Bei $row habe ich es ja drangehängt xD

muss wohl der rest alki von gestern noch sein .
 
Dir ist bewußt, dass deine Anwendung im Internet früher oder später gecrackt wird?
 
Werbung:
du meinst weil ich die POST´s net überprüfe?

1. Werden die gleich gleich überprüft (war noch net soweit)
2. Kommen die von nem Selectfeld.(werden trotzdem gleich überprüft).
1. Nein, weil die Daten nicht dem Kontext angepaßt werden
2. Das spielt absolut keine Rolle, du hast keine Kontrolle darüber, wie Daten übergeben werden.

EDIT: Auch solltest du dir mal diesen Artikel durchlesen: http://aktuell.de.selfhtml.org/artikel/datenbanken/joins/ ich bin relativ sicher, dass du hier einen join anwenden möchtest.
 
was meinst du mit Punkt 1 ?


Zum Punkt 2 ist schon klar, ich hatte eigentlich vor bei

$kat = "AND `art` = '" . $_POST['choise'] . "'";

mit mysql_real_escape_string() zu maskieren

was schlägst du den vor ? bin immer für bessere/sicheren Lösungen offen.
 
Werbung:
ok thx ;)


naja ich habe früher mal mit JOINS versucht zu arbeiten ( gestern auch) und naja ich scheine da zu blöd für zu sein, komme auf jedenfall mit ihnen net klar.

Aber geht ja auch zum glück ohne, dauert zwar länger aber momentan kann ich es in den kauf nehmen.
 
MySQL ist auf besonders schnelle arbeitsweise mit JOINS optimiert, demnach sollte die geschwindigkeit keine hürde darstellen.

Nils aka XraYSoLo
 
Werbung:
MySQL ist auf besonders schnelle arbeitsweise mit JOINS optimiert, demnach sollte die geschwindigkeit keine hürde darstellen.

Nils aka XraYSoLo

habe ich doch auch geschrieben.

Habe mal jetzt erfolgreich *spring zur Decke hoch :D* beim anfragen der Bilder gleich die Usertabelle reingesetzt.

PHP:
$sql = "SELECT `bilder`.*, `user`.`nick` FROM `bilder`, `user` WHERE `bilder`.`art` != 'Avatar' {$kat}  AND `user`.`id` = `bilder`.`userid` ORDER BY `bilder`.`datum` DESC LIMIT 0, " . $GLOBALS['bilder_neuste'] . "";
Mit dem Kommentaren ka ob es geht, sind ja immer verschieden viele pro Bild, habs net hingekriegt.

Thx für den Link
 
Das geht auch mit joins.

Ich würde die Abfrage auch expliziter schreiben (ob es nötig ist, weiß ich nicht, da mysql viel optimiert):

Code:
SELECT `bilder`.*, `user`.`nick` 
FROM `user` LEFT JOIN `bilder` ON  `user`.`id` = `bilder`.`userid` 
WHERE `bilder`.`art` != 'Avatar' {$kat}
 
Das geht auch mit joins.

Ich würde die Abfrage auch expliziter schreiben (ob es nötig ist, weiß ich nicht, da mysql viel optimiert):

Code:
SELECT `bilder`.*, `user`.`nick` 
FROM `user` LEFT JOIN `bilder` ON  `user`.`id` = `bilder`.`userid` 
WHERE `bilder`.`art` != 'Avatar' {$kat}

thx ;) klapt wunderbar


bleibe aber bei der einfacheren Version von Joins, wir wollen mich ja net überfordern xD

bin ja eigentlich ein Grafiker der in einer Ausbildung zum FI: AE, coden tuhe ich nur j4f in freizeit.
 
Werbung:
Zurück
Oben