4x bewertet

Kategorie Angabe mithilfe von Select

von Fr34k  |  01.12.2009 um 14:26 h
PHP Grundlagen
Typ: PHP Grundlagen
Stufe:Einfach Mittelmäßig
Hallo, ich möchte einen Wunsch aus der Wishlist erfüllen. Murderprincess hatte gefragt, wie man z.B. bei Avataren eine Kategorie hinzufügen kann und diese per Select Formularfeld an die Datenbank übergeben kann. Ich habe dies aus dem LayoutUpload Tutorial von AliceGrafixx entnommen und so funktioniert das ganze:



<form action="" method="post" enctype="multipart/form-data">
<table width="100%" border="0" cellpadding="2" cellspacing="2">
<tr>
<td width="50%"><label for="typ"><b>Kategorie:</b></label></td>
<td width="50%"><select class="input" name="cat" size="1">
<?php 
if(exist("TABELLENNAME WHERE id = '".zahl($_REQUEST["id"])."'")) {
?>
<option selected="selected" value="<?= $row->cat?>"><?= $row->cat;
?></option>
<?php } else { ?>
<option>Bitte Kategorie auswählen</option>
<?php ?>
<option>----------------------------------------</option>
<option value="Divider">Divider</option>
<option value="Iframe">iFrame</option>
<option value="Table">Table</option>
<option value="Special">Sonstiges</option>
</select>
</td>
</tr>
</table>
</form>



So, das kann man halt bei Avas, Layouts, Wallpaper etc. mit ranhängen. Ich hab jetzt mal Werte für Layouts genommen (statt Divider könnte auch Model, Harry Potter oder sonst was stehen!)

Kommen wir zur Erklärung:
<select class="input" name="cat" size="1">
Hier wird ganz normal ein Select Feld generiert, der Name steht für die Tabellenspalte in denen die Werte eingetragen werden sollen, in dem Fall "cat" für "Kategorie"



<?php 
if(exist("TABELLENNAME WHERE id = '".zahl($_REQUEST["id"])."'")) {
?>
<option selected="selected" value="<?= $row->cat?>"><?= $row->cat;
?></option>
<?php } else { ?>
<option>Bitte Kategorie auswählen</option>
<?php ?>



Hier geht es los, als erstes wird überprüft ob die Tabelle "TABELLENNAME" mit der geforderten ID existiert. Das wird gemacht, wenn ihr z.B. euren Eintrag nochmals editieren wollt über

<a href="DATEINAME.php?action=edit&id=<?= $row->id ?>">Edit</a>



So, existiert diese ID in der Tabelle wird der in der DB gespeicherte Wert als "selected" angezeigt. Der Wert wird über die Variable übergeben und auch angezeigt...

<option selected="selected" value="<?= $row->cat?>"><?= $row->cat;
?></option>



Falls die ID noch nicht existiert, also ihr ein neues Layout erstellen wollt und die ID erst dann generiert wird, wird ganz einfach "Bitte Kategorie auswählen" angezeigt.


<option value="Divider">Divider</option>
<option value="Iframe">iFrame</option>
<option value="Table">Table</option>
<option value="Special">Sonstiges</option>

Das sind ganz einfach Select Inhalte, alles, was in "Value" steht, wird in die Datenbank geschrieben.

So, ich hoffe ich konnte euch / dir helfen und es war einigermaßen anschaulich erklärt! Falls noch Fragen bestehen: meldet euch!


P.S.: Im Code wird die Funktion "zahl" benutzt, die ihr evtl. nicht habt... dieser Code kommt in eure "functions.inc.php" Datei!

function zahl($string) {
$erlaubt = array("1", "2", "3", "4", "5", "6", "7", "8", "9", "0");
for($i = 0;$i < strlen($string);$i++) {
if(in_array($string{$i}, $erlaubt)) {
$newstring .= $string{$i};
}
}
return $newstring;
}




5 Kommentare




SmaX

Gutes Tutorial! Manchmal etwas komplex Smilie aber nicht relevant. 6P
am 01.12.2009 um 17:20 Uhr


Murderprincess

Sorry, dass ich mich erst jetzt melde xD
Es hat super geklappt Smilie Vielen herzlichen Dank <3 Jetzt wird endlich angezeigt welches ausgewählt wurde *woot*

am 17.03.2010 um 12:21 Uhr


Fr34k

Yeaah Smilie
am 18.03.2010 um 12:18 Uhr


Jessy

huhu :)
funktioniert das auch für news? sprich ich nehme delites newsscript und möchte kategorien dazu haben. möglich oder nicht? ˆˆ
lg
am 11.05.2010 um 11:51 Uhr


CrazyMoFu

Aufjedenfall, MÖGLICH Smilie eig. auch nicht schwer..du machst einfach bei editnews noch so nen feld mit kategorie und in der datenbank ein feld dafür und dann einfach noch auf der index.php oder in der news.php diese auswahl select liste Smilie
am 11.05.2010 um 15:09 Uhr