| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

12-11-2010, 18:10
|
|
sascha_h
Registrierter Benutzer
|
|
Registriert seit: Nov 2010
Beiträge: 19
|
|
Array mit Laufindex ausgeben
Hallo Leute,
mein erster Post hier im Forum, suche jetzt schon drei Tage nach einer Lösung für mein Problem.
Ich habe eine Tabelle, in der ich Links zu Bildern gespeichert habe. Diese möchte ich nun ausgeben, möglichst in einer angenehmen Form. Ähnlich wie bei den Galerie Scripten die es alle so gibt.
Ich möchte gerne drei Bilder nebeneinander und dann N Zeilen untereinander ausgeben lassen. In einem Galerie Script habe ich dieses gefunden, das will aber nicht funzen. Es werden immer 12 Bilder nebeneinander angezeigt. Das scheint das zu sein, was in die Tabelle aussen drum passt.
Setze ich das $i=0 vor die while Schleife werden komischerweise nur 16 der 48 vorhandenen Einträge angezeigt. Verstehe nicht so ganz wo mein NEWBIE Denkfehler ist.
Danke.
Mein Script:
PHP-Code:
$picture = $mysqli->query("select pic_link, thumb_link FROM competition order BY sn desc");
{
while($zeile1 = $picture->fetch_array())
{
$i = 0;
//Reihe mit je drei Bildern
if ($i % 3 == 0)
echo
"<tr><td id='tableww'>" . "<a rel='mylightbox' class='navi' href='"
. htmlspecialchars($zeile1["pic_link"]) . "' target='_blank'><img src='"
. htmlspecialchars($zeile1["thumb_link"]). "' width='60px' border='none'></a>"
. "</td></tr>";
$i ++;
}
}
|

12-11-2010, 18:44
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.308
|
|
Zuerst schmeisst du mal das id='tableww' raus. Eine ID darf pro Seite nur einmal vorkommen. Dann setze du Bedingung einfach so um:
PHP-Code:
if ($i % 3 == 0) { echo '<tr>'; } echo '<td id="tableww">....</td>'; if (($i + 1)% 3 == 0) { echo '<tr>'; }
Und das $i = 0 gehört über die while-Schleife.
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

12-11-2010, 19:27
|
|
sascha_h
Registrierter Benutzer
|
|
Registriert seit: Nov 2010
Beiträge: 19
|
|
Hallo Peter, erstmal danke für den Hinweis mit der ID="tableww", das habe ich entfernt.
Mein Script sind nun so aus:
PHP-Code:
$picture = $mysqli->query("select pic_link, thumb_link FROM competition order BY sn desc");
{
$i = 0;
while($zeile1 = $picture->fetch_array())
{
if ($i % 3 == 0) {
echo '<tr>';
}
echo
'<td>' . '<a rel="mylightbox" class="navi" href="'. htmlspecialchars($zeile1["pic_link"]) . '" target="_blank">
<img src="'. htmlspecialchars($zeile1["thumb_link"]). '" width="60px" border="none"></a>' . '</td>';
if (($i + 1)% 3 == 0) {
echo '<tr>';
}
}
}
Liege ich damit richtig?
Denn die Anzeige ( 12 Bilder nebeneinander ) ist immer noch die gleiche.
|

12-11-2010, 19:56
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.308
|
|
Sollte eigentlich nicht sein. Hast du mal ein Online-Beispiel verfügbar? Oder schau dir mal den erzeugten HTML-Quellcode an. Ist der valide? Oder gibt es da Unstimmigkeiten?
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

12-11-2010, 20:56
|
|
sascha_h
Registrierter Benutzer
|
|
Registriert seit: Nov 2010
Beiträge: 19
|
|
Hallo Peter,
nein ich habe leider kein Online Beispiel, entwickle hier auf meinem iMac unter Xampp und Dreamweaver.
Hm so weit ich das sehen kann ist von den Rahmen Bedingungen her alles gut, nur die Ausgabe des Bilder Teils sieht nicht korrekt aus.
PHP-Code:
<a rel="mylightbox" class="navi" href="http://www.php-resource.de/forum/vollbild/2407-05-Silvina.jpg" target="_blank"> <img src="http://www.php-resource.de/forum/vorschaubild/2407-05-Silvina.jpg" width="60px" border="none"></a></td><tr><td> <a rel="mylightbox" class="navi" href="http://www.php-resource.de/forum/vollbild/2407-04-Silvina.jpg" target="_blank"> <img src="http://www.php-resource.de/forum/vorschaubild/2407-04-Silvina.jpg" width="60px" border="none"></a></td><tr><td> <a rel="mylightbox" class="navi" href="http://www.php-resource.de/forum/vollbild/2407-02-Silvina.jpg" target="_blank"> <img src="http://www.php-resource.de/forum/vorschaubild/2407-02-Silvina.jpg" width="60px" border="none"></a></td><tr><td> <a rel="mylightbox" class="navi" href="http://www.php-resource.de/forum/vollbild/2407-06-Silvina.jpg" target="_blank"> <img src="http://www.php-resource.de/forum/vorschaubild/2407-06-Silvina.jpg" width="60px" border="none"></a></td><tr><td> <a rel="mylightbox" class="navi" href="http://www.php-resource.de/forum/vollbild/2407-12-Silvina.jpg" target="_blank"> <img src="http://www.php-resource.de/forum/vorschaubild/2407-12-Silvina.jpg" width="60px" border="none"></a></td><tr><td> <a rel="mylightbox" class="navi" href="http://www.php-resource.de/forum/vollbild/2407-11-Silvina.jpg" target="_blank"> <img src="http://www.php-resource.de/forum/vorschaubild/2407-11-Silvina.jpg" width="60px" border="none"></a></td><tr><td> <a rel="mylightbox" class="navi" href="http://www.php-resource.de/forum/vollbild/2407-08-Silvina.jpg" target="_blank">
Habe hier noch einen Slash hinzugefügt hat aber nix geändert:
PHP-Code:
if (($i + 1)% 3 == 0) { echo '</tr>'; }
Geändert von sascha_h (12-11-2010 um 22:18 Uhr)
|

12-11-2010, 21:46
|
|
Peacie
Registrierter Benutzer
|
|
Registriert seit: Nov 2003
Beiträge: 341
|
|
Zuerst mal, was sollen die umschliessenden {} (ganz aussen)?
und in deinem letzten beispiel fehlt das $i++;
PHP-Code:
$picture = $mysqli->query("select pic_link, thumb_link FROM competition order BY sn desc");
$i = 0;
while($zeile1 = $picture->fetch_array())
{
if ($i % 3 == 0) {
echo '<tr>';
}
echo
'<td>' . '<a rel="mylightbox" class="navi" href="'. htmlspecialchars($zeile1["pic_link"]) . '" target="_blank">
<img src="'. htmlspecialchars($zeile1["thumb_link"]). '" width="60px" border="none"></a>' . '</td>';
if (($i + 1)% 3 == 0) {
echo '</tr>';
}
$i++;
}
sollte gehen (ungetestet)
edit: da sehe ich gerade, das ich das untere </tr> falsch hatte... geändert
und bitte mal den post anpassen, ich muss auf 22" scrollen
Geändert von Peacie (12-11-2010 um 21:55 Uhr)
Grund: sorry ein / vergessen
|

12-11-2010, 22:09
|
|
mephisto111
Registrierter Benutzer
|
|
Registriert seit: Nov 2003
Beiträge: 41
|
|
Code:
$i=1;
$str='';
while($zeile1 = $picture->fetch_array())
{
$str.='<td>'.'gewuenschter Inhalt'.'</td>';
if($i%3==0)
{
$str='<tr>'.$str.'</tr>'."\n";
echo $str;
$str='';
}
$i++;
}
$add='';
if(($i-1)%3!=0) # Letzte Zeile
{
for($j=($i-1)%3+1;$j<=3;$j++)
$add.='<td></td>';
$str='<tr>'.$str.$add.'</tr>'."\n";
echo $str;
}
|

13-11-2010, 13:55
|
|
sascha_h
Registrierter Benutzer
|
|
Registriert seit: Nov 2010
Beiträge: 19
|
|
morgen,
leider hatten beide Ansätze keinen Erfolg. Den Code von Peacie habe ich so integriert:
PHP-Code:
<?php
include "../includes/db_daten.php"; $picture = $mysqli->query("select pic_link, thumb_link FROM competition order BY sn desc"); $i = 0; while($zeile1 = $picture->fetch_array()) { if ($i % 3 == 0) { echo '<tr>'; } echo '<td>' . '<a rel="mylightbox" class="navi" href="' . htmlspecialchars($zeile1["pic_link"]) . '" target="_blank"> <img src="'. htmlspecialchars($zeile1["thumb_link"]) . '" width="60px" border="none"></a>' . '</td>'; if (($i + 1)% 3 == 0) { echo '</tr>'; } $i++; } ?>
Und den Code von Mephisto habe ich so umgesetzt:
PHP-Code:
<?php include "../includes/db_daten.php"; $picture = $mysqli->query("select pic_link, thumb_link FROM competition order BY sn desc"); $i=1; $str=''; while($zeile1 = $picture->fetch_array()) { $str.='<td>'.'<a rel="mylightbox" class="navi" href="' . htmlspecialchars($zeile1["pic_link"]) . '" target="_blank"> <img src="'. htmlspecialchars($zeile1["thumb_link"]) . '" width="60px" border="none"></a>'.'</td>'; if($i%3==0) { $str='<tr>'.$str.'</tr>'."\n"; echo $str; $str=''; } $i++; } $add=''; if(($i-1)%3!=0) # Letzte Zeile { for($j=($i-1)%3+1;$j<=3;$j++) $add.='<td></td>'; $str='<tr>'.$str.$add.'</tr>'."\n"; echo $str; }
?>
beides hat leider den gleichen Effekt das soviel wie möglich Bilder pro Zeile angezeigt werden. Bis anscheinend die Tabelle voll ist und dann geht es in die nächste Zeile.
|

13-11-2010, 14:07
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
Warum missbrauchst du HTML-Tabellen fürs Layout?
|

13-11-2010, 14:11
|
|
sascha_h
Registrierter Benutzer
|
|
Registriert seit: Nov 2010
Beiträge: 19
|
|
Sorry falsch ausgedrückt.
Keine Tabelle die, die breite der Seite vorgibt sondern das Box Modell.
|

13-11-2010, 15:27
|
|
mephisto111
Registrierter Benutzer
|
|
Registriert seit: Nov 2003
Beiträge: 41
|
|
|

13-11-2010, 16:00
|
|
sascha_h
Registrierter Benutzer
|
|
Registriert seit: Nov 2010
Beiträge: 19
|
|
 Mephisto, das hat den Fehler aufgedeckt:
PHP-Code:
{ $str='<table><tr>'.$str.'</tr></table>'."\n"; echo $str; $str=''; }
Es fehlte die Angabe das es sich um eine Table handelt.
Problem gelöst, vielen Dank an alle!!!
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|