Bilderupload und -verwaltung

Bubumann

Mitglied
Hallo liebe PHP/MySQL-Profis,

ich habe folgendes Problem.
Ich habe ein CMS geschrieben in dem es möglich ist über einen Bilderadmin Bilder hochzuladen. Die Verweise zu den Bildern werden in der CMS-DB gespeichert. Ist das Bild hochgeladen, bekomme ich sofort eine automatische Anzeige sämtlicher Bilder. Sämtliche Bilder werden untereinander angezeigt.
Um das Ganze übersichtlicher gestalten zu können, möchte ich jetzt die Bilder speziellen Kategorien zuweisen. Ich habe dazu eigene Kategorietabellen in der DB angelegt. Der Upload in eine bestimmte Kategorietabelle ist auch kein Problem nur wie bewerkstellige ich es, daß mir automatisch nur die Bilder aus der Kategorietabelle angezeigt werden, in die ich zuvor mein Bild geladen habe?

Danke für Eure Hilfe
 
PHP:
$qry = "select * from `kategorietabelle` where `kategorie` = ".$_POST['kategorie'];

... oder versteh ich dein Problem falsch?
 
Vielleicht habe ich einen Denkfehler, aber bei Deinem Lösungsvorschlag habe ich doch nur eine Kategorietabelle. Ich habe aber 7 verschiedene Tabellen (Musik-Band, Artisten, etc...) Wie mache ich es da?
 
PHP:
$qry = "select * from `".$_POST['kategorie']."`";

Wobei "Kategorie" natürlich dem Namen der Tabelle entsprechen sollte.
 
Ich bitte um Nachsicht, aber die Hitze lähmt meinen Kopf.
Ich will jetzt zur Sicherheit nachfragen.

Meine Tabellen für die einzelnen Kategorien lauten u.a.
Aerobic, Artistik, Bauchredner, Comedy, Country&Folk, Fire-Acts (es sind noch einige mehr)

Beim Bilderupload suche ich das Bild und wähle über ein DropDown-Menü die passende Kategorie. Wenn ich das jetzt richtig verstehe, muß ich aber in Deinem Code $qry = "select * from `".$_POST['kategorie']."`"; die Kategorie vorbestimmen. Wie geschieht das aber, wenn ich beim Bilderupload über ein DropDown-Menü die Kategorie bestimme. Wie übergebe ich das dann weiter um die richtige Ausgabe zu erhalten?
 
Dann ersetz Kategorie durch den Namen des DropDown Menü's, dann sollte es funktionieren.
Oder erstelle eine Tabelle, wo du alle Kategorien mit einer ID anlegst, und hole dir darüber die Daten aus der DB.


MfG Radhad
 
Du hast dein DropDown mit den Kategorien - also den Namen
der Tabellen.
Wenn du nun auf den POST-Wert dieses DropDown's zugreifst
hast du doch automatisch den Namen der Tabelle.
 
Ich finde Dein Datenbankdesign unpassend. Es ist weitaus eleganter und auch wartbarer, wenn Du alle Dateien in einer Tabelle ablegst und dazu den entsprechenden Fremdschlüssel der Kategorie speicherst. Somit kannst Du auch im Nachhinein einfach neue Kategorien durch Hinzufügen eines neuen Datensatzes erreichen, anstatt für jede Kategorie eine neue Tabelle anlegen zu müssen. Dann kannst Du auch die SQL-Anweisung von _voodoo verwenden, die er zuerst gepostet hat.

snuu
 
Ich habe jetzt das mal ausprobiert aber irgendwie klappt das nicht.

Ich habe eine Tabelle ttsb_pics sowie eine Tabelle ttsb_cats angelegt.
In der Tabelle ttsb_cats sind meine ganzen Kategorien gespeichert, in der Tabelle ttsb_pics werden die Bilder gespeichert. Zusätzlich habe ich hier auch noch das Tabellenfeld cat_id eingefügt.
Wenn ich das Bild hochlade, dann wird es in der Tabelle ttsb_pic mit der richtigen Categorie angelegt, nur werden mir trotzdem wieder alle Bilder ausgegeben.
Zum besseren Verständnis habe ich mal die betreffenden Codezeilen herauskopiert.

