Personal Messenger

sakanoue

Grünschnabel
Hi,

mein Problem liegt mal wieder in der foreach Schleife.
Speichere die Daten wohl nicht in ret[data] nur weiß ich nicht genau wie ich das machen soll. Hat da einer einen Rat`?

Mein Vorhaben: PM Empfänger als dropdown Feld anzeigen lassen. Also alle User der Seite ins dropdown Feld anzeigen.

Hier der Code mit:

PHP:
<?php

$ret = array();
$ret['filename'] = 'pm_new.tpl';
$ret['data'] = array();
if ('POST' == $_SERVER['REQUEST_METHOD']) {
    if (!isset($_POST['Empfaenger'], $_POST['Betreff'], $_POST['Nachricht'], $_POST['formaction'])) {
        return INVALID_FORM;
    }
    if (($Empfänger = trim($_POST['Empfaenger'])) == '' OR
            ($Betreff = trim($_POST['Betreff'])) == '' OR
            ($Nachricht = trim($_POST['Nachricht'])) == '') {
        return EMPTY_FORM;
    }
    $sql = 'SELECT
                ID,
				Vorname,
				Nachname
            FROM
                mkhw_User
            WHERE
                Username = ? AND
                ID != ?';
    if (!$stmt = $db->prepare($sql)) {
        return $db->error;
    }
    $stmt->bind_param('si', $Empfänger, $UserID);
    if (!$stmt->execute()) {
        return $stmt->error;
    }
    $stmt->bind_result($ZielID);
    if (!$stmt->fetch()) {
        return 'Es wurde kein Benutzer mit diesem Namen gefunden.';
    }
    $stmt->close();
    $sql = 'INSERT INTO
                mkhw_Nachricht(Quelle, Ziel, Datum, Betreff, Inhalt, Sichtbar)
            VALUES
                (?, ?, NOW(), ?, ?, 1)';
    if (!$stmt = $db->prepare($sql)) {
        return $db->error;
    }
    $stmt->bind_param('iiss', $UserID, $ZielID, $Betreff, $Nachricht);
    if (!$stmt->execute()) {
        return $stmt->error;
    }
    return showInfo('Die Nachricht wurde gesendet.');
}
return $ret;
?>

PHP:
<?php
/* Daten:
 *     keine
 */
?><form action="index.php?section=pm&amp;action=new" method="post">
    <fieldset>
        <legend>Neue Nachricht schreiben</legend>
        <label>Empfänger:<br  /> 			
        	<select name="UserID">
            	<option value="0">Bitte wählen</option>
			<?php foreach ($data['Empfaenger'] as $key => $value) { ?>
				<option value="<?php echo $key; ?>"><?php echo htmlspecialchars($value); ?></option>
            <?php } ?>
			</select><br  />
        <label>Betreff:<br  /> <input type="text" name="Betreff" /></label><br  />
        <label>Nachricht:<br  /> <textarea name="Nachricht" cols="40" rows="10"></textarea></label><br  />
        <input type="submit" name="formaction" value="Nachricht senden" />
    </fieldset>
</form>

$Empfänger = array();
while ($row = $result->fetch_assoc()) {
...;
}
$ret['data']['Empfänger '] = $Empfänger ;

irgendwie so oder? nur wie genau :)
 
Zuletzt bearbeitet von einem Moderator:
Hallo @sakanoue

Sehe ich nicht richtig oder wo liest du bitte die ganzen User aus der DB aus
bzw. wo ist die Schleife, die erstmal in $ret eintragen soll ?

Ich seh da nur ein Script, dass checkt ob ein User, der per Formular übergeben wurde existiert und wenn ja eine Nachricht in die DB einträgt.


Grüße Simon
 
Zurück