Willkommen auf dem Portal für Mediengestalter
|
|
Autor |
Nachricht |
gkiene
Threadersteller
Dabei seit: 18.10.2006
Ort: Bruck
Alter: -
Geschlecht:
|
Verfasst Fr 20.10.2006 12:18
Titel Fotogalery mit verschiedenen Kategorien in PHP |
|
|
Hallo!
Ich muss für die Schule eine Fotogallery machen, hab dabei jedoch folgendes Problem:
Ich hab eine fertige Gallery zusammengeschraubt mit Hilfe des Internets (bin noch ein großer Anfänger in PHP) und muss zu dieser jetzt Kategorien hinzufügen. Das heißt, wenn jemand über ein Select-Feld zB Kategorie A auswählt, dann sollen automatisch unter dem Select Feld die Bilder der Kategorie A angezeigt werden.
In der Datenbank sieht das folgendermaßen aus. Es gibt 2 Tabellen. In einer steht die ID, die Kurzbezeichnung der Kategorie, also zB "A" und die lange Bezeichnung, also zB "Kategorie A". In der 2. Tabelle steht die ID, die Kurzbezeichnung der Kategorie, also zB "A", dann der Dateinahme, also zB "image1.jpg" und dann der Text dazu, also zB "Test 1".
Hier ist der Code:
Code: |
<HTML>
<HEAD>
<TITLE>© Gerald Kiene HTML ::</TITLE>
</HEAD>
<?php
function query_into_array($query){
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;
}
?>
<BODY BGCOLOR="#FFFFFF" Text = "#oooooo">
<?php
$db=@mysql_connect("localhost","root","");
@mysql_select_db("fotogallery",$db);
// Daten in ein Array schreiben
$erg=query_into_array("select * from gallery");
// Anzahl der Bilder ermitteln
$y=count($erg);
?>
<TABLE WIDTH="760" CELLSPACING="0">
<? for ($x=0;$x<$y;$x+=5) {?>
<TR>
<TD WIDTH="20%">
<? if($erg[$x][image]) {?>
<IMG SRC="<? echo "pics/".$erg[$x][image] ?>">
<? } ?>
</TD>
<TD WIDTH="20%">
<? if($erg[$x+1][image]) {?>
<IMG SRC="<? echo "pics/".$erg[$x+1][image] ?>">
<? } ?>
</TD>
<TD WIDTH="20%">
<? if($erg[$x+2][image]) {?>
<IMG SRC="<? echo "pics/".$erg[$x+2][image] ?>">
<? } ?>
</TD>
<TD WIDTH="20%">
<? if($erg[$x+3][image]) {?>
<IMG SRC="<? echo "pics/".$erg[$x+3][image] ?>">
<? } ?>
</TD>
<TD WIDTH="20%">
<? if($erg[$x+4][image]) {?>
<IMG SRC="<? echo "pics/".$erg[$x+4][image] ?>">
<? } ?>
</td>
</TR>
<TR>
<TD WIDTH="20%"><center><? echo $erg[$x][text] ?></center></TD>
<TD WIDTH="20%"><center><? echo $erg[$x+1][text] ?></center></TD>
<TD WIDTH="20%"><center><? echo $erg[$x+2][text] ?></center></TD>
<TD WIDTH="20%"><center><? echo $erg[$x+3][text] ?></center></TD>
<TD WIDTH="20%"><center><? echo $erg[$x+4][text] ?></center></TD>
</TR>
<? } ?>
</TABLE>
</BODY>
</HTML> |
In diesen soll das wie oben formuliert eingebaut werden. Kann mir wer weiterhelfen, wie ich das am besten mache?
[edit]
Bitte [code]-Tags verwenden.
Zuletzt bearbeitet von Nimroy am Fr 20.10.2006 12:24, insgesamt 1-mal bearbeitet
|
|
|
|
|
Imion
Dabei seit: 04.07.2003
Ort: Krefeld
Alter: 41
Geschlecht:
|
Verfasst Fr 20.10.2006 12:55
Titel
|
|
|
So in etwa, damit sparst Du dir dann auch das array.
Code: |
<?php
$sql = "SELECT * FROM gallery WHERE kurzbeschreibung='".$varSelect."'";
$result= mysql_query($sql) or die(mysql_error());
$i=0;
while($zeile=mysql_fetch_array($result,MYSQL_ASSOC))
{
if($i==0)
{
echo'<tr>';
}
echo'<TD WIDTH="20%"><img alt="" src="'.$zeile["bildpfad"].'" border="0"></a></td>';
$i++;
if($i==3)
{
echo'</tr>';
$i=0;
}
}
?>
|
|
|
|
|
|
Anzeige
|
|
|
gkiene
Threadersteller
Dabei seit: 18.10.2006
Ort: Bruck
Alter: -
Geschlecht:
|
Verfasst Di 24.10.2006 07:54
Titel
|
|
|
OK, danke!
Mal sehn ob ich's zum laufen bekomm
|
|
|
|
|
Imion
Dabei seit: 04.07.2003
Ort: Krefeld
Alter: 41
Geschlecht:
|
Verfasst Di 24.10.2006 12:11
Titel
|
|
|
falls du probleme hast meld dich
|
|
|
|
|
gkiene
Threadersteller
Dabei seit: 18.10.2006
Ort: Bruck
Alter: -
Geschlecht:
|
Verfasst Mi 25.10.2006 12:01
Titel
|
|
|
So, es funktioniert jetzt perfekt, habs jetzt folgendermaßen gelöst
Code: | <BODY BGCOLOR="#FFFFFF" Text = "#oooooo">
<?php
$db=mysql_connect("localhost","root","");
mysql_select_db("fotogallery");?>
<form name = auswaehlen method=post>
<?php
$sel = "SELECT typ_gbez, bezeichnung FROM gbezeichnung";
$res = mysql_query($sel) or die(mysql_error());
$k=0;
while($row=mysql_fetch_array($res))
{
if($k==0)
{
echo'<Select name=select>';
}
if ($_POST['select']==$row['typ_gbez'])
{
$location = " selected ";
} else {
$location = "";
}
echo"<option value='".$row['typ_gbez']."'".$location.">".$row['bezeichnung']."</option>";
$k++;
}
?>
</select>
<input type = submit name = submit value = ok>
</form>
<table>
<?php
$sql = "SELECT id, image, text FROM gallery WHERE typ='".$_POST['select']."'";
$result= mysql_query($sql) or die(mysql_error());
$i=0;
while($zeile=mysql_fetch_array($result))
{
if($i==0)
{
echo'<tr>';
}
echo"<TD WIDTH='20%' align='center'><a href='gallery_popup.php?picid=".$zeile['id']."&gal=".$_POST['select']."'><img src='pics/".$zeile['image']."' border='0'></a><div align='center'>".$zeile['text']."</div></td>";
$i++;
if($i==4)
{
echo"</tr><tr><td colspan='4'> </td></tr>";
$i=0;
}
}
?>
</table>
</BODY> |
und mit einer Popup Seite
Code: | <form name='submit' method='post' action='gallery4.php'>
<?php
echo ("<input type='hidden' name='select' value='".$_GET['gal']."'>");
$db=mysql_connect("localhost","root","");
mysql_select_db("fotogallery");
$sql = "SELECT id, image, text FROM gallery WHERE id='".$_GET['picid']."'";
$result= mysql_query($sql) or die(mysql_error());
$array=mysql_fetch_array($result);
echo ("<img src='pics/".$array['image']."' border=0><br>".$array['text']);
echo ("<p><input type='submit' value='back to gallery'></p>");
?>
</form> |
Es funktioniert alles einwandfrei, nur ich steh jetzt vor dem nächsten Problem. Nun soll dies so funktionieren, dass man in einem Upload-Formular die Bilder raufladen soll. Hierbei soll der Benutzer neue Galleries erstellen können, und danach auswählen können, in welche Gallery das Foto reingeladen werden soll. Dies soll alles über die Datenbank erfolgen, dH dass beim Erstellen der nächsten Gallery ein neuer Eintrag in die Tabelle kommt und dass beim Upload des Fotos das Foto auch automatisch in die Tabelle mit der richtigen Zuordnung eingetragen wird.
Also das Upload-Script ist kein Problem, jedoch das ganze in die Datenbank schreiben, da weiß ich leider nicht weiter.
|
|
|
|
|
schachbrett
Dabei seit: 11.10.2006
Ort: Köln
Alter: -
Geschlecht:
|
Verfasst Mi 25.10.2006 12:50
Titel
|
|
|
Neue Gallerie anlegen:
Code: | INSERT INTO gbezeichnung VALUES( $typ, $bezeichnung );
|
Bildinfo in Datenbank:
Code: | INSERT INTO gallery VALUES( $id, $filename, $text ); |
http://dev.mysql.com/doc/refman/4.0/de/handler.html
Gruss
|
|
|
|
|
Account gelöscht
Ort: -
Alter: -
|
Verfasst Mi 25.10.2006 12:52
Titel
|
|
|
Imion hat geschrieben: | So in etwa, damit sparst Du dir dann auch das array.
Code: |
<?php
$sql = "SELECT * FROM gallery WHERE kurzbeschreibung='".$varSelect."'";
$result= mysql_query($sql) or die(mysql_error());
$i=0;
while($zeile=mysql_fetch_array($result,MYSQL_ASSOC))
{
if($i==0)
{
echo'<tr>';
}
echo'<TD WIDTH="20%"><img alt="" src="'.$zeile["bildpfad"].'" border="0"></a></td>';
$i++;
if($i==3)
{
echo'</tr>';
$i=0;
}
}
?>
|
|
Nur mal angemerkt: Völliger Quatsch ist es, hier zu "sparen", verfolgt doch wenigstens das Originalscript im Ansatz das Ziel, Code & Layout voneinander zu trennen. Dein Beispiel führt zu noch mieserem Spaghetticode, was im weiteren Verlauf des Threads auch bewiesen wird.
Zum Lesen: http://www.phpguru.org/static/templating.html
|
|
|
|
|
schachbrett
Dabei seit: 11.10.2006
Ort: Köln
Alter: -
Geschlecht:
|
Verfasst Mi 25.10.2006 13:16
Titel
|
|
|
PHP ist gelebter Spaghetticode
Zuletzt bearbeitet von schachbrett am Mi 25.10.2006 13:16, insgesamt 1-mal bearbeitet
|
|
|
|
|
|
|
|
Ähnliche Themen |
Wordpress | Navigation und Kategorien
Kategorien anzeigen in Entourage!?
SQL Abfrage vereinfachen (Kategorien)
Wordpress Kategorien Übersicht
newssystem in mehrer kategorien unterteilen
[Wordpress] Mitarbeiter nur in bestimmten Kategorien ?
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|