Skriptsprachen (PHP, Javascript, etc.) - Forum

Derzeit sind Sie als Gast in unserem Forum aktiv. Für das Schreiben registrieren Sie sich bitte. Unser Forum ist eine Austauschplattform für Webworker zum Kommunizieren, Helfen, Informieren und Hilfe finden. Auf der rechten Seiten finden Sie eine Forenübersicht über alle Bereiche des Webmaster-Forums. Unterhalb finden Sie alle aktuellen Themen.

Diskutieren Sie hier über die serverseitige Skriptsprachen PHP und Python und über dynamische Webseitenerstellung mit Javascript und Ajax.


eUncle
Beiträge: 19

PN schreiben
Profil ansehen
User ist offline

galleryscript | LIMIT-Problem

Link zur Antwort auf "galleryscript | LIMIT-Problem" von eUncle eUncle, am Sonntag den 20.04.2008 um 13:39:11

...der Thread passt wohl eher in PHP, obwohl eig auch viel MySQL drin ist...

Ich möchte nen Galleryscript basteln und wollte grad mal schnell zum Testen so'ne Art "Index-Seite" ausgeben, auf der alle Bilder aufgelistet werden.

Festlegen möchte ich, dass pro Zeile drei Bilder angezeigt werden...

Hab mir bisher folgendes überlegt, funktioniert jedoch nicht^^

gallery  
PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<table>

<?php
$abfrage = "SELECT * FROM gallery ORDER by id DESC";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_array($ergebnis))
    {

        echo '<tr>';


    $abfrage2 = "SELECT * FROM gallery ORDER by id DESC LIMIT 3";
    $ergebnis2 = mysql_query($abfrage2);
    while($row = mysql_fetch_array($ergebnis2))
        {
            echo '<td><a href="'.$row['url_image'].'"><img src="'.$row['url_thumb'].'" alt="thumb" class="img"></a></td>';
        }

        echo '</tr>';
        echo '<tr style="height:25px;"><td></td><td></td></tr>';
    }
?>

</table>

Mir werden jetzt immer die drei gleichen Bilder ausgegeben (auch logisch^^) - kann mir da schnell jmd unter die Arme greifen?!
Danke


Benutzer gelöscht
Beiträge: 614

PN schreiben
Profil ansehen
User ist offline
Link zur Antwort auf "galleryscript | LIMIT-Problem" von Benutzer gelöscht Benutzer gelöscht, am Sonntag den 20.04.2008 um 13:54:37

du machst dir das Leben da viel zu kompliziert, eine MySQL Abfrage reicht völlig:

 
PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
<?php
// MySQL-Abfrage
// 0 setzen der Zähl-Variablen
$i = 0;
while() {
    if($i == 3) {
        echo("</tr>\n<tr>");
        $i = 0;
    }
    echo("<td><!-- ... dein Code ... --></td>");
    $i++;
}
?>

Das Ganze beruht darauf, dass in der Abfrage immer wieder bis 3 gezählt wird ($i++) und wenn $i 3 ist, eine neue Tabellenzeile eingefügt wird.


eUncle
Beiträge: 19

PN schreiben
Profil ansehen
User ist offline
Link zur Antwort auf "galleryscript | LIMIT-Problem" von eUncle eUncle, am Sonntag den 20.04.2008 um 14:14:21

wow, sonst fallen mir meist irgendwelche Dinge ein, wie man sowas abzählen kann usw - nur stand ich jetzt dann voll auf'm Schlauch...

Danke Dir, skittles :)

#E#
...warum eigentlich der \n zwischen den tr?

#E2#

habe jetzt die erste zeile mit 3 Bildern und den Rest in der zweiten...

=> sprich, $i wird nicht auf 0 gesetzt :(

#E3#

sorry, das $i=0 im IF-Zweig vergessen^^

habs sogar mit eigenem Überlegen *oouhh* reingebracht und wollte erst sagen, dass du das vergessen hast xD


Benutzer gelöscht
Beiträge: 614

PN schreiben
Profil ansehen
User ist offline
Link zur Antwort auf "galleryscript | LIMIT-Problem" von Benutzer gelöscht Benutzer gelöscht, am Sonntag den 20.04.2008 um 15:52:49

das \n hat rein optische Gründe. Schaut man sich später den Quelltext an, sind </tr> und <tr> in eigenen Zeilen.

Mag persönlicher Geschmack bzw. meine Gewohnheit sein.

Link zur Antwort auf "galleryscript | LIMIT-Problem" von Tobias "DerMega" Müller Tobias "DerMega" Müller, am Montag den 21.04.2008 um 10:38:18

Macht auch das Debuggen wesentlich einfacher!


eUncle
Beiträge: 19

PN schreiben
Profil ansehen
User ist offline
Link zur Antwort auf "galleryscript | LIMIT-Problem" von eUncle eUncle, am Montag den 21.04.2008 um 16:23:59

Ansichtssache ;P


Oliver H
Beiträge: 99

PN schreiben
Profil ansehen
User ist offline
Link zur Antwort auf "galleryscript | LIMIT-Problem" von Oliver H Oliver H, am Montag den 21.04.2008 um 17:04:46

Hatte mal das gleiche problem und hab das mit nem mehrdimensionalen array gelöst. Das Array hab ich so erstellt:

 
PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
function query_into_array($query){
    $retval = array();
    settype($retval,"array");
    $result= mysql_query($query);
    $y=mysql_num_rows($result);
    $k=mysql_num_fields($result);
        for($i=0;$i<$y;$i++){
            for($j=0;$j<$k;$j++){
            $retval[$i][mysql_field_name($result,$j)] =
            mysql_result($result,$i,mysql_field_name($result,$j));
            }
        }
    return $retval;
}

$erg=query_into_array("SELECT * FROM tbl_name");


eUncle
Beiträge: 19

PN schreiben
Profil ansehen
User ist offline
Link zur Antwort auf "galleryscript | LIMIT-Problem" von eUncle eUncle, am Montag den 21.04.2008 um 21:16:46

ist doch wesentlich komplizierter - da ist die andere Lösung hingegen wesentlich übersichtlicher, einfacher und für mich auch logischer ;P


David Danier
Beiträge: 1710

PN schreiben
Profil ansehen
User ist offline
Link zur Antwort auf "galleryscript | LIMIT-Problem" von David Danier David Danier, am Dienstag den 22.04.2008 um 09:48:06
Zitat von: Oliver Hoffmann

Hatte mal das gleiche problem und hab das mit nem mehrdimensionalen array gelöst. Das Array hab ich so erstellt:

[...Code mit mysql_result...]

http://docs.php.net/mysql_result:

Wenn auf Anfrageergebnisse mit vielen Datensätzen zugegriffen werden soll, sollten Sie Funktionen, die auf ganze Datensätze zugreifen,in Betracht ziehen (siehe unten). Diese Funktionen liefern bei einem einzigen Aufruf den Inhalt mehrerer Felder und sind aus diesem Grund SEHR viel schneller als mysql_result().

[...]

Empfohlende, leistungsfähigere Alternativen: mysql_fetch_row(), mysql_fetch_array(), mysql_fetch_assoc() und mysql_fetch_object().

Soll heißen: Wenn du eh eine ganze Zeile abruft, dann benutz mysql_fetch_row() o.ä.

Beispiel  
PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
function query_into_array($query){
    $retval = array();
    $result = mysql_query($query);
    while($row = mysql_fetch_row($result)) {
        $retval[] = $row;
    }
    return $retval;
}

$erg = query_into_array("SELECT * FROM tbl_name");

...ich denke du wirst mir zustimmen, dass das einfacher ist.