Personal Message System | ZUORDNUNG

visionsign

Mitglied
Hallo Community,

ich sitze grad an einem Personal Message System! Die Zuordnung der Mails funktioniert bereits einwandfrei. Allerdings nur wenn ich die Message direkt in die DB eintrage! Jetzt wollte ich das Eingabeformular machen und stosse an ein kleines Problem.

Zuerst zum Aufbau der DB, also

ich habe einen Table 'benutzerdaten' und einen Table 'mailbox'. In 'benutzerdate' ist jedem Benutzer eine ID zugeordnet, diese nutze ich, um die mails in 'mailbox' richtig zu verteilen. Die ID der 'benutzerdaten' habe ich in einer SESSION gespeichert ($_SESSION[user_id]).
Soweit dazu, jetzt habe ich im Formular ein <select> Feld, wo man via Dropdown den Emfänger wählen kann. Hier hole ich jeweils den Nickname aus 'benutzerdaten'!
Jetzt kommen wir auch schon zum Problem.

Das einfügen in die 'mailbox' Tabelle.
Mein erster schnibbbbbbsel sieht so aus:
PHP:
   // Message Senden
   	if ($_POST[senden] == "on") 
   	    {
 mysql_query("INSERT INTO mailbox (ID_VON, ID_AN, BETREFF, MESSAGE, DATE) VALUES ('$_SESSION[user_id]', '$OutputAn[Nickname]', '$_POST[betreff]', '$_POST[message]')");
   	      echo 'Die Message wurde erfolgreich versendet';
   	    }.....
funktionieren kanns noch nicht. ($OutputAn[Nickname]) ist hier aus der Query von 'benutzerdaten'! Allerdings darf ja hier nicht der Nickname stehen, sondern die ID des ausgewählten Nicknamens aus der <select> Box. Desweiteren muss in ID_VON die ID aus der SESSION. Das ganze muss mit $_POST geschehen.

Kann mir jemand bei dem mysql INSERT helfen, ich habe irgendwie grad eine denk lücke! Vielen Dank schonmal!
 
Gründsätzlich gehören Strings auch als solche deklariert, sonst kommst du in Konflikt mit Konstanten:
Also statt
PHP:
$OutputAn[Nickname]
bitte
PHP:
$OutputAn['Nickname']

Dann musst du dir vor dem INSERT die ID des Empfaengers holen.
PHP:
$sql = 'SELECT user_id FROM mitglieder_tabelle WHERE username="'.$OutputAn['Nickname'].'";
 
Erstmal Vielen Dank für deine schnelle Hilfe, ich habe es mal versucht einzubauen, komme allerdings nicht so recht weiter.

Am besten poste ich mal schnell das ganze Script zum einfügen in dei DB inkl. Formular etc.

Vielleicht kannst du nochmal rüberschauen was ich falsch gemacht habe!
Code:
  	  <?php
  	// Message Senden
  	if ($_POST[senden] == "on") 
  		{
 			$IDholen = mysql_query("SELECT Id FROM benutzerdaten WHERE Nickname=$OutputAn[Nickname]");
 		 mysql_query("INSERT INTO mailbox (ID_VON, ID_AN, BETREFF, MESSAGE, DATE) VALUES ('$_SESSION[user_vorname]', '$_POST[Id]', '$_POST[betreff]', '$_POST[message]')");
  		  echo 'Die Message wurde erfolgreich versendet';
  		}
  		 
  ?>
  	
  <!-- Tabelle zum Zentrieren der Haupt-Tabelle -->
  <table width="100%" cellspacing="0" cellpadding="0" border="0" summary="Tablle zum Zentrieren">
  	<tr>
  		<td align="center" valign="top">
 			<?php include("login_nav.inc.php"); ?> <br />
  			Personal Message System
 			<form action="<?php $_SERVER[PHP_SELF]; ?>" method="post">
  			<input type="hidden" name="senden" value="on">
 			<table width="500" border="0" cellspacing="1" cellpadding="1" class="table" summary="Tabelle um neue Message zu erstellen">
  				
  				<tr>
 					<td align="left">
 					Message senden an: 
 					</td>
 					<td>
 		 		<select class="input" name="an">
 					<?php
 		 		// Query für die Auswahl des Emfängers
  					
 		 		$QueryAn = mysql_query ("SELECT Nickname, Id FROM benutzerdaten"); 
 		 		while ($OutputAn = mysql_fetch_array ($QueryAn, MYSQL_ASSOC))
  					{
  					?>
 		 		 <option><?php print($OutputAn[Nickname]); ?></option>
 					<?php
  					}
  					?>
 					</select>
 					</td>
  				</tr>
  				<tr>
 					<td>Betreff: </td>
 		 		<td valign="top"><input type="text" name="betreff" class="input" /></td>
  				</tr>
  				<tr>
 		 		<td valign="top">Message: </td>
 		 		<td valign="top"><textarea name="message" class="input" rows="5" cols="40"></textarea></td>
  				</tr>
  				<tr>
 		 		<td><input type="submit" class="input" name="senden"/></td>
 		 		<td><input type="reset" class="input" /></td>
  				</tr>
  			</table>
  			</form>
  		</td>
  	</tr>
  <!-- ENDE Tabelle zum Zentrieren der Haupt-Tabelle -->
  </table>
 
Deine Strings kannst du selber überarbeiten, dafür bin ich nicht da! :p
Was mir spontan auffällt ist der <form>-Tag.
Der sollte wohl so lauten:
PHP:
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post">

Ausserdem benutz bitte anstatt [ CODE ][ /CODE ] dies: [ PHP ][ /PHP ]
 
Zurück