Met behulp van een Javascript zie ik de waarde van een selectie.

Hoe zet ik dit getal nu om in een variabel?



<script>
function favsports() {
	var mylist=document.getElementById("myList");
	document.getElementById("favorite").value=mylist.options[mylist.selectedIndex].value;
}
</script>

<?php

echo '<form>';
echo '<select size="10" id="myList" onchange="favsports()">';
    echo '<option value="1">Soccer</option>';
    echo '<option value="2">Cricket</option>';
    echo '<option value="3">Tennis</option>';
echo '</select>';

echo '<input type="text" size="20" id="favorite">';

echo '</form>';

?>


Graag advies.

Allereerst moet je weten dat PHP serverside wordt uitgevoerd, en dat Javascript door de browser van de bezoeker wordt uitgevoerd. PHP heeft geen enkel weet van wat er in een Javascript uitkomst zit. Maar wat wil je nu precies bereiken?

Als ik een goede tip mag geven, dan kan je die echo-put aan lijnen voorkomen door de HTML buiten PHP tags te laten.
Afhankelijk van wat je wil zou je de variabelen moeten versturen voordat je er in PHP iets mee kan. Dit kan met bijv GET, POST of AJAX.
Heel vriendelijk en snel, maar het is geen antwoord op mijn vraag.

Ik wil een makkelijker alternatief, dan de constructie in form met submit.
Een eenvoudig Javascriptje levert mij de waarde van mijn selectie.

Met die waarde wil ik verder.
Bijvoorbeeld de opties $waarde = "favorite" of $waarde = id werken niet.

Mijn vraag is of er een andere manier is om de variabel $waarde te 'vullen' met de waarde die ik zie in <input type="text" size="20" id="favorite">

Alvast mijn dank voor het antwoord.
Voorbeeldje hoe je t via PHP kan doen

<form>
	<select size="10" id="myList">';
		<option value="1">Soccer</option>';
		<option value="2">Cricket</option>';
		<option value="3">Tennis</option>';
	</select>
	<input type="text" size="20" id="favorite">
</form>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
<script>
$(function() {
	$('#myList').on('change', function() {
		$.post('ajax_request.php', {myList : this.value})
			.done(function(data) {
				$('#favorite').val(data);
			});
	});
});
</script>



<?php
// ajax_request.php

if($_SERVER['REQUEST_METHOD'] == "POST") {
	if(isset($_POST['myList'])) {
		echo htmlspecialchars($_POST['myList']);
	}
}
?>
Heel interessant. Ik heb geen enkele ervaring met Ajax.
In het php deel zou dan de variabel $_POST['myList'] de waarde van de selectie (value) worden weergegeven.

Ik heb het zo overgenomen, maar deze variabel geeft geen waarde weer.
Heb ik hier iets overgeslagen of is het geheel niet compleet?
Heb je al in de network-tab van je browser gekeken of je die data daar binnenkrijgt?
Het geheel zou moeten werken. Als je een selectie doet wordt deze in het invoerveld weergegeven.
this.value wordt verstuurd naar ajax_request.php en weer teruggestuurd. De variabele this.value / $_POST['myList'] zit in data (of eigenlijk zit hier alle uitvoer in van ajax_request.php). Je kunt het ook zien door console.log te gebruiken icm developers toolbar (F12)

<form>
	<select size="10" id="myList">';
		<option value="1">Soccer</option>';
		<option value="2">Cricket</option>';
		<option value="3">Tennis</option>';
	</select>
	<input type="text" size="20" id="favorite">
</form>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
<script>
$(function() {
	$('#myList').on('change', function() {
		$.post('ajax_request.php', {myList : this.value})
			.done(function(data) {
				$('#favorite').val(data);
				console.log('Deze waarde heb je geselecteerd: ' + data);
			});
	});
});
</script>

Druk F12, kijk in het 'console' tabblad en selecteer een item.

Ik weet nog steeds niet wat je precies wil, maar in ajax_request.php zou je bijv de variabele kunnen opslaan, controleren, of wat dan ook.
Het is niet zo heel bijzonder wat ik wil. Links op het scherm een lijst met items (een selectie vanuit een database) en rechts info uit dezelfde database met de ID als value in de afzonderlijke onderdelen van select. Dit opzetje is alleen maar op te proberen of dit idee werkt. Met de HTML opzet lukt dit wel, maar moet ik elke keuze afzonderlijk bevestigen.

<form method="POST" action="--WEBBOT-SELF--">
<p><select size="5" name="D1">
<option value="1">Soccer</option>
<option value="2">Cricket</option>
<option value="3">Tennis</option>
</select></p>
<p><input type="submit" value="Submit" name="B1"><input type="reset" value="Reset" name="B2"></p>
</form>

Aanvankelijk probeerde ik het met een Javascriptje en kreeg met <input type="text" size="20" id="favorite"> wel de value te zien, maar wist niet hoe die value om moest zetten in een variabel voor het zoeken in de database.

Jouw opzet heb ik samen met het stukje php online gezet om uit te proberen en in het console lees ik "Failed to load resource.

Het tijdelijke adres is: http://www.jocotravel.nl/_sub/mee_bezig.php



De vraag is, waarom heb je dit in JavaScript nodig? Is dit voor initialisatie van een keuze ofzo?

Ik volg niet helemaal wat het nut is van JavaScript in dit verhaal.
Ik ben in voor iedere oplossing en niet gehecht aan Javascript. Waar ik vanaf wil is om ieder itemkeuze te bevestigen met Submit. Dat moet toch makkelijker kunnen?

[size=xsmall]Toevoeging op 05/03/2020 21:32:18:[/size]

Als ik hier op dit forum kijk naar de lijst van forum-berichten kan ik toch ook op een item klikken zonder zonder mijn keuze te hoeven bevestigen. Zoiets zoek ik.

Reageren