Door
Frits van Leeuwen
op 08-10-2023 23:05
gewijzigd op 01-11-2023 18:59
7.979 views
Hallo allemaal,
Ik heb een php bestand met daar in een gegenereerde lijst. Het bevat veen x aantal regels vanuit een database tabel(1).
Iedere regel bevat een form. En op dat form heb ik een hidden id. Die gebruik ik om een record te kunnen selecteren.
Maar op ieder form heb ik ook een drop-down veld/lijst. Deze is gegenereerd uit een andere database tabel(2). De id daarvan wil ik opslaan in tabel(1).
Hiervoor wil ik een MySQLi commando gebruiken met het SQL statement UPDATE.
Maar mijn vraag is nu, hoe kan ik query direct starten als ik mijn keuze heb gemaakt in de dropdown. Ik wil dan eigenlijk geen ander knopje hoeven in te drukken.
Ik ben het met Ad Fundum eens.
Maar als ik op de link klik om jquery te downloaden, krijg ik een heleboel code tekst in beeld. Hoe kan ik dan jquery zelf hosten? Ik heb nu de tekst maar opgeslagen op mijn computer met de naam code.jquery.com_jquery-3.7.1.min. Daarna heb ik deze naar de server overgezet met de naam en gaf het de naam jquery-3.7.1.min.js. Deze naam gaf ik omdat ik meer bestanden zag met een sortgelijke naam. Ik denk eerdere versies. (3.4.1 en 3.5.1) Ze staan vanuit de hoofdmap van de site in de map /js/jquery
Nu hou ik over de vraag hoe ik dat dan moet gebruiken. Dus hoe laad ik het en hoe roep ik het aan.
Bedankt voor zo ver. Met de informatie die ik hier kreeg ben ik verder gegaan en probeerde het aan de praat te krijgen.
Ik heb ook op internet door gezocht en vond wel een paar kleine verbeterpunten, Waardoor nu de pagina in beeld blijft.
Maar verder kom ik nu niet. De fout die ik nu heb, is de volgende:
Ik kan in mijn drop-downlist een keuze maken. Deze blijft in beeld zolang ik de pagina niet ververs.
Het is voor mij duidelijk dat er niets wordt bewaard in een tabel. Hierdoor zijn mijn drop-downvelden altijd leeg na een refresh.
Ik zet de code nog even op een rij.
Ik heb 1 bestand. Daar in staat de volgende php-code.
$TotaalTabel_packings = "";
$i_packings = 1;
$query_packings = "SELECT id, name, height, width, depth, location
FROM prstshp_collect_packings
ORDER BY name,height,width,depth;";
$result_packings = mysqli_query( $con,$query_packings );
$n_packings = mysqli_num_rows( $result_packings );
$selectielijst_packings = "<select name='verpakkingen' id='verpakkingen' alt='verpakkingen'>
<option value='0'> </option>";
$query_necessary_packaging = "SELECT id, producttype, quantity, id_packing
FROM prstshp_collect_productstype_packing
ORDER BY quantity, producttype;";
$result_necessary_packaging = mysqli_query( $con,$query_necessary_packaging );
$n_necessary_packaging = mysqli_num_rows( $result_necessary_packaging );
while ($row_packings = mysqli_fetch_row($result_packings)) {
$selectielijst_packings .= "<option value='".$row_packings[0]."'>".$row_packings[1].": ".$row_packings[2]."x".$row_packings[3]."x".$row_packings[4]."</option>";
}
$selectielijst_packings .= "</select><div id='result_update_necessary_packaging'></div>";
while ( $rows = mysqli_fetch_array( $result_necessary_packaging, MYSQLI_ASSOC ) )
{
$id = $rows["id"];
$producttype = $rows["producttype"];
$quantity = $rows["quantity"];
$id_packing = $rows["id_packing"];
$TotaalTabel_necessary_packaging .= "<form name = 'form_necessary_packaging".$id."' method = 'POST' action='necessary_packaging.php'>
<tr class='normaaal_tabel'>
<td><input type = 'hidden' name = 'id' value = '".$id."'> ".$quantity."x ".$producttype."</td>
<td>";
$TotaalTabel_necessary_packaging .= $selectielijst_packings;
$TotaalTabel_necessary_packaging .= "</td><td>";
$TotaalTabel_necessary_packaging .="
<button type = 'submit' name = 'Verwijderen' class = 'button_administratie' alt = 'Verwijderen' >
<img src = 'img/administratie/delete.png' alt = 'Verwijderen' name = 'Verwijderen".$id."' class = 'check_administratie' style = 'float:left' >
</button>";
$TotaalTabel_necessary_packaging .="</td></tr></form>";
$id = "";
}
if(isset($_POST['verpakkingen'])){
$id = $_POST['id'];
$id_packing_choosen=$_POST['verpakkingen'];
$query_update_necessary_packaging = "UPDATE prstshp_collect_productstype_packing SET id_packing='$id_packing_choosen' WHERE id = '$id';";
// Voer de query uit
$result_update_necessary_packaging = mysqli_query($con, $query_update_necessary_packaging);
$id = "";
$query_update_necessary_packaging = "";
}
if(isset($_POST['Verwijderen'])){
$id = $_POST['id'];
$query_del_necessary_packaging = "Delete FROM prstshp_collect_productstype_packing WHERE id = '$id';";
// Voer de query uit
mysqli_query($con, $query_del_necessary_packaging);
$id = "";
$query_del_necessary_packaging = "";
echo "<meta http-equiv='refresh' content='0'>";
}
In de header van de HTML staat:
<script src="https://geschenkenlaantje.nl/js/jquery/jquery-3.7.1.min.js" ></script>
<script>
$(document).ready(function() {
$('#verpakkingen').change(function() {
// Haal de geselecteerde waarde op
var selectedOption = $(this).val('id');
// Voer een AJAX-verzoek uit met de geselecteerde waarde als GET-parameter
$.ajax({
url: 'necessary_packaging.php',
type: 'POST',
data: { option: selectedOption },
success: function(data) {
// Verwerk de succesvolle respons hier
$('$result_update_necessary_packaging').html('De request is met succes uitgevoerd: ' + JSON.stringify(data));
},
error: function(xhr, status, error) {
alert('Fout bij het uitvoeren van de AJAX-request: ' + error);
}
});
});
});
</script>
En in de body van dde HTML heb ik dit staan:
<table class = "Tabelregel" >
<tr>
<th><label for="aantal x producttype">aantal x producttype</label></th>
<th><label for="Benodigde verpakking">Benodigde verpakking</label></th>
<th> </th>
</tr>
<?php echo $TotaalTabel_necessary_packaging; ?>
</table>
Ik heb even de code er uitgelicht om niet teveel afgeleid te worden door de rest van de code in het bestand. Ik vermoed dat aan de hand van de gegeven stukjes code, jullie wel een indruk hebben wat er waar mis gaat.
Het eerste wat we willen weten is of necessary_packaging.php uitgevoerd wordt, en de response. Kijk eens in de debugtool van je browser in de netwerktab.
necessary_packaging.php is het bestand dat deze codes heeft. Alles staat in het zelfde bestand, dus die roep ik ook aan.
Ik gebruik MS Edge, Ik kan wel de tool openen om dan Netwerk te kiezen, maar ik begrijp daar niet veel van.
Ik zie mijn eigen URL. Maar omdat ik de pagina niet heb gekoppeld, moet ik necessary_packaging.php aan de URLplakken om hem te openen. Dan zie ik de pagina in de tool genooemd worden.
maar ik zie in de tool niets gebeuren als ik een keuze maak. Behalve als ik een keuze maak op de eerste regel in de tabel. Niet dat hij het gegeven onthoud, maar gebeurt meer dan op andere regels.
[size=xsmall]Toevoeging op 10/10/2023 22:49:37:[/size]
Is het een idee dat ik de link naar het necessary_packaging.php geef?
Ik heb mijn code laten zien. Daarin staat toch dat jquery geladen wordt?
En ik zag die ook in de tool voorbij komen. Zelf denk ik dat er iets mis is met de code.
Zal ik je in een PM de link sturen?
Het is allemaal in test. je kan er niets mee verzieken.