DB IDs per Links posten?

Joe

Erfahrenes Mitglied
Hallo Tutorials.de,

ich suche nach einer Möglichkeit IDs (while(mysql_fetch_assoc)) über POST (nicht get)
per Link-click zu senden.
Ich möchte eben auf Submit-Buttons verzichten und get find ich unsauber und veräterisch unsicher.

Dieses Stück Code klappt zwar aber es wird immer nur die letzte ID gepostet egal welcher Link geklickt wurde:
PHP:
$mypnsql = mysql_query("SELECT *
			FROM
				PN 
			WHERE 
				Empfängername = '$Username'
			ORDER BY Datum DESC ");
if (mysql_num_rows($mypnsql) != 0) {
	while ($pn = mysql_fetch_assoc($mypnsql)) {
		$ID=$pn["ID"];
		$Datum=$pn["Datum"];
		$Betreff=$pn["Betreff"];
		$Sendername=$pn["Sendername"];
		echo "<form action=\"main.php?section=pn\" id=\"frm4\" method=\"post\" style=\"display: none;\">";
		if ('Ja'==$pn["gelesen"]) {
			
			echo "<input type=\"text\" name=\"ID\" value=\"$ID\" />
			</form>
			<p>$Datum <a href=\"javascript:;\" onclick=\"javascript: document.getElementById('frm4').submit()\">$Betreff </a>Von: $Sendername</p>";
		}
		if ('Nein'==$pn["gelesen"]) {
			
			echo "<input type=\"text\" name=\"ID\" value=\"$ID\" />
			</form>
			<h2>$Datum <a href=\"javascript:;\" onclick=\"javascript: document.getElementById('frm4').submit()\">$Betreff </a>Von: $Sendername</h2>";
		}
	}
}

Ich hoffe ihr könnt mir weiterhelfen.
Gruss Joe.
 
OK habs selbst lösen können.

Und zwar habe ich in der Schleife getElementById('$frm') durchnummeriert so wird immer das passende Element angesprochen und die IDs aus der Datenbank können richtig übergeben werden.

PHP:
$mypnsql = mysql_query("SELECT *
			FROM
				PN 
			WHERE 
				Empfängername = '$Username'
			ORDER BY Datum DESC ");
if (mysql_num_rows($mypnsql) != 0) {
	$frm=0;
	while ($pn = mysql_fetch_assoc($mypnsql)) {
		$ID=$pn["ID"];
		$Datum=$pn["Datum"];
		$Betreff=$pn["Betreff"];
		$Sendername=$pn["Sendername"];
		$frm++;
		if ('Ja'==$pn["gelesen"]) {
			echo "<form action=\"main.php?section=pn\" id=\"$frm\" method=\"post\" style=\"display: none;\">";
			echo "<input type=\"text\" name=\"ID\" value=\"$ID\" />
			</form>
			<p>$Datum <a href=\"javascript:;\" onclick=\"javascript: document.getElementById('$frm').submit()\">$Betreff </a>Von: $Sendername</p>";
		}
		if ('Nein'==$pn["gelesen"]) {
			echo "<form action=\"main.php?section=pn\" id=\"$frm\" method=\"post\" style=\"display: none;\">";
			echo "<input type=\"text\" name=\"ID\" value=\"$ID\" />
			</form>
			<h2>$Datum <a href=\"javascript:;\" onclick=\"javascript: document.getElementById('$frm').submit()\">$Betreff </a>Von: $Sendername</h2>";
		}
	}
}

Auslesen auf der Zielseite:
PHP:
if ('POST' == $_SERVER['REQUEST_METHOD']) {
	if (isset($_POST['ID'])) {
		$pnid = $_POST['ID'];
		$mypnsql = mysql_query("SELECT * FROM PN WHERE ID='$pnid'");

		$mypn=mysql_fetch_object($mypnsql);
		echo '<p>';
		echo 'VON:'.$mypn->Sendername.' Betreff: '.$mypn->Betreff.'<br />';
		echo 'Nachricht:<br />';
		echo ''.$mypn->Nachricht.'';
		echo '</p>';
		//nach dem Anzeigen setzen wir noch das Feld "gelesen" auf 'j' fuer ja:
		mysql_query("UPDATE PN SET gelesen = 'Ja' WHERE ID='$pnid'");
		?>
		<p><input type=button style="font-family: Verdana; font-size: 8pt" onClick="window.location.href='main.php?section=pn'" value="OK"></p>
		<?php
		die;
	}
	if (isset($_POST['Schreiben'])) {
		?>
		<form action="main.php?section=pn" method="POST">
		<table>
		<tr>
		  <td><p>AN:</p></td>
		  <td><input type="text" name="Empfaenger"></p></td>
		</tr>
		<tr>
		  <td><p>Betreff:</p></td>
		  <td><p><input type="text" name="Betreff"></p></td>
		</tr>
		</tr>
		<tr>
		  <td><p>Nachricht:</p></td>
		  <td><p><textarea name="Nachricht"></textarea></p></td>
		</tr>
		<tr>
		  <td colspan="2"><p><input type="submit" value="PN senden !"></p></td>
		</tr>
		</table>
		</form>
		<?php
		die;
	}
	
	if (isset($_POST['Nachricht'])) {
		
		$Empfaenger = $_POST['Empfaenger'];
		$Betreff= $_POST['Betreff'];
		$Nachricht = $_POST['Nachricht'];
		$gelesen = 'Nein';
		$datum = getdate();
		$datums = "$datum[year]-$datum[mon]-$datum[mday]";

		mysql_query("INSERT INTO 
						PN
							(Sendername,Empfängername,Betreff,Nachricht,Datum,gelesen)
						VALUES
							('$Username','$Empfaenger','$Betreff','$Nachricht','$datums','$gelesen')");

		//alles reingespeichert. Fehleingaben des users lassen wir mal weg, ihr wisst ja wie man die abfängt....

	}
}

Habe es gleich komplett gepostet damit andere auch davon profitieren können. Das ganze ist ein schlichtes PN-System. Es fehlen noch ein paar Dinge und die Sicherheit müsst ihr auch noch anpassen.

Grüsse Joe.
 
Zuletzt bearbeitet:
Zurück