I want to invert the order of these elements when they are exhibited on my menu:
function buscarSubCateg($categ_id) {
global $con;
$buscar_subcateg = "SELECT * FROM subcateg WHERE categ_id = '$categ_id'";
$run_subcateg = mysqli_query($con, $buscar_subcateg);
$i=0;
while ($row_subcateg = mysqli_fetch_array($run_subcateg)) {
$subcateg_id = $row_subcateg['subcateg_id'];
$subcateg_name = $row_subcateg['subcateg_name'];
echo '<div class="sectionSub"><a class="linkSubCatergoria" href="#">'.$subcateg_name.'</a></div>'.buscarTipos($subcateg_id);
$i++;
}
}
function buscarTipos($subcateg_id) {
global $con;
$buscar_tipo = "SELECT * FROM tipoprod WHERE subcateg_id = '$subcateg_id'";
$run_tipo = mysqli_query($con, $buscar_tipo);
while ($row_tipo = mysqli_fetch_array($run_tipo)) {
$tipo_id = $row_tipo['tipoprod_id'];
$tipo_name = $row_tipo['tipoprod_name'];
echo "<div class='sectionTipo'><a class='linkTipo' href='#'>$tipo_name</a></div>";
}
}
In this echo:
echo '<div class="sectionSub"><a class="linkSubCatergoria" href="#">'.$subcateg_name.'</a></div>'.buscarTipos($subcateg_id);`
I want that the function buscarTipos()
's result be shown after $subcateg_name
. The way it is now is doing the opposite, first showing buscarTipos()
's result and after shwoing $subcateg_name
.
Thanks.
Replace your current code with the following:
function buscarSubCateg($categ_id) {
global $con;
$buscar_subcateg = "SELECT * FROM subcateg WHERE categ_id = '$categ_id'";
$run_subcateg = mysqli_query($con, $buscar_subcateg);
$i=0;
while ($row_subcateg = mysqli_fetch_array($run_subcateg)) {
$subcateg_id = $row_subcateg['subcateg_id'];
$subcateg_name = $row_subcateg['subcateg_name'];
$tip = buscarTipos($subcateg_id);
echo $tip;
echo '<div class="sectionSub"><a class="linkSubCatergoria" href="#">'.$subcateg_name.'</a></div>';
$i++;
}
}
function buscarTipos($subcateg_id) {
global $con;
$buscar_tipo = "SELECT * FROM tipoprod WHERE subcateg_id = '$subcateg_id'";
$run_tipo = mysqli_query($con, $buscar_tipo);
$str = '';
while ($row_tipo = mysqli_fetch_array($run_tipo)) {
$tipo_id = $row_tipo['tipoprod_id'];
$tipo_name = $row_tipo['tipoprod_name'];
$str = $str."<div class='sectionTipo'><a class='linkTipo' href='#'>$tipo_name</a></div>";
}
return $str;
}
Try changing line #34
echo "<div class='sectionTipo'><a class='linkTipo' href='#'>$tipo_name</a></div>";
into
return "<div class='sectionTipo'><a class='linkTipo' href='#'>$tipo_name</a></div>";
Then the calling function will echo sectionSub
before echoing sectionTipo
Or change your SQL to
$sql = 'select a.categ_id, a.subcateg_id, b.tipoprod_id, b.tipoprod_name
from subcateg as a, tipoprod as b where categ_id='$categ_id'
and a.subcateg_id = b.subcateg_id';
and lose the secondary function completely. That gets MySQL to do the join between your two tables and is an order of magnitude easier to work with.