Select Multiple ...

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
hotkey
Mitglied
Beiträge: 89
Registriert: 19.11.2002 13:49
Wohnort: Stralsund
Kontaktdaten:

Select Multiple ...

Beitrag 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&auml;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? :(
Benutzeravatar
Mister_X
Ehemaliges Teammitglied
Beiträge: 7102
Registriert: 24.05.2001 02:00
Wohnort: Augsburg

Beitrag von Mister_X »

Wie sieht denn das ganze Skript aus? Werden denn wirklich Infos übertragen? (Du kannst ja mal die method auf GET umstellen.)
hotkey
Mitglied
Beiträge: 89
Registriert: 19.11.2002 13:49
Wohnort: Stralsund
Kontaktdaten:

Beitrag 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">&nbsp;</td>
  </tr>
  <tr>
    <td width="5%" align="left" valign="top">&nbsp;</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&auml;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">&nbsp;</td>
  </tr>
  <tr>
    <td width="30%" align="left" valign="top">&nbsp;</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">&nbsp;</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] = "&middot; Es wurde kein Username eingegeben.<br>\n";
  }
  if ($_POST['project_email'] == "") {
  	$project_error[1] = "&middot; Es wurde keine eMail Adresse eingegeben.<br>\n";
  }
  if ($_POST['project_deadline'] == "") {
  	$project_error[2] = "&middot; Es wurde kein Datum eingegeben.<br>\n";  
  } elseif (!ereg("^([0-9]{2}).([0-9\-]{2}).([0-9\-]{4})$", $_POST['project_deadline'])) {
  	$project_error[2] = "&middot; Das Datum wurde im falschen Format eingegeben.<br>\n";  	
  }
  if ($_POST['project_topic'] == "") {
  	$project_error[3] = "&middot; Es wurde kein Thema eingegeben.<br>\n";
  }
  if ($_POST['project_text'] == "") {
  	$project_error[4] = "&middot; Es wurde kein Text eingegeben.<br>\n";
  }
  if ($_POST['project_member'] == "-") {
  	$project_error[5] = "&middot; Es wurde kein Teilnehmer gew&auml;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&uuml;ck zum Hauptmen&uuml;</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 "        &nbsp;\n"; 
}  	
?>    
    </td>
  </tr>
</table>    
    
      </fieldset>              
    </td> 
    <td width="5%" align="left" valign="top">&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</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. :(
Benutzeravatar
Mister_X
Ehemaliges Teammitglied
Beiträge: 7102
Registriert: 24.05.2001 02:00
Wohnort: Augsburg

Beitrag 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&auml;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']);
?>
?
hotkey
Mitglied
Beiträge: 89
Registriert: 19.11.2002 13:49
Wohnort: Stralsund
Kontaktdaten:

Beitrag 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]"." | ";
}
Antworten

Zurück zu „Coding & Technik“