#AHBL
Erstmal wünsche ich allen ein schönes neues Jahr
Problembeschreibung:
So zu meinem kleinen Problem wo ich mich wohl die ganze Zeit auf dem Holzweg befinde. Wenn ich in einem Thread auf den PN Button von einem User gehe dann wird der Username ja schon oben bei Empfänger eingetragen damit man nur noch die Nachricht tippen muss. So nun wollte ich mir diese Funktion kopieren. Gesagt werden muss noch, dass ich im Profile einen Link habe zu einem PopUP was sich öffnen wenn man es anklickt und man dem User eine ANfrage schicken kann. Deswegen möchte ich sehr gerne, dass in dem Feld Empfänger, der Username des Accounts steht in derem Profil ich bin damit ich ihn nicht mehr per Hand eintippen muss doch verlaufen meine Versuche bis jetzt, immer in den Sand.
Das wäre mein Feld in der PHP Datei
code: |
1:
|
<input type="text" class="input" name="recipient" value="$username"> |
|
Und das der Teil der PHP Datei (ist eine externe)
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
|
if(isset($_POST['send'])) {
$db->query("INSERT INTO bb".$n."_relations_suggestions (id,sender,recipient,status,senderid,text,reagiert) VALUES (NULL,'$wbbuserdata[username]','".addslashes($_POST['recipient'])."','".addslashes($_POST['status'])."','$wbbuserdata[userid]','".addslashes($_POST['text'])."','0')");
header("Location: relationcp.php?action=view&sid=$session[hash]");
exit();
}
if($wbbuserdata['canusepms']==1) {
$find_username = mysql_query("SELECT username, userid FROM bb".$n."_users WHERE userid='".$id."'");
$username = $find_username['username'];
eval("\$anfrage .= \"".$tpl->get("relationcp_suggestion_post")."\";");
} |
|
Weil absenden tut er das ganze nur wird kein Empfänger eingetragen und so kommt diese Anfrage bei keinem an. Aber das Feld in meinem Template bleibt leer.
Liebe Grüße
Fehlermeldung:
Link zum Forum und Screenshot (KEINE Bilderhoster, per Dateianhang):
Was wurde zuletzt geändert oder eingebaut?
Steinadler
Wenn Dein Value: $username ist, sollte der Name auch: username sein.
also so:
php: |
1:
|
<input type="text" class="input" name="username" value="$username"> |
|
Das da:
php: |
1:
|
if (isset($_POST['username'])) $username = trim($_POST['username']); |
|
sollte auch in Deiner php Datei stehen, und zwar unterhalb von:
php: |
1:
|
if (isset($_POST['send'])) { |
|
Aber da müsste man Deine eigene php Datei als Ganzes sehen.
Miss Mindless
Ich programmiere das mit ihr zusammen und habe deinen Vorschlag gerade einmal eingebaut, funktioniert aber leider nicht :-/
Ich kopier hier gleich mal einen größeren Teil des Codes rein und geb euch eine kleine Erklärung, was der überhaupt macht, vllt hilft das ja
Der Sinn und Zweck der Sache ist, dass wir automatische Relas für RPG-Foren schreiben wollen. Der Teil der Relas, um denen es dabei geht, ist die Ansicht - also wenn man also UserA eingeloggt ist und im Thread oder Profil von UserB auf die Relas klickt, kommt dort ein PopUp-Fenster und Zeigt die Relas von UserB an. Die PopUp-Seite ist folgendermaßen aufgebaut:
1. Infos zu UserB
2. Relas (unten im Code durch (...) ersetzt)
3. Wishlist (zB "ich wünsche mir noch eine beste Freundin")
4. Direkt Vorschläge machen
Die Funktionen 1-3 haben bisher problemlos funktioniert und tun das auch noch immer.
Bei der 4. Funktion ist dann allerdings das Problem. Unten auf dem PopUp befindet sich das, was im ersten Post angehängt wurde. Wenn UserA nun UserB eine Anfrage stellen möchte, ist es eben blöd, wenn er in das Feld Empfänger noch extra "UserB" eintippen muss. Deshalb soll dort einfach automatisch UserB stehen

Unser Gedanke war bisher: Wir haben eh schon die UserID von UserB ausgelesen, dass heißt wir müssen nur den zugehörigen Usernamen aus der bb1_users auslesen und ihn automatisch in das Feld "Empfänger" eingeben. Aber das Feld "Empfänger" bleibt leer
Das hier wäre dann der Teil der PHP, der die Ansicht betrifft
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
|
if($action == "view"){
$id = $_GET['id'];
$infos = $db->query_first("SELECT * FROM bb".$n."_relations_infos WHERE userid = '$id'");
$banner = "<img src=".$infos[banner].">";
$titel = $infos[titel];
$untertitel = $infos[untertitel];
$descr = $infos[descr];
$lyrics = $infos[lyrics];
(...)
$wishbit="";
$result_wunsch = $db->query("SELECT * FROM bb".$n."_relations_wunsch WHERE userid='".$id."' ORDER BY wishname ASC");
while ($viewww=$db->fetch_array($result_wunsch)) {
$name = "$viewww[wishname]";
$description = "$viewww[wishdescription]";
if($viewww[wishimage]==''){
eval("\$wishimg = \"".$tpl->get("relationcp_wishlist_noimage")."\";");
} else {
eval("\$wishimg = \"".$tpl->get("relationcp_wishlist_image")."\";");
}
eval ("\$wishbit .= \" ".$tpl->get("relationcp_wishlist_bit")."\";");
}
if(isset($_POST['send'])) {
if (isset($_POST['username'])) $username = trim($_POST['username']);
$db->query("INSERT INTO bb".$n."_relations_suggestions (id,sender,recipient,status,senderid,text,reagiert) VALUES (NULL,'$wbbuserdata[username]','".addslashes($_POST['username'])."','".addslashes($_POST['status'])."','$wbbuserdata[userid]','".addslashes($_POST['text'])."','0')");
header("Location: relationcp.php?action=view&sid=$session[hash]");
exit();
}
if($wbbuserdata['canusepms']==1) {
$find_username = mysql_query("SELECT username, userid FROM bb".$n."_users WHERE userid='".$id."'");
$username = $find_username['username'];
eval("\$anfrage .= \"".$tpl->get("relationcp_suggestion_post")."\";");
}
eval("\$tpl->output(\"".$tpl->get("relationcp_view")."\");");
} |
|
Steinadler
Ich sehe das hier nicht in Deinem Code:
php: |
1:
|
if (isset($_POST['username'])) $username = trim($_POST['username']); |
|
Hast Du auch diese Zeile entsprechend bearbeitet?
php: |
1:
|
$db->query("INSERT INTO bb".$n."_relations_suggestions (id,sender,recipient,status,senderid,text,reagiert) VALUES (NULL,'$wbbuserdata[username]','".addslashes($_POST['recipient'])."','".addslashes($_POST['status'])."','$wbbuserdata[userid]','".addslashes($_POST['text'])."','0')"); |
|
Den ganzen 4. Abschnitt würde ich anders programmieren.
Vielleicht schaffe ich es bis Samstag Dir das mal vernünftig hin zu stricken.
Miss Mindless
Tut mir leid, hab die Version von vor der Bearbeitung gepostet :-/
Habs jetzt oben nochmal reineditiert, wie es inkl. deinem Vorschlag aussieht

Im Template haben wir auch genau das stehen, was du in deinem ersten Post geschrieben hattest
Was mich nur verwirrt ist, dass er in der Variable "$username" gar nichts zu speichern scheint. Hatte das jetzt schon öfter (also mit und ohne deiner Änderung) versucht, die Variable $username mir einfach hinter dem Empfänger, sozusagen einfach als Text ausgeben zu lassen und selbst das funktioniert schon nicht :-/
Steinadler
Da kann ja auch nichts gefunden werden, wenn man sich diese Zeile anschaut:
php: |
1:
|
$find_username = mysql_query("SELECT username, userid FROM bb".$n."_users WHERE userid='".$id."'"); |
|
Was soll $id darstellen?
Steht das so in Deiner Tabelle?
Glaube ich eher nicht.
Wenn dann eher so:
php: |
1:
|
$find_username = mysql_query("SELECT username, userid FROM bb".$n."_users WHERE userid='".$userid."'"); |
|
oder so:
php: |
1:
|
$find_username = mysql_query("SELECT username, userid FROM bb".$n."_users WHERE userid='".$wbbuserdata['userid']."'"); |
|
Miss Mindless
Die id wird (oben) in Zeile 2 ausgelesen:
code: |
1:
|
$id = $_GET['id']; |
|
Hab $id auch mal an beliebiger Stelle ins Template gesetzt, das gibt er mir genau die Userid aus, die ich auch haben will

Das funktioniert also wie gewollt.
(deine beiden Vorschläge habe ich natürlich trotzdem mal ausprobiert, änder sich aber nichts :-/)
Steinadler
Die Zeile:
php: |
1:
|
$id = $_GET['id']; |
|
ist absolut tödlich!
Das solltest Du unbedingt abändern in:
php: |
1:
|
if (isset($_REQUEST['id'])) $id = intval($_REQUEST['id']); |
|
Ansonsten bitte mal die kompletten Templates und die komplette php.Datei als Dateianhang beifügen.
Wie gesagt.....vielleicht schaffe ich es WE Da mal ne Lösung anzubieten.
#AHBL
So wir haben das mit dem GET sofort geändert.
Es ist sehr nett das du mal schaust
Ich hatte erst gedacht das man es so machen könnte wie mit der PN aus dem Profil senden wo man den Betreff hat und das Nachrichtenfenster
Grüße
Schrimm
Zitat: |
Original von Steinadler
Die Zeile:
php: |
1:
|
$id = $_GET['id']; |
|
ist absolut tödlich!
Das solltest Du unbedingt abändern in:
php: |
1:
|
if (isset($_REQUEST['id'])) $id = intval($_REQUEST['id']); |
|
Ansonsten bitte mal die kompletten Templates und die komplette php.Datei als Dateianhang beifügen.
Wie gesagt.....vielleicht schaffe ich es WE Da mal ne Lösung anzubieten. |
Hallo,
Falls ich das noch hinzufügen darf:
Sollte man Daten nur mit der "GET"-Methode senden dann sollte nur mittels "$_GET" eingelesen werden.
Dies gilt natürlich auch für "POST"-Methode und "$_POST".
"$_REQUEST" ist, falls möglich, zu vermeiden.
#AHBL
Hallo Schrimm, ich habe es in POST geändert in meiner Datei die bei mir auf dem Server liegt.
Also sollte ich immer mir das POST ans Herz legen anstatt das GET und REQUEST geht klar
Schrimm
Zitat: |
Original von #AHBL
Hallo Schrimm, ich habe es in POST geändert in meiner Datei die bei mir auf dem Server liegt.
Also sollte ich immer mir das POST ans Herz legen anstatt das GET und REQUEST geht klar |
Hallo,
Nein, so war das nicht gemeint.
"$_POST" ist "$_REQUEST" vorzuziehen.
"$_GET" ist "$_REQUEST" vorzuziehen.
Ergo: "$_REQUEST", wenn möglich, vermeiden!
Ob nun "$_POST" oder "$_GET" verwendet wird, hängt davon ab, was man möchte.