Seite 1 von 1
Select Multiple ...
Verfasst: 12.03.2004 16:44
von hotkey
.. funktioniert bei mir aus irgend einem Grund nicht.
Ich programmiere gerade ein Mini Forum, wo die Zugriffs Rechte für jedes Posting unterschiedlich sind. Deshalb möchte ich über ein Select Feld mit Mehrfachauswahl die einzelnen User auswählen. Das ganze sieht dann in etwa so aus.
Code: Alles auswählen
<tr>
<td width="70%" align="left" valign="top">
<select class="content_select" name="project_member[]" size="5" multiple>
<option value="-" selected>>> Bitte auswählen ---</option>
<option value="UserID" selected>User 1</option>
<option value="UserID" selected>User 2</option>
</select>
</td>
</tr>
Jetzt habe ich mal versucht mit count() oder sizeof() die größe des Array zu ermitteln, aber jedes mal kommt 0 raus. Es werden auch keine UserIDs in der Datenbank gespeichert.
Hat jemand von euch eine Idee, warum das nicht funktioniert?

Verfasst: 13.03.2004 02:07
von Mister_X
Wie sieht denn das ganze Skript aus? Werden denn wirklich Infos übertragen? (Du kannst ja mal die method auf GET umstellen.)
Verfasst: 13.03.2004 10:45
von hotkey
Code: Alles auswählen
<?php
include ("connect.php");
// Der folgende PHP Code ersetzt die Eingaben des Users.
$_POST['project_text'] = str_replace("€", "Euro", $_POST['project_text']);
$select = mysql_query("SELECT *
FROM login
WHERE login_group != 0
AND login_group != 4
ORDER BY login_username");
?>
<!-- Start Project //-->
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<form action="<?php $PHP_SELF ?>" method="post" enctype="multipart/form-data" name="project_insert">
<tr>
<td colspan="5" align="left" valign="top"> </td>
</tr>
<tr>
<td width="5%" align="left" valign="top"> </td>
<td width="45%" align="left" valign="top">
<fieldset>
<legend>
<p class="content_topic">
Projekte:
</p>
</legend>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="30%" align="left" valign="top">
<p class="content_font">
Username:
</p>
</td>
<td width="70%" align="left" valign="top">
<input class="content_input" name="project_username" size="30" maxlength="10" readonly=true" value="<?php echo "".$_SESSION['login_username'].""?>">
</td>
</tr>
<tr>
<td width="30%" align="left" valign="top">
<p class="content_font">
eMail:
</p>
</td>
<td width="70%" align="left" valign="top">
<input class="content_input" name="project_email" size="30" maxlength="30" readonly=true" value="<?php echo "".$_SESSION['login_email'].""?>">
</td>
</tr>
<tr>
<td width="30%" align="left" valign="top">
<p class="content_font">
Stichtag:
</p>
</td>
<td width="70%" align="left" valign="top">
<input class="content_input" name="project_deadline" size="30" maxlength="30" value="<?php echo "".$_POST['project_deadline'].""?>">
</td>
</tr>
<tr>
<td width="30%" align="left" valign="top">
<p class="content_font">
Thema:
</p>
</td>
<td width="70%" align="left" valign="top">
<input class="content_input" name="project_topic" size="30" maxlength="30" value="<?php echo "".$_POST['project_topic'].""?>">
</td>
</tr>
<tr>
<td width="30%" align="left" valign="top">
<p class="content_font">
Text:
</p>
</td>
<td width="70%" align="left" valign="top">
<textarea class="content_textarea" name="project_text" cols="40" rows="5" wrap="physical"><?php echo "".stripslashes($_POST['project_text']).""?></textarea>
</td>
</tr>
<tr>
<td width="30%" align="left" valign="top">
<p class="content_font">
Teilnehmer:
</p>
</td>
<td width="70%" align="left" valign="top">
<select class="content_select" name="project_member[]" size="5" multiple>
<option value="-" selected>>> Bitte auswählen ----------------------</option>
<?php
while ($array = mysql_fetch_array($select)) {
if (isset($_POST['project_insert'])) {
if (($array['login_username']) == ($_POST['project_member'])) {
echo " <option value=\"".$array['login_username']."\" selected>".$array['login_username']."</option>\n";
} else {
echo " <option value=\"".$array['login_username']."\">".$array['login_username']."</option>\n";
}
} else {
echo " <option value=\"".$array['login_username']."\">".$array['login_username']."</option>\n";
}
}
?>
</select>
</td>
</tr>
<tr>
<td colspan="2" align="left" valign="top"> </td>
</tr>
<tr>
<td width="30%" align="left" valign="top"> </td>
<td width="70%" align="left" valign="top">
<input class="content_input" type="submit" name="project_insert" value="Thema anlegen">
</td>
</tr>
</table>
</fieldset>
</td>
<td width="5%" align="left" valign="top"> </td>
<td width="40%" align="left" valign="top">
<fieldset>
<legend>
<p class="content_topic">
Statusmeldung:
</p>
</legend>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="100%" align="left" valign="top">
<?php
// Der folgende PHP Code prüft, ob alle Felder ausgefüllt wurden.
if (isset($_POST['project_insert'])) {
if ($_POST['project_username'] == "") {
$project_error[0] = "· Es wurde kein Username eingegeben.<br>\n";
}
if ($_POST['project_email'] == "") {
$project_error[1] = "· Es wurde keine eMail Adresse eingegeben.<br>\n";
}
if ($_POST['project_deadline'] == "") {
$project_error[2] = "· Es wurde kein Datum eingegeben.<br>\n";
} elseif (!ereg("^([0-9]{2}).([0-9\-]{2}).([0-9\-]{4})$", $_POST['project_deadline'])) {
$project_error[2] = "· Das Datum wurde im falschen Format eingegeben.<br>\n";
}
if ($_POST['project_topic'] == "") {
$project_error[3] = "· Es wurde kein Thema eingegeben.<br>\n";
}
if ($_POST['project_text'] == "") {
$project_error[4] = "· Es wurde kein Text eingegeben.<br>\n";
}
if ($_POST['project_member'] == "-") {
$project_error[5] = "· Es wurde kein Teilnehmer gewählt.<br>\n";
}
if (isset($project_error)) {
echo " <p class=\"content_font\">\n";
echo " Der Datensatz konnte nicht angelegt werden.<br> Es traten folgende Fehler auf:\n";
echo " </p>\n";
echo " <p class=\"content_warn\">\n";
for ($i = 0; $i <= 5; $i++) {
echo " ".$project_error[$i]."\n";
}
echo " </p>\n";
} else {
echo " <p class=\"content_font\">\n";
echo " Der Datensatz wurde erfolgreich angelegt.<br><br>\n";
echo " <a class=\"content_font2\" href=\"?goto=blackboard&action=project\">Zurück zum Hauptmenü</a>\n";
echo " </p>\n";
$project_username = trim($_POST['project_username']);
$project_email = trim($_POST['project_email']);
$project_deadline = trim($_POST['project_deadline']);
// Der folgende PHP Code konvertiert das Datum in einen Timestamp
$date_split = split("[.]", $project_deadline);
$date_day = $date_split[0];
$date_month = $date_split[1];
$date_year = $date_split[2];
$project_deadline = mktime(0, 0, 0, $date_month, $date_day, $date_year);
$project_text = trim($_POST['project_text']);
$project_time = time();
$project_time2 = "";
// Der folgende MySQL Code ermittelt die letze Topic ID.
// Schlechtge Variante, um die höchste ID zu ermitteln :(
$select = mysql_query("SELECT *
FROM project
ORDER BY topic_id DESC");
$array = mysql_fetch_array($select);
$topic_id = $array['topic_id'] + 1;
$topic_text = trim($_POST['project_topic']);
// Der folgende MySQL Code speichert die News in der newsnbank.
if ($insert = mysql_query("INSERT INTO project
SET project_username = '$project_username',
project_email = '$project_email',
project_deadline = '$project_deadline',
project_text = '$project_text',
project_member = '$project_member',
project_time = '$project_time',
project_time2 = '$project_time2',
topic_id = '$topic_id',
topic_text = '$topic_text'")) {
// Der folgende PHP Code verschickt eine eMail.
}
}
} else {
echo " \n";
}
?>
</td>
</tr>
</table>
</fieldset>
</td>
<td width="5%" align="left" valign="top"> </td>
</tr>
<tr>
<td> </td>
</tr>
</table>
<!-- End Project //-->
An der Stelle, wo die Lücke ist sollte eigentlich über eine For-Schleife der Wert des Arrays an einen String übergeben werden. So das später alle Usernamen in einem Datenbankfeld stehen. Nur wird ja erst gar nichts an das Array übergeben. Deshalb bin ich schon am überlegen ob es an der Server Config liegt.

Verfasst: 14.03.2004 01:07
von Mister_X
a) würde ich die method von POST mal auf GET umstellen und kontrollieren ob überhaupt Daten übergeben werden (wobei der Code richtig aussieht)
b) Funktioniert dieser Codeschnipsel bei dir:
Code: Alles auswählen
<form action="<?php $PHP_SELF ?>" method="POST" enctype="multipart/form-data" name="project_insert">
<select class="content_select" name="project_member[]" size="5" multiple>
<option value="-" selected>>> Bitte auswählen ----------------------</option>
<option value="hotkey">hotkey</option>
<option value="Mister_X">Mister_X</option>
</select>
<input class="content_input" type="submit" name="project_insert" value="Thema anlegen">
</form>
<?php
print_r ($_POST['project_member']);
?>
?
Verfasst: 14.03.2004 10:06
von hotkey
Vielen Dank. Es hat wirklich nur daran gelegen das ich die Post Variable nicht übergeben habe. Folgender Code schafft abhilfe
Code: Alles auswählen
$project_temp = $_POST['project_member'];
$j = sizeof($project_temp);
for ($i = 0; $i < $j; $i++) {
$project_member .= "$project_temp[$i]"." | ";
}