I got a block of the code written in PHP it uses a DB connection to an Oracle DB, i need to run a query on a data and the result for the first query it should be an input of the next query and this should be inside a loop, if i don’t got any more result from the next query i should exit the loop, at the moment i am using and integer to loop through max 5 times as i know this the maximum possible results received, but this is dynamic.
My actual code what is working is the following:
this is the form when i input the data
<form name="identificare_cusut" action="test_hlkz.php" method="post"> Scanati piesa: <input type="text" name="piesa"><br> <input type="submit" value="Cautare"> </form>
php code where i verify data and use function to execute query on DB while i am running a loop.
if (isset($_POST['piesa']) && strlen($_POST['piesa'])>0) { $barcode = $_POST['piesa']; } if (isset($barcode)) { echo "<tr>"; echo "<th>".$barcode."</th>"; echo "</tr>"; array_push($trasabilitate_array, $barcode); $x=1; do { $arr=get_query_results_hlkz($barcode); if ($arr) { foreach ($arr as $row) { echo "<tr>"; echo "<th>" .$row[0]. "</th>"; echo "</tr>"; $barcode=$row[0]; array_push($trasabilitate_array, $row[0]); } } $x++; } while ($x <=5); }
i don’t want to use a static solution like while ($x <=5)
Any idea how to fulfill this in a different way?
Advertisement
Answer
Should do the trick. So if the next $arr is empty it will exit the loop.
<?php if (isset($_POST['piesa']) && strlen($_POST['piesa'])>0) { $barcode = $_POST['piesa']; } if (isset($barcode)) { echo "<tr>"; echo "<th>".$barcode."</th>"; echo "</tr>"; array_push($trasabilitate_array, $barcode); $x=1; do { $arr=get_query_results_hlkz($barcode); if ($arr != null) { foreach ($arr as $row) { if ($arr == null) { $x = 6; } if($x < 6){ echo "<tr>"; echo "<th>" .$row[0]. "</th>"; echo "</tr>"; $barcode=$row[0]; array_push($trasabilitate_array, $row[0]); } } $x++; } } while ($x <=5); } ?>