waarde listmenu in database vervangen
Ik ben hier al eerder mee bezig geweest, maar het is niet gelukt om dat aan de praat te krijgen.
Na verder zoeken op internet kwam ik dit script tegen die zou moeten doen wat ik nodig heb, maar het werkt niet.
Wat ik dus wil is de waarde van het listmenu wijzigen in de database zonder dat de pagina opnieuw geladen wordt.
Wie wil me helpen om dit werkend te krijgen, ik zou er erg mee geholpen zijn.
Code (php)
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
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
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
var selectValue = $('#selectBoxID').val();
// post to php script
$.ajax({
type: 'POST',
url: 'insertdetailed.php',
data: { selectValueBox: selectValue }
});
});
</script>
</head>
<body>
<form id="update_db" name="update_db" method="post">
<select id="selectBoxID" onselect="saveToDatabase()">
<option value="1">Value 1</option>
<option value="2">Value 2</option>
</select>
<input type="hidden" name="id" id="1">
</form>
</body>
</html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
var selectValue = $('#selectBoxID').val();
// post to php script
$.ajax({
type: 'POST',
url: 'insertdetailed.php',
data: { selectValueBox: selectValue }
});
});
</script>
</head>
<body>
<form id="update_db" name="update_db" method="post">
<select id="selectBoxID" onselect="saveToDatabase()">
<option value="1">Value 1</option>
<option value="2">Value 2</option>
</select>
<input type="hidden" name="id" id="1">
</form>
</body>
</html>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
if(isset($_POST['selectValueBox'])){
$connectie = new mysqli("localhost", "xxxxxx", "xxxxxx", "xxxxxx");
// update de score
$sql_update = "UPDATE obs_scores SET score = '".$_POST['selectValueBox']."' WHERE id= '".$_POST['id']."'";
if (mysqli_query($connectie, $sql_update)) {
echo 'SUCCESS';
print $sql_update;
} else {
echo 'FAILED';
print $sql_update;
}
}
?>
if(isset($_POST['selectValueBox'])){
$connectie = new mysqli("localhost", "xxxxxx", "xxxxxx", "xxxxxx");
// update de score
$sql_update = "UPDATE obs_scores SET score = '".$_POST['selectValueBox']."' WHERE id= '".$_POST['id']."'";
if (mysqli_query($connectie, $sql_update)) {
echo 'SUCCESS';
print $sql_update;
} else {
echo 'FAILED';
print $sql_update;
}
}
?>
Gewijzigd op 23/04/2019 15:26:30 door Sietsko Bos
Let er wel op dat je gevoelig bent voor (onbedoelde) SQL-injection.
Gewijzigd op 23/04/2019 10:01:11 door - Ariën -
- Ariën -
Hoe zou ik dit dan ook veilig kunnen maken?
Met mysqli_real_escape_string() ?
Gewijzigd op 23/04/2019 10:05:23 door Sietsko Bos
Heb je al naar de uitvoer van je AJAX-request gekeken in je browser?
Nee heb ik niet gedaan, weet ook niet hoe ik dat kan zien.
Gewijzigd op 23/04/2019 10:28:30 door Sietsko Bos
https://developers.google.com/web/tools/chrome-devtools/network/
Dit werkt in bijna alle browsers hetzelfde.
Dit werkt in bijna alle browsers hetzelfde.
Gewijzigd op 23/04/2019 10:43:54 door - Ariën -
Toevoeging op 23/04/2019 12:34:09:
Het is ook beter om de input na regel 29 te zetten en zowel de input als de select te omlijsten met een <form>.
Gewijzigd op 23/04/2019 10:45:12 door Adoptive Solution
Ik heb de video gekeken, en de php file om alles in de database te zetten wordt niet geladen zo te zien.
Adoptive Solution
Regel 28 heeft id toch een waarde van 1 die meegegeven wordt als een hidden field in de POST?
Ik heb de hiddenfield regel verplaatst onde de select en het omsloten met een form, maar nog steeds werkt het niet.
Ik zie wel een foutmelding: Unchecked runtime.lastError: The message port closed before a response was received.
Ik heb ook niet zoveel kennis van Javascript om dit op te lossen, dus enige hulp is welkom.
Gewijzigd op 23/04/2019 13:47:49 door Sietsko Bos
Gewijzigd op 23/04/2019 13:57:43 door - Ariën -
Er zat inderdaad nog een foutje in de insertdetailed.php, de $connectie en de $sql_update moesten omgedraaid worden.
Als ik nu rechtstreeks een POST doe in de file werkt het goed, krijg ook de Succes.
Alleen als ik de menu.php het listmenu wijzig, gebeurt er niets.
Op 1 of andere manier wordt de insertdetailed.php niet aangeroepen.
Dan kan je prima zien wat er op de achtergrond voor output uit insertdetailed.php komt.
Ja ik denk het wel want in de network-tab staan alleen de jquery.min.js en de menu.php
Als ik bijvoorbeeld value2 kies gebeurt er niets en komt er ook niet bij in de network-tab te staan.
<?HTML bovenin klopt trouwens ook niet echt.
Tenzij je het voor de mark-up hier in het forum bedoelt, want dan hebben we de [code] en [/code]-tags die je voor code-blokken kan gebruiken.
Zo te zien moet je de OnReady function gebruiken om je jQuery-script:
https://learn.jquery.com/using-jquery-core/document-ready/
Gewijzigd op 23/04/2019 14:52:45 door - Ariën -
Ik heb de begincode even aangepast, die was inderdaad voor de mark-up bedoelt.
Ik heb de de code van de files geupdate naar wat ik nu heb.
Kun je me exact uitleggen wat ik nu moet aanpassen zodat het werkt want mijn javascript en jquery reikt niet zover dat ik het kan aanpassen.
Gewijzigd op 23/04/2019 15:11:32 door Sietsko Bos
Met andere woorden: Dus verpakken in die ready-functie.
Gewijzigd op 23/04/2019 15:12:15 door - Ariën -
Nu staat inderdaad de insertdetailed.php erbij, maar bij een selectwissel nog steeds geen uitvoer.
Gewijzigd op 23/04/2019 15:25:49 door Sietsko Bos
En dan nog zal het niet helpen omdat id geen value heeft.
Verder komt de vraag overeen met deze :
https://www.phphulp.nl/php/forum/topic/selectmenu-versturen-met-ajax/102599/
Klopt, maar dat was een ander script die niet wilde werken.
Hoe kan ik dan de id value meesturen met een vaiabele value?
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
$(document).ready(function() {
$('#selectBoxID').change(function() {
const selectValue = $(this).val();
// post to php script
$.post('insertdetailed.php', { selectValueBox: selectValue });
});
});
Gewijzigd op 23/04/2019 15:33:44 door Jelle Dnw
Dat werkt inderdaad.
Heb je ook nog een oplossing om de id mee te sturen?