PHP JS Alternativen um Variable zu übergeben?

06/25/2014 21:30 Cℓoud#1
Serv! Ich bastel derzeit an einer landing page für den Game Client von League of Legends. Nun möchte ich ein Textfeld in meinen Client bauen wo die Variable des Textfelds an einen Link übergeben wird. Hab es im Firefox easy zum laufen bekommen:

[Only registered and activated users can see links. Click Here To Register...]


Code:
<?php
	error_reporting(0);
	$name = $_POST["name"];
?>
HTML Code:
<form method="post">
	<input type="text" name="name" placeholder="Beschwörer">
	<a href="http://www.lolnexus.com/EUW/search?name=<?php echo $name; ?>&region=EUW" target="_blank"><input type="button" class="submit" value="Suchen"></a>
</form>
Allerdings funktioniert das ganze innerhalb des Clients nicht, da der Client die Variable nicht übergibt. Meine Vermutung ist, das der Client IE nutzt und mein Standardbrowser MF ist.

Meine Lösungsansätze waren, den Link im IE öffnen zu lassen oder das ganze mit Javascript oder ähnlichen zu versuchen. Allerdings weiß ich nicht wie! Wäre gut wenn mir da jemand mit Rat zur Seite stehen würde ..
06/25/2014 21:46 flogi333#2
Ich glaube nicht, dass dieser Code auf irgendeinen Browser so läuft, wie du es wünscht.

Du legst in der form einen Link ÜBER den Submit Button. Das heißt das du das Form nie absenden kannst, weil du immer auf den Link klickst (Außer wenn du auf Enter drückst), und damit das POST Array nie gefüllt wird.
Wenn du deinen Namen eingibst, auf Enter drückst und DANN auf Suche,
würde es denn Namen des vorher eingegeben Beschwörer auf lolnexus suchen.

PHP Code:
<form method="post">
    <input type="text" name="name" placeholder="Beschwörer">
    <a href="http://www.lolnexus.com/EUW/search?name=<?php echo $name?>&region=EUW" target="_blank">
    <input type="button" class="submit" value="Suchen"></a>
</form>
Du solltest diesen Link entfernen und das ganze ca. so gestallten
Code:
<form method="post">
	<input type="text" name="name" placeholder="Beschwörer">
	<input type="button" class="submit" value="Suchen">
</form>
und im PHP Teil
PHP Code:
if(isset($_POST['name']))
header("Location: http://www.lolnexus.com/EUW/search?name=".$_POST['name']."&region=EUW"); 
06/25/2014 23:50 Cℓoud#3
Funktioniert hat das ganze im Firefox tatsächlich! xD
Deins funktioniert im Firefox genauso wie ich es will, allerdings lässt sich die Eingabe nur mit Enter bestätigen der Submit Button hat scheinbar keine Funktion. Kann man da noch was machen?
06/26/2014 01:34 flogi333#4
Ändere den button von
type="button"
auf
type="submit"
06/26/2014 23:26 Cℓoud#5
Danke, im Browser funktioniert das wirklich super! Allerdings macht der Client das nicht mit, der macht Probleme beim absenden der Daten .. will wohl mit PHP nicht so. Hab dann versucht mit fwrite() die Daten in einer .txt zu speichern und auslesen zu lassen, aber da scheitert er auch beim schreiben in die .txt, auslesen tut er die jedoch.

Wenn jemand noch eine andere Idee hat, wie ich die Variable an den Link übermitteln kann ..

Das mit fwrite() sah wie folgt aus:

Code:
<?php
	$data = implode("",file("C:\inc.summoner.txt"));

	if(isset($_POST['summoner']))
	{
		$insert = $_POST['summoner'];
		$location = fopen("C:\inc.summoner.txt","w");
		fwrite($location, $insert);
	}
?>
HTML Code:
<a href="http://www.lolnexus.com/EUW/search?name=<?php echo $data; ?>&region=EUW"><input type="button" value="test"></a>
Ist allerdings auch wieder so nen gepfusche ..

Wer den Client nicht kennt, hier mal der Aufbau ggf. ist mein Problem so einfacher zu verstehen.

[Only registered and activated users can see links. Click Here To Register...]
06/27/2014 08:26 CookieBone#6
Der "summoner" bzw. die Eingabe wäre in $_POST[name] gespeichert.

