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.

Bedoel je de forumkeuze bij de 'New topic'-actie? Want daar wordt geen Javascript gebruikt. Je kiest een forum, en vult de rest in, en er wordt gewoon ge-POST naar het newtopic-script.

Overigens bekruipt mijn gevoelens dat je Frontpage 2000 gebruikt? Want ik zie een hoop onlogische namen, zoals B1, B2, D1 en een oeroude --WEBBOT_SELF--. Als dit zo is dan kan ik je vertellen dat er inmiddels al een hoop betere programma's zijn dan FrontPage.
Merkwaardig toch altijd, dat in forums altijd wordt ingegaan op bijzaken.
Waar het voor nodig is en of ik met een oeroude versie frontpage werk.

Het lijkt me dat mijn vraag duidelijk is.'
Ik wil de mogelijkheid om gebruiksvriendelijk informatie te kunnen weergeven vanuit een lijst van items

Een voorbeeldje:
links: rechts:
voetbal Voetbal is een sport die door
tennis twee elftallen en bal wordt gespeeld.
basketbal

je klikt op tennis en rechts volgt info over die sport.
etc. etc.


Als ik ergens anders moet zijn zeg me dan waar wel.
Ik begon hier omdat ik dacht dat mijn vraag kon oplossen met Javascript.

Als het anders kan, graag een suggestie.

[size=xsmall]Toevoeging op 05/03/2020 22:43:23:[/size]

En nou liever niet vragen of ik niet in vissen ben geïnteresseerd.
Zie het niet aanvallend, maar meer als een 'heads-up'. Want er komt geen mooie website code meer uit, omdat zo goed als alle sites uit CSS bestaan waar Frontpage bijna niks mee doet. De wereld van webdesign blijft dus niet stilstaan, en het is zonde dat je daar nog een hoop tijd in oude structuren van designs zou investeren. Voor een kleinigheidje kan het nog, maar ik zou het zelf niet meer aanraden.

Over je probleem:
Ik neem aan dat je dus een multiple-selectbox hebt waar de sporten in staan, en dat je daarnaast de uitleg erover ziet, zodra je iets selecteert? Want dat doet je code uit de beginpost toch al?

[sub]PS: Toevallig heb ik vandaag een aquarium besteld ;-)[/sub]
@Chris, dan kan prima met het voorbeeld dat ik je eerder gaf.
In ajax_request.php maak je een database connectie en haal je de informatie op.
Als je meer informatie wilt weergeven kan je dit ook in json teruggeven. json_encode($_POST['myList']) en in jquery gebruik je dan dataType json of parseJson. Je vind wel een hoop voorbeelden op 't web.

EDIT:
Over je voorbeeld. Je vergeet het belangrijkste, de ajax_request.php.
"ajax_request.php:1 Failed to load resource: the server responded with a status of 404 (Not Found)"

[size=xsmall]Toevoeging op 06/03/2020 11:49:15:[/size]

Voorbeeldje met wat meer data

<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) {
				var obj = JSON.parse(data);
				$('#favorite').val(obj.info);
				 
				// Of als je meerdere data hebt kun je een loop gebruiken
				// $.each(JSON.parse(data), function(i, item) {
					// $('#favorite').val(item);
				// });
			});
	});
});
</script>


<?php
// ajax_request.php

if($_SERVER['REQUEST_METHOD'] == "POST") {
	if(isset($_POST['myList']) && is_numeric($_POST['myList'])) {
		// De volgende data kun je uit een database halen
		// SELECT info WHERE id = $_POST['myList']
		$array = array(
			array('info'=>'Info over voetbal'),
			array('info'=>'Info over cricket'),
			array('info'=>'Info over tennis'),
		);
	
		if(isset($array[$_POST['myList']-1])) {
			echo json_encode($array[$_POST['myList']-1]);
		}
	}
}
?>

Ik weet niet hoe je kennis is, maar als je vragen erover hebt, stel ze gerust.
Ja Michael, dit gaat de goede kant uit.

Ik snap het nog niet, maar het is leuk om verder te bestuderen.

Wat ik nu wil is de value uit select, in dit voorbeeldje 1, 2 en 3 bij resp. Soccer, Cricket en Tennis.
Deze waarde kan ik dan inderdaad gebruiken in 'SELECT info WHERE id = $_POST['myList']'.

Vordering: http://www.jocotravel.nl/_sub/mee_bezig.php

Je hebt nu al een AJAX-request die de juiste waardes uit de database haalt.
Dan kan je daaraan een query toevoegen aan het PHP-script, welke de keuze vermoedelijk in de database moet opslaan.

Let er wel op dat je deze $_POST-waarde met mysqli_real_escape_string(...) escaped.
Ja, dat laatste realiseer ik me.
Ik moet nog zien te achterhalen hoe ik de waarde van de value uit: <option value="1">Soccer</option>'; te voorschijn tover.
Het gaat vooruit.
Ook met je vissenkom? ;-)
[sub]Nee, beschadigd aangekomen, dat wordt een replace actie door de leverancier, want ik ga niet 22,5 kg naar het postkantoor sjouwen :-/[/sub]

In $_POST['myList'] zit de waarde die er gekozen is. Dus escape deze waarde met [php]mysqli_real_escape_string[/php] en gebruik die in je INSERT-query.

het is natuurlijk mooi als je in het geval van een mislukte query dit teruggeeft:

array('error'=>'query_problem');


Dan kan je in je Javascript dit weer opvissen door de waarde van error te vergelijken met query_problem, en aan je gebruiker melden dat er 'een fout is bij het invoegen van de data'.
Chris Martinus op 05/03/2020 21:29:29
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?

Hm, maar waarom maak je dan een roundtrip naar je server via AJAX?

Hierover verwonder ik mij altijd - op dit forum wordt altijd zo snel een technische oplossingsrichting ingeslagen, en hiermee is een topicstarter dan mogelijk geholpen met zijn directe probleem, maar dit is lang niet altijd een optimale oplossing.

Ik bedoel, laten we het eens hebben over zoekmachines. Is het zaak dat deze pagina's ook geïndexeerd worden enzo? Bij mijn weten gaan zoekmachines geen formulieren submitten waarachter content zit verscholen.

Wat nu als je alle content gewoon in de pagina stopt, en deze verschuilt achter onzichtbare divjes. Vervolgens maak je hier tabjes van waar iemand op kan klikken waarmee de bijbehorende content getoond (en de rest van de content verborgen) wordt.

Hiermee sla je (ten minste) drie vliegen in één klap:
- het geeft invulling aan de wens van de topicstarter
- het scheelt de gebruiker een muisklik en voor hem/haar ziet het er gewoon uit alsof ie door de website navigeert
- geen negatieve penalty qua zoekmachineoptimalisatie

Een alternatief is dat je hier gewoon aparte pagina's van maakt die dynamisch worden opgebouwd. Het enige wat dan in wezen verschilt is de "content" van de knop waar je op klikt, de rest van de code voor pagina-opbouw wordt gewoon hergebruikt. En aan deze pagina's zou je ook aparte URLs, titels en metadata kunnen geven, die de zoekmachine nog een extra handje helpt en potentiële bezoekers in 1x bij de pagina brengen waar zij mogelijk naar op zoek waren.

Hierboven al twee (wat mij betreft betere) alternatieven, en dat nog zonder een letter concrete code getypt te hebben, maar simpelweg door wat alternatieven aanpakken te behandelen...

Reageren