PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : hidden textfeld problem...


dante_fresh
04.03.2008, 19:30:32
Hallo.....

Ich bin gerade dabei einen Nachrichtendienst auf meiner Seite einzurichten...
Im Posteingang sollen alle Nachrichten angezeigt werden, die jemand bekommen hat.

Diese Informationen hole ich aus einer Datenbank und lese dies mit Hilfe von PHP aus.
Mein Problem ist (siehe unten), dass ich die "hidden" Textfelder mit $m_id bevaluen will =), damit ich später diese ID mittels $_POST auslesen kann....

Aber wenn ich die Website aufrufe und drauf klicke, dann speichert das Script nur eine ID in diese Felder... Das heißt: Das Ergebnis ist immer die selbe Nachricht, obwohl ich verschiedene anklicke...

Hier ein Auszug aus meinem Script:



<?php

$sqlmsg_in = "
SELECT m_id, absender, betreff, datum, zeit
FROM msg
WHERE m_empfaenger = '{$member_user_id}' ORDER BY datum, zeit DESC";
$usermsg_in = mysql_query($sqlmsg_in);

echo "<form name=\"form_read_msg\" method=\"post\" action=\"#\">";

while($msg_in = mysql_fetch_row($usermsg_in))
{
$m_id = trim($msg_in[0]);
$msg_von = trim($msg_in[1]);
$betreff = trim($msg_in[2]);
$datum = trim($msg_in[3]);
$zeit = trim($msg_in[4]);



echo " <tr>";
echo " <td><input type=\"checkbox\" name=\"clmsg[]\" value=\"$m_id\"></td>";
echo " <td>";
echo "<a href=\"javascript:document.form_read_msg.submit();\">$msg_von</a></td>";
echo " <td>";
echo "<a href=\"javascript:document.form_read_msg.submit();\">&nbsp;$betreff</a></td>";
echo " <td>";
echo "<a href=\"javascript:document.form_read_msg.submit();\">$datum <br> $zeit</a></td>";
echo " </tr>";


// hier sind die "hidden" Textfelder....
echo "<input type=\"hidden\" name=\"read_msg\" value=\"true\">";
echo "<input type=\"hidden\" name=\"read_msg_box\" value=\"in\">";
echo "<input type=\"hidden\" name=\"read_msg_id\" value=\"$m_id\">";


}
echo "</form>";
?>



Kann mir einer sagen, wie man dies lösen kann???
Ich danke schonmal für die Antworten...

Gruß Dante

lukgestach
04.03.2008, 22:33:30
Hast du schon mal in dem Quelltext nachgeschaut welcher Wert das hidden Feld read_msg_id hat?

dante_fresh
05.03.2008, 09:44:31
Ja es hat immer den Wert "1" .... Also die ID von der ersten Nachricht...

|Coding
05.03.2008, 14:14:42
Hi!

Wie sieht es denn aus, wenn Du hier auch Arrays für die Hidden-Fields verwendest, also:

//...

echo "<input type=\"hidden\" name=\"read_msg[]\" value=\"true\">";
echo "<input type=\"hidden\" name=\"read_msg_box[]\" value=\"in\">";
echo "<input type=\"hidden\" name=\"read_msg_id[]\" value=\"$m_id\">";

//...
So kann dann auch zu jedem Datensatz ein eigenes Hidden-Field erzeugt werden.

dante_fresh
07.03.2008, 11:05:57
ja das könnte funktionieren.... Und wie kann ich dieses Array wieder in eine Variable umwandeln??

dante_fresh
11.03.2008, 14:43:30
kann mir denn keiner helfen?? =(

|Coding
11.03.2008, 15:27:14
Hi!

Du kannst mit read_msg[0], ead_msg_box[0], read_msg_id[0] auf beispielsweise das erste Array-Element eines jeden Arrays zugreifen. Meintest Du das?

dante_fresh
11.03.2008, 15:38:26
Nee das meinte ich nicht.... In dem Array werden ja jetzt die ID´s der ausgelesenen Nachrichten hinterlegt... sprich 1,2,3,4, ...... und so weiter....

Aber wenn jetzt eine Nachricht angeklickt wurde, woher weiss ich welche Nachricht das war...?? die 1.? oder vielleicht auch die 3. oder 50. ??

das ist mein problem.... =(

|Coding
11.03.2008, 16:10:02
Hi!

Ich glaube Du verkomplizierst die ganze Sache etwas. Schau mal:

<?php
$sqlmsg_in = "
SELECT m_id, absender, betreff, datum, zeit
FROM msg
WHERE m_empfaenger = '{$member_user_id}' ORDER BY datum, zeit DESC";
$usermsg_in = mysql_query($sqlmsg_in);

echo "<form name=\"form_read_msg\" method=\"post\" action=\"#\">";

while($msg_in = mysql_fetch_row($usermsg_in))
{
$m_id = trim($msg_in[0]);
$msg_von = trim($msg_in[1]);
$betreff = trim($msg_in[2]);
$datum = trim($msg_in[3]);
$zeit = trim($msg_in[4]);

echo " <tr>";
echo " <td><input type=\"checkbox\" name=\"clmsg[]\" value=\"$m_id\"></td>";
echo " <td>";
echo "<a href=\"zeige_nachricht.php?id=$m_id\">$msg_von</a></td>";
echo " <td>";
echo "<a href=\"zeige_nachricht.php?id=$m_id\">&nbsp;$betreff</a></td>";
echo " <td>";
echo "<a href=\"zeige_nachricht.php?id=$m_id\">$datum <br> $zeit</a></td>";
echo " </tr>";
}

echo "</form>";
?>

So, wenn der User jetzt die Checkboxen verschiedener Nachrichten angeklickt hat, dann ist Dir bekannt (an Hand des Inhalts von clmsg) welche Nachrichten er löschen, kopieren oder sonst was möchte. (Dafür fehlen noch die nötigen Buttons, wenn Du diese Funktionen einbauen möchtest.)

Möchte der User jetzt eine Nachricht lesen, dann klickt er auf die Nachricht und es öffnet sich eine neue Seite (zeige_nachricht.php) der eine ID (die id der Nachricht) übergeben wird. So kannst Du auf der zeige_nachricht.php die jeweiligen Daten aus der Datenbank lesen und dem User anzeigen. Eventuell weitere Funktionen wie "als gelesen markieren", "Lesebestätigung an den Absender verschicken", ect. kannst Du dann ebenfalls an Hand der ID auf der Seite zeige_nachricht.php ausführen.

So in etwa - ganz grob angerissen - könnte das ablaufen.

dante_fresh
11.03.2008, 16:32:05
Danke für deine Antwort... Das es so geht, wusste ich, aber ich wollte eigentlich den Usern die ID´s nicht zeigen.... Sollte alles "hintenrum" geschehen... Aber wenns nicht anders geht, dann muss ich das so machen....