PHP Code:
if(isset($_POST['name']) && $_POST['name'] == 'summoner'){
   ...

06/27/2014 13:24 flogi333#7
Ich vermute jetzt einfach mal, dass der Browser im Client nicht auf Redirects achtet.

Wenn das so wäre, gäbe es vielleicht die Möglichkeit, mit file_get_content() denn Quelltext von lolnexus auf deiner Seite auszugeben. Das kann aber Probleme mit CSS oder Javascript geben, wenn die Links nicht mit einer absoluten URL sind.

Das ist wahrscheinlich das Problem, aber ich kann dir momentan keine Lösung geben
06/27/2014 14:18 devcode#8
Eigentlich übergibst du deine variable garnicht an den String. Eventuell ist dies das Problem?

HTML Code:
<a href="http://www.lolnexus.com/EUW/search?name= echo $data; ?>&region=EUW"><input type="button" value="test"></a>
Da fehlt der öffnende php tag.
06/27/2014 16:34 Cℓoud#9
Quote:
Originally Posted by CookieBone View Post
Der "summoner" bzw. die Eingabe wäre in $_POST[name] gespeichert.

PHP Code:
if(isset($_POST['name']) && $_POST['name'] == 'summoner'){
   ...

Hm .. habt da Script von hier: [Only registered and activated users can see links. Click Here To Register...] Laut der Seite und meinem Script speichert der das Textfeld mit $_POST['summoner'] doch in inc.summoner.txt? Dachte es sei so:

Code:
// Lese inc.summoner.txt
$data = implode("",file("C:\inc.summoner.txt"));

        // Überprüfen ob Text bzw. Eingabe vorhanden ist.
	if(isset($_POST['summoner']))
	{
                // Text der gespeichert werden soll.
		$insert = $_POST['summoner'];

                // Ort der Datei 
		$location = fopen("C:\inc.summoner.txt","w");

                // Text schreiben bzw. eintragen
		fwrite($location, $insert);
	}
Quote:
Originally Posted by devcode View Post
Eigentlich übergibst du deine variable garnicht an den String. Eventuell ist dies das Problem?

HTML Code:
<a href="http://www.lolnexus.com/EUW/search?name= echo $data; ?>&region=EUW"><input type="button" value="test"></a>
Da fehlt der öffnende php tag.
Ich weiß nicht warum der hier fehlt, aber in meinem Script ist der vorhanden.

Könnte man das ganze ggf. irgendwie mit JS lösen? Vllt. mach der Client das eher mit ..
06/27/2014 19:07 CookieBone#10
Quote:
speichert der das Textfeld mit $_POST['summoner'] doch in inc.summoner.txt?
Ja, das stimmt. Bei der Version von flogi333 heißt das Textfeld aber nicht summoner sondern name. Das, was in das Textfeld eingegeben wurde ist also unter $_POST[name] zu finden.

Ich bin mir noch nicht ganz sicher, ob ich dein Vorhaben so ganz verstanden habe. Du möchtest von deiner selbstgebauten Seite aus bei lolnexus.com suchen?

Wenn das so ist, ist $_POST ein viel zu komplizierter Ansatz. Der Suchbegriff wird ja über GET übertragen:

HTML Code:
<form method="GET" action="http://www.lolnexus.com/EUW/search">
   <input type="text" name="name" />
   <input type="submit" value="Suchen" />
   <input type="hidden" name="region" value="EUW" />
</form>
Wäre der reine HTML-Ansatz. Wenn du die eingegebenen Werte speichern willst, kommst du jedoch um ein eigenes PHP-Script nicht herum.

Dazu kannst du das von flogi333 bequem erweitern:

PHP Code:
if(isset($_POST['name'])){
header("Location: http://www.lolnexus.com/EUW/search?name=".$_POST['name']."&region=EUW");
// fwrite

Javascript geht auch, ist aber die wohl ungünstigste Lösung:

HTML Code:
<script>
	function href(eingabe){
		var link = document.getElementById('linkID');
		link.href = 'http://www.lolnexus.com/EUW/search?name=' + eingabe + '&region=EUW';
	}
</script>

<input type="text" onchange="href(this.value);" /><a href="#" id="linkID">Suchen</a>
[ungetestet]
06/27/2014 20:58 Cℓoud#11
Quote:
Originally Posted by CookieBone View Post
Javascript geht auch, ist aber die wohl ungünstigste Lösung:

HTML Code:
<script>
	function href(eingabe){
		var link = document.getElementById('linkID');
		link.href = 'http://www.lolnexus.com/EUW/search?name=' + eingabe + '&region=EUW';
	}
</script>

<input type="text" onchange="href(this.value);" /><a href="#" id="linkID">Suchen</a>
Das mit dem PHP hat wieder nur im Browser funktioniert .. allerdings hat deine JS Lösung super im Client funktioniert und ist endlich die Lösung!

Ich kenne mich mit JS nicht aus, könntest du mir zu dem Textfeld noch ein Dropdown Menü für den Teil "&region=EUW" machen? Es gibt zu EUW diverse andere Regionen, wo es schön wäre wenn man diese auch wählen könnte.

Desweiteren möchte ich das System für mehrere Seiten haben, hab das nun so gemacht:

Code:
<script>
	function href(summoner1){
		var link = document.getElementById('1');
		link.href = 'http://www.lolnexus.com/EUW/search?name=' + summoner1 + '&region=EUW';
	}
	function href(summoner2){
		var link = document.getElementById('2');
		link.href = 'http://www.lolskill.net/game/EUW/' + summoner2;
	}
	</script>
HTML Code:
<form method="GET">
                    <input type="text" placeholder="Beschwörer" onchange="href(this.value);" />
                    <a href="#" id="1"><button class="submit">Suchen</button></a>
				</form>
<form method="GET">
                    <input type="text" placeholder="Beschwörer" onchange="href(this.value);" />
                    <a href="#" id="2"><button class="submit">Suchen</button></a>
				</form>
.. funktioniert aber nicht richtig.
06/28/2014 01:32 flogi333#12
Dein Problem ist, dass du die beiden Methoden gleich benannt hast und sie auch dieselbe Argumentenliste besitzen. Dein Browser weiß deshalb nicht, welche der Beiden er ausfrufen soll (genauer: Er nimmt die sequentiell Obere, also die mit lolnexus).

Gib der unteren Funktion einfach einen andren Name z.B. href2 o.Ä. und ändere dann den Aufruf dieser im onchange der unteren Form entsprechend ab.

Wegen der Auswahl des Spieleservers kannst du eine normale HTML <Select> dropdown Liste verwenden.

Zum Auswerten dieser Dropbox kannst du hier mal reinschauen
[Only registered and activated users can see links. Click Here To Register...]
06/28/2014 17:49 Cℓoud#13
Ersteres hat geklappt, das mit dem dropdown menü hab ich mir angeguckt und auch ausprobiert, kann allerdings nicht viel damit anfangen dementsprechend funktioniert es nicht.