Muratcan
Muratcan

Reputation: 235

How to go through an array which is created from mysql database table with a query and use the array in another php file?

I am very new in php and I really try a few days to find a solution, I feel like I am almost there but still no success. I f someone can hep me I will be very happy. I am building a new website for prediction of football. I have a table in mysql and I can get successfully all rows which I need. I thing also I am storing the data also in a good way in an array.

this is the first php where I get the rows and stored them in an array, I also need columns data because I need them in the second php for the new query.

file name filtre1_danimarka.php

<?php

include 'tableNameDanimarka.php';
include 'indexDanimarka.php';
include 'connectionDatabase.php';


$sql = "SELECT * 
        FROM $tableName 
        where NOT A ='*' ";



$result = $conn->query($sql);
$array = array();
if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
$array[] = $row; 
}

for($i = 0, $j = count($array); $i < $j ; $i++){
 $B= $array[$i]['B'];
 $F = $array[$i]['F'];
 $E = $array[$i]['E'];
 $O = $array[$i]['O'];
 $Home = $array[$i]['HOME'];
 $Away =   $array[$i]['AWAY'];

}
} else {
    echo "0 results";
}
$conn->close();
?>  

second php file Firsthalfprediction.php

<?php
include 'filtre1_danimarka.php';
include 'tableNameDanimarka.php';
include 'connectionDatabase.php';



    $FirstHalfHome=0;
    $FirstHalfDraw=0;
    $FirstHalfAway=0;


    $sql = "SELECT * FROM $tableName where B = '$B' AND E = '$E' AND F = '$F' AND O ='$O' ";
    $result = $conn->query($sql);
    if ($result->num_rows > 0) {
    $rowcount=mysqli_num_rows($result);
        // output data of each row 
        while($row = $result->fetch_assoc()) {

    if($row['Q'] == 1){
    $FirstHalfHome++;
    }
    elseif($row['Q'] == 0){
    $FirstHalfDraw++;
    }else{
    $FirstHalfAway++;
    }



        }


    $FirstHalfHomePrediction = round(($FirstHalfHome/$rowcount )*100);
    $FirstHalfDrawPrediction = round(($FirstHalfDraw/$rowcount )*100);
    $FirstHalfAwayPrediction = round(($FirstHalfAway/$rowcount )*100);


    } else {
        echo "0 results";
    }
    $conn->close();
    ?>

And the final index.php

<table class="table">   
<thead> 
      <tr>
        <th>Home</th>
        <th>Away</th>
        <th>FirstHalf Prediction</th>
      </tr>
</thead>
<tr>
<?php
include 'filtre1_danimarka.php';
include 'Firsthalfprediction.php';

echo"<td>".$Home."</td>";
echo"<td>".$Away."</td>";
echo"<td>1=".$FirstHalfHomePrediction." 0=".$FirstHalfDrawPrediction."\r 2=".$FirstHalfAwayPrediction."</td>";

echo "</tr>";
?>
</table>

If I run the code like this, I am only getting the information from the last index in an array. What I need is all array data showing on the site. I hoop it was clear to understand my question. I hoop to get feedback thank's a lot.

Upvotes: 1

Views: 48

Answers (1)

Marvin Fischer
Marvin Fischer

Reputation: 2572

You are overwriting your variables on each loop iteration. You should fill a new array, and use this array to output your data.

Please read the comments I made in your code, I can not guarantee you, that there are no errors because I can't test it, but that should give you the idea of what you need, try fixing errors yourself first and if you can't do it comment on here for help.

filtre1_danimarka.php

<?php
//filtre1_danimarka.php

include 'tableNameDanimarka.php';
include 'indexDanimarka.php';
include 'connectionDatabase.php';

$sql = "SELECT * 
        FROM $tableName 
        where NOT A ='*' ";

$result = $conn->query($sql);
$array = array();
if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        $array[] = $row; 
    }

    // We removed the complete for, and give the array to the next scripts
} else {
    echo "0 results";
}
$conn->close();
?>  

Firsthalfprediction.php

<?php
include 'filtre1_danimarka.php';
include 'tableNameDanimarka.php';
include 'connectionDatabase.php';


// New foreach to go through the data
foreach($array as $key => $val) {
    $FirstHalfHome=0;
    $FirstHalfDraw=0;
    $FirstHalfAway=0;
    $sql = "SELECT * FROM $tableName where B = '{$val['B']}' AND E = '{$val['E']}' AND F = '{$val['F']}' AND O ='{$val['O']}' ";
    $result = $conn->query($sql);
    if ($result->num_rows > 0) {
    $rowcount=mysqli_num_rows($result);
        // output data of each row 
        while($row = $result->fetch_assoc()) {
            if($row['Q'] == 1){
                $FirstHalfHome++;
            }elseif($row['Q'] == 0){
                $FirstHalfDraw++;
            }else{
                $FirstHalfAway++;
            }
        }
        //We use an array rather than overriding everytime
        $FirstHalfHomePrediction[$key] = round(($FirstHalfHome/$rowcount )*100);
        $FirstHalfDrawPrediction[$key] = round(($FirstHalfDraw/$rowcount )*100);
        $FirstHalfAwayPrediction[$key] = round(($FirstHalfAway/$rowcount )*100);
    } else {
        echo "0 results";
    }
}
$conn->close();
?>

index.php

<table class="table">   
<thead> 
      <tr>
        <th>Home</th>
        <th>Away</th>
        <th>FirstHalf Prediction</th>
      </tr>
</thead>
<?php
include 'filtre1_danimarka.php';
include 'Firsthalfprediction.php';
// Added loop to iterate all data
foreach($array as $key => $data) {
    echo "<tr>";
    echo "<td>".$data['HOME']."</td>";
    echo "<td>".$data['AWAY']."</td>";
    echo "<td>1=".$FirstHalfHomePrediction[$key]." 0=".$FirstHalfDrawPrediction[$key]."\r 2=".$FirstHalfAwayPrediction[$key]."</td>";

    echo "</tr>";
}
?>
</table>

Upvotes: 1

Related Questions