Bilderupload:
Code:
<table border="0">
<form action="<?=$_SERVER?>" method="POST" enctype="multipart/form-data">
<tr><td align="center" bgcolor="#C5CEE7"><b>Bild hochladen</b></td></tr>
<tr><td bgcolor="#FFA600"><input type="file" name="pic"><br><span class="bsp">Bild ausw&auml;hlen</td></tr>
<tr><td bgcolor="#FFA600"><span class="bsp">Kategorie ausw&auml;hlen 
<br>
<select name="cat_id">
     <?
        $query_cats="SELECT id, name FROM ttsb_cats ORDER BY name ASC";
        $rawdb_cats=@mysql_query($query_cats);
        if($rawdb_cats AND @mysql_num_rows($rawdb_cats)>0){
            while($array_cats=@mysql_fetch_array($rawdb_cats)){
                echo
                '
               <option value="'.$array_cats.'">'.$array_cats.'</option>
              ';
           }
            @mysql_free_result($rawdb_cats);
         }else{
                die("Bitte geben Sie zuerst Kategorien ein!");
         }
?>
</select></td></tr>
<tr><td align="center" bgcolor="#C5CEE7"><input type="submit" value="Hinzuf&uuml;gen"></td></tr>
</form>
</table>

Anzeige der Einträge in der Datenbank:

Code:
$query="select * from ttsb_pics`".$_POST."`"; 
        $rawdb=@mysql_query($query);
        if($rawdb AND @mysql_num_rows($rawdb)>0){
	echo
	'
	<table border="0" width="100%">
	<tr><td align="center" bgcolor="#C5CEE7" 
                     colspan="3"><b>Eintr&auml;ge in der Bilderdatenbank</b></td></tr>
	';
	while($array=@mysql_fetch_array($rawdb)){
	      extract($array);
	      $bgcolor=($bgcolor=="#FFA600")?"#CCCCCC":"#FFA600");
                               $pic_info=getimagesize(dirname(__FILE__)."/picdb/".$pic_file);
                	          if($pic_info>600){
	                       $width=600;
	         $preview=TRUE;
                	                }else{
	                        $width=$pic_info;        		      	        $preview=FALSE;
                		}
	                        $height=$width*$pic_info/$pic_info;
                          echo
	    '
	   <tr bgcolor="'.$bgcolor.'">
	     <td colspan="3">
	    '.(($preview)?'<a href="javascript:preview_pic('."'$pic_file', '$pic_info', '$pic_info')".'">':'').'
	    <img height="'.$height.'" src="picdb/'.$pic_file.'" width="'.$width.'" border="1">
	'.(($preview)?'</a>':'').'
	</td>
	</tr>
	<tr bgcolor="'.$bgcolor.'">
	<td>Hinzugef&uuml;gt am: '.$pic_date.'</td>
	<td>Dateiname: '.$pic_file.' ('.round(filesize(dirname(__FILE__)."/picdb/".$pic_file)/1024, 2).' KB)</td>
	<td><a href="'.$_SERVER.'?mode=delete&id='.$pic_id.'">L&ouml;schen</a></td>
	</tr>
	';
	}
	echo
	'
	<tr><td colspan="3" bgcolor="#C5CEE7">'.mysql_num_rows($rawdb).' Eintr&auml;ge</td></tr>
	</table>
	';

Wie bekomme ich es nun hin, daß er mir nur die Einträge mir der letzten cat_id anzeigt. Die gesamte Adminoberfläche findet Ihr unter http://www.toptenshowbox.de/__ttsb/__admin/index.html.
Es wäre toll, wenn Ihr mir helfen könntet und mir eine Lösung für das Problem nennen könntet.

Besten Dank
 
Tolle Farbe.

Du musst natürlich noch Deine vorhandene Abfrage nach der aktuellen ID der Kategorie einschränken:
PHP:
($query="select * from ttsb_pics` where cat_id = ".$VariableDieKatIdEnthält.""; )

snuu
 
Zuletzt bearbeitet:
Zurück