Bildergallerie
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anzahl
anzeigen
ausgabe
ausgeben
bild
code
file
frage
glauben
grad
kommentar
logik
pfad
problem
schleife
schleifen
spalte
spalten
tabelle
zeile
-
Huhu
Also ich hab vor, mir eine Datenbankbasierte Bildergallerie mit Kommentaren etc. zu programmieren. Eigentlich kann ich alles, doch ein Problem habe ich. Und zwar wenn ich die Pfade zu den Bildern aus der Datenbank in einer Zeile ausgeben will, dann will ich nicht, dass ich jeder Spalte der gleiche Pfad zum Bild ist, sondern immer ein anderer.
Bisher w?rde ich das so in etwa hinkriegen:
(die Ausgabe w?re so bei mir in einer while-Schleife)
|Bild1|Bild1|Bild1|Bild1|Bild1|
|Bild2|Bild2|Bild2|Bild2|Bild2|
|Bild3|Bild3|Bild3|Bild3|Bild3|
usw.
Also ich m?chte jetzt konkret wissen, wie ich das hinbekomme, dass in jeder Ziele und jeder Spalte ein anderer Pfad ausgegeben wird. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
zwar hab ich deine frage nich ganz so verstanden, aber ich vermute jetzt ma das du die bilder so ausgeben willst
|Bild1|Bild2|Bild3|
|Bild4|Bild5|Bild6|
usw.
dazu gibts nen gutes tutorial, ich glaube von kenny -
In jedem while-Schleifen Aufruf solltest du immer nur eine Tabellenzelle haben.
so, und wenn du bspw. 3 Spalten benutzen willst, dann z?hlst du mit einem counter die Schleifen-Durchl?ufe und immer alle 3-Durchl?ufe machst du eine neue Tabellenzeile
etwa so:
<?
$counter=1;
while..... { ?>
<td>
<? echo $bild; ?>
</td>
<? if ($counter%3==0) echo "</tr><tr>";
$counter++;
}
?>
so erstellst du eine Tabelle, wo in jeder Spalte zu Zeile was anderes steht.
Ich hoffe, das war das, was du machen willst? -
im prinzip habt ihr beide das verstanden.
aber ich glaube die methode von hel800 w?rde nicht hinhauen, da m?sste dann immernoch in jeder spalte der zeile das gleiche bild sein.
und so nen tut von kenny hab ich grad net gefunden... -
ich hab auch nichts gefunden, aber da gabs eins ;)
naja ich such ma eben auf meinem rechner nach dem code
edit:
Das is abgewandelt!
ich hab hier nen ordner ge?ffnet und so
das kann man aber wieder umschreiben f?r deine db
$verz = opendir ('fotos');
$bildnummer = 0;
echo "<table border=\"0\">";
while ($file = readdir ($verz))
{
if($file != "." && $file != ".." && $file!="index.php" && $file!="org" && $file!="Thumbs.db")
{
$bildnummer++;
if (($bildnummer + 2) / 3 == floor(($bildnummer + 2) / 3))
{
echo "<tr><td><a href=\"#\" onclick=\"window=window.open('fotos/org/".$file."','Fotos', 'toolbar=no,location=yes,directories=no,status=no, menubar=no,scrollbars=yes,resizable=yes,width=500,height=500');\"><img border=\"0\" width=\"100\" height=\"100\" src=\"fotos/".$file."\"></a></td>";
}
elseif (($bildnummer + 1) / 3 == floor(($bildnummer + 1) / 3))
{
echo "<td><a href=\"#\" onclick=\"window=window.open('fotos/org/".$file."','Fotos' ,'toolbar=no,location=yes,directories=no,status=no, menubar=no,scrollbars=yes,resizable=yes,width=500,height=500');\"><img border=\"0\" width=\"100\" height=\"100\" src=\"fotos/".$file."\"></a></td>";
}
elseif ($bildnummer / 3 == floor($bildnummer / 3))
{
echo "<td><a href=\"#\" onclick=\"window=window.open('fotos/org/".$file."','Fotos', 'toolbar=no,location=yes,directories=no,status=no, menubar=no,scrollbars=yes,resizable=yes,width=500,height=500');\"><img border=\"0\" width=\"100\" height=\"100\" src=\"fotos/".$file."\"></a></td></tr>";
}
}
}
if (($bildnummer + 2) / 3 == floor(($bildnummer + 2) / 3))
{
$kontent .= "<td> </td><td> </td></tr>";
}
elseif (($bildnummer + 1) / 3 == floor(($bildnummer + 1) / 3))
{
$kontent .= "<td> </td></tr>";
}
$kontent .= "</table>";
closedir($verz);
-
So, jetzt hab ich endlich meine Gallerie mit Kommentaren und so. Doch eine Frage habe ich noch, dazu braucht ihr aber erst noch das Script:
<?php @include ("connect2.php"); ?>
<?php
function db_get_images($string__DB_NAME, $string__eventname)
{
$db_sql = "SELECT *
FROM `bilder`
WHERE (`event` = '$string__eventname')
ORDER BY `id` ASC";
$db_result = mysql_db_query($string__DB_NAME, $db_sql) or die ("Couldn't open TABLE of DATABASE. Errorcode ".mysql_errno().": ".mysql_error());
while($db_row = mysql_fetch_assoc($db_result))
{
$array__images[] = array('thumbpfad' => $db_row['thumbpfad'],
'bildpfad' => $db_row['bildpfad'],
'eventname' => $db_row['event'],
'bildid' => $db_row['id'],
'width' => 90,
'height' => 80,
'alternative_text' => 'Joker'
);
}
return $array__images;
}
function echo_space($integer__space)
{
for($integer__i = 0; $integer__i < $integer__space; $integer__i++)
{
echo " ";
}
}
function display_gallery($array__images, $integer__space, $integer__images_per_row = 1, $integer__table_width = '100', $boolean__table_width_in_per_cent = FALSE, $boolean__open_a_new_window_for_each_anker = FALSE)
{
$integer__length_aod = count($array__images);
$integer__i = 0;
$integer__table_row_width = floor($integer__table_width / $integer__images_per_row);
if($boolean__table_width_in_per_cent == TRUE)
{
$integer__table_row_width .= '%';
}
echo '<table width="450" border="0" cellspacing="0" cellpadding="2">' . "\n";
while($integer__i < $integer__length_aod)
{
echo_space($integer__space + 1); echo '<tr>' . "\n";
for($integer__j = 0; $integer__j < $integer__images_per_row; $integer__j++)
{
echo_space($integer__space + 2); echo '<td width="'. $integer__table_row_width .'" align="center" valign="top">' . "\n";
if($integer__i < $integer__length_aod)
{
echo_space($integer__space + 3); echo '<a href="pics.php?bildid='. $array__images[$integer__i]['bildid'] .'" target="_self"';
if($boolean__open_a_new_window_for_each_anker == TRUE)
{
echo rand();
}
echo '"><img src="'. $array__images[$integer__i]['thumbpfad'] .'" border="0" width="'. $array__images[$integer__i]['width'] .'" height="'. $array__images[$integer__i]['height'] .'" alt="'. $array__images[$integer__i]['alternative_text'] .'" /></a>' ."\n";
}
else
{
echo_space($integer__space + 3); echo ' ' ." \n";
// ALTERNATIVE
// durchsichtiges Bild einspielen, da manche Browser ' ' nicht aktzeptieren!
// echo_space($integer__space + 3); echo '<img src="http://www.anywhere.com/invisible_001x001.gif" border="0" width="1" height="1" alt="" />' ." \n";
}
echo_space($integer__space + 2); echo '</td>' . "\n";
$integer__i++;
}
echo_space($integer__space + 1); echo '</tr>' ."\n";
}
echo_space($integer__space); echo '</table>' ."\n";
}
?>
<!--
HTML CODE
-->
<?php
$_GET['section'];
$string__DB_NAME = 'DB1104094989';
$string__eventname = $section;
$array__images = db_get_images($string__DB_NAME, $string__eventname);
display_gallery($array__images, 3, 5);
?>
Das Problem nun, ich m?chte bei dieser ?bersicht (?brigens hier zu bestaunen: http://shakal.xardas.lima-city.de/pics.php?section=14 ) anzeigen, wie viele Kommentare zu einem Bild vorhanden sind. Wie ich die Eingabe mache, wei? ich schon. Ich erh?he einen wert in der spalte der tabelle zu dem dazugeh?rigen bild immer um 1. Bei der Ausgabe wird es jetzt jedoch schwieriger. Das Script muss ja wissen unter welchem Bild es anzeigen, wie viel Kommentare genau zu diesem Bild da sind. ich wei? nicht, wie ich das realisieren soll, weil das dem Script ja irgendwie ?bergeben werden muss. Wei? irgendwer, wie ich das machen kann? -
was wird den das?????
-
blub blub??
wie w?rs wenn du einfach ne tabelle machst, wo alle kommenatre rein kommen?
bei jedem bild in der while schleife lieste dann die anzahl der kommentare mit mysql_num_row (oder so siehe andere threat ;))
wenn du probs hast, wegen der "logik" meld dich ;)
genau das is das problem bei mir. alle kommentare sind schon in einer tabelle.
aufbau der tabelle:
id|autor|kommentar|bildid wobei die bildid die id des bildes ist...
und dann sind alle bilder in einer tabelle
also
id|bildpfad|thumbpfad|eventid|eventname|maxbilder|bildnr wobei bildnr. die nummer des bilder des events ist.
das problem ist halt bei der ausgabe, dass das script ja nicht wei?, in welchem evnet es ist.... obwohl, hmmm, ich bin grad auf ne idee gekommen... lasst mich mal schaffen -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage