Als ik je goed heb begrepen, is de tabel tPCN
kan meerdere rijen bevatten die aan elk PCR-nummer zijn gekoppeld. En u wilt al deze rijen ophalen en teruggeven in uw JSON.
Als je dat wilt bereiken, maar er ook voor wilt zorgen dat de andere twee tabellen slechts één rij retourneren, dan denk ik dat je eenvoudigweg de JOIN naar tPCN
moet verwijderen in uw eerste zoekopdracht en maak vervolgens een tweede zoekopdracht om de tPCN
. op te halen rijen specifiek.
$output = [];
$stmt = $dbConnected->prepare("SELECT * FROM change_management.tPCR INNER JOIN change_management.tcomplement ON change_management.tPCR.PCRNo = change_management.tcomplement.PCRNo WHERE tPCR.PCRNo = ?");
$stmt->bind_param('s', $_POST['pcr_number']);
$stmt->execute();
$result = $stmt->get_result();
//select a single row from the result and assign it as the output variable
if ($row = $result->fetch_assoc()) {
$output = $row;
}
$stmt2 = $dbConnected->prepare("SELECT * FROM change_management.tPCN WHERE PCRNo = ?");
$stmt2->bind_param('s', $_POST['pcr_number']);
$stmt2->execute();
$result2 = $stmt2->get_result();
$output["tPCN"] = array(); //create a new property to put the tPCN rows in
//loop through all the tPCN rows and append them to the output
while ($row2 = $result2->fetch_assoc()) {
$output["tPCN"][] = $row2;
}
echo json_encode($output);
Dit zal wat JSON produceren met dit soort structuur:
{
"PCRNo": "ABC",
"CreationDate": "2019-08-07",
"Name": "A N Other",
//...and all your other properties, until the new one:
"tPCN": [
{
"SomeProperty": "SomeValue",
"SomeOtherProperty": "SomeOtherValue",
},
{
"SomeProperty": "SomeSecondValue",
"SomeOtherProperty": "SomeOtherSecondValue",
}
]
}
U moet dan uw JavaScript-code aanpassen om met de nieuwe structuur om te kunnen gaan. Aangezien ik niet precies weet welke velden uit de tPCN
komen tabel, daar kan ik je geen voorbeeld van geven, maar hopelijk is het duidelijk dat je de array moet doorlopen en dezelfde HTML moet uitvoeren voor elk item dat je vindt.
NB Zoals u kunt zien, heb ik de querycode opnieuw geschreven om voorbereide instructies en geparametriseerde query's te gebruiken, zodat u kunt zien hoe u uw code in de toekomst op een veilige manier kunt schrijven.
PS Je hebt daar veel code in de "succes"-functie om de waarden van individuele velden in te stellen. Je zou kunnen overwegen om een eenvoudige JS-templating-engine te gebruiken om dit minder uitgebreid en omslachtig te maken, en de HTML te genereren die je nodig hebt met de waarden die er automatisch aan worden toegevoegd op de juiste plaats. Maar dat is een apart probleem, alleen voor de onderhoudbaarheid van uw code