mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Do 25.04.2024 06:51 Benutzername: Passwort: Auto-Login

Thema: Fotogalery mit verschiedenen Kategorien in PHP vom 20.10.2006


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> Fotogalery mit verschiedenen Kategorien in PHP
Seite: 1, 2  Weiter
Autor Nachricht
gkiene
Threadersteller

Dabei seit: 18.10.2006
Ort: Bruck
Alter: -
Geschlecht: Männlich
Verfasst Fr 20.10.2006 12:18
Titel

Fotogalery mit verschiedenen Kategorien in PHP

Antworten mit Zitat Zum Seitenanfang

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>&copy; 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
  View user's profile Private Nachricht senden
Imion

Dabei seit: 04.07.2003
Ort: Krefeld
Alter: 41
Geschlecht: Männlich
Verfasst Fr 20.10.2006 12:55
Titel

Antworten mit Zitat Zum Seitenanfang

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;
        }
    }
?>
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Anzeige
Anzeige
gkiene
Threadersteller

Dabei seit: 18.10.2006
Ort: Bruck
Alter: -
Geschlecht: Männlich
Verfasst Di 24.10.2006 07:54
Titel

Antworten mit Zitat Zum Seitenanfang

OK, danke! Lächel

Mal sehn ob ich's zum laufen bekomm *zwinker*
  View user's profile Private Nachricht senden
Imion

Dabei seit: 04.07.2003
Ort: Krefeld
Alter: 41
Geschlecht: Männlich
Verfasst Di 24.10.2006 12:11
Titel

Antworten mit Zitat Zum Seitenanfang

falls du probleme hast meld dich
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
gkiene
Threadersteller

Dabei seit: 18.10.2006
Ort: Bruck
Alter: -
Geschlecht: Männlich
Verfasst Mi 25.10.2006 12:01
Titel

Antworten mit Zitat Zum Seitenanfang

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'>&nbsp;</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.
  View user's profile Private Nachricht senden
schachbrett

Dabei seit: 11.10.2006
Ort: Köln
Alter: -
Geschlecht: Männlich
Verfasst Mi 25.10.2006 12:50
Titel

Antworten mit Zitat Zum Seitenanfang

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
  View user's profile Private Nachricht senden
Account gelöscht


Ort: -
Alter: -
Verfasst Mi 25.10.2006 12:52
Titel

Antworten mit Zitat Zum Seitenanfang

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: Männlich
Verfasst Mi 25.10.2006 13:16
Titel

Antworten mit Zitat Zum Seitenanfang

PHP ist gelebter Spaghetticode *zwinker*

Zuletzt bearbeitet von schachbrett am Mi 25.10.2006 13:16, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
 
Ä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 ?
Neues Thema eröffnen   Neue Antwort erstellen Seite: 1, 2  Weiter
MGi Foren-Übersicht -> Programmierung


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.