Моя переменная php возвращается к исходному значению после сброса ее значения в цикле foreach - PullRequest
0 голосов
/ 19 марта 2020

У меня есть страница php, которая взаимодействует с базой данных. Я пытаюсь отобразить данные из базы данных в качестве параметров для выбора пользователем. Я пытаюсь записать, какую опцию выбирает пользователь, но переменная, которую я использую ($ a_game_id) для записи, какая кнопка нажата, возвращается к своему первоначальному значению после отправки другой формы. Я попытался объявить переменную как глобальную в l oop и использовать переменные сеанса.

$a_game_id = 9;//starting value - it changes from 9 as desired, but reverts back when another form is submitted

$sql = "SELECT * FROM nbagames WHERE date = '" .$date ."'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
    global $a_game_id;
    // output data of each row
    $results = $conn->query($sql);
    $resultset = array();
    while($a_row = $results->fetch_assoc()){
        $resultset[] = $a_row;
    }
    foreach ($resultset as $row){
        echo "<form action='display_lines.php' method='POST'>

            <br>" . $row["away"] . "   " .  $row['away_spread'] . "---TOTAL AVAILABLE:  " . $away_sum_array[$row['game_id']].

            " <input type='submit' value='Bet " . $row['away'] ."' name='" . $row['game_id']."A' />

             at " .  $row["home"] . "   " . $row['home_spread'] . "---TOTAL AVAILABLE:  " .$home_sum_array[$row['game_id']]. " 
               <input type='submit' value= 'Bet " . $row['home'] ."' name='" . $row['game_id']."H' /> "  . $row['date'] .  "
            </form>
            <br>";

        ///HERE $a_game_id has gets the desired value

        if(isset($_POST[$row['game_id'].'H'])){
            $a_game_id = intval($row['game_id']);
        }else if(isset($_POST[$row['game_id'].'A'])){
            $a_game_id = intval($row['game_id']);
        }
    }
} else {
    echo "<br> 0 results";
}


$sql = "SELECT * FROM nbagames WHERE date = '" .$date ."'";
$result = $conn->query($sql);


while($row = $result->fetch_assoc()) {
         if(isset($_POST[strval($row['game_id']).'H'])){
            echo '<h3>'.$row['game_id'].'<br>';
            echo $row['home'].'   '.$row['home_spread'].'<br>';
            $team = $row['home'];
            $team_spread = $row['away_spread']; 
            echo '<form action="display_lines.php" method="post">
                    <input type="text" name="new_bet_amount" placeholder="Enter Bet Amount">
                    <input type="submit" name="new_bet_submit" value="Submit Bet">
                </form></h3>';
         }
         else if(isset($_POST[strval($row['game_id']).'A'])){
            echo '<h3>' .$row['game_id'].'<br>';
            echo $row['away'].'   '.$row['away_spread'].'<br>';
            $team = $row['away'];
            $team_spread = $row['away_spread'];
            echo '<form action="display_lines.php" method="post">
                    <input type="text" name="new_bet_amount" placeholder="Enter Bet Amount">
                    <input type="submit" name="new_bet_submit" value="Submit Bet">
                </form></h3>';
         }
 }


if(isset($_POST['new_bet_submit'])){

    //HERE $a_game_id reverts back to its original value which is undesirable

    $sql3 = "INSERT INTO placed_bets (user_id, game_id, bet_amount, game_date) VALUES ('".$_SESSION['id']."', '".$a_game_id."', '".$_POST['new_bet_amount']."', '".$date."')";
    echo $a_game_id.'<br>';
    if ($conn->query($sql3) === TRUE) {
            echo "<br><h3>BET PLACED SUCCESSFULLY</h3><br>";
        } else {
            echo '<h3>Error placing bet<br>';
            echo $conn->error;
            echo '</h3>';
        }
 }

Спасибо за просмотр

1 Ответ

0 голосов
/ 19 марта 2020

Вы имеете в виду "когда я делаю еще один запрос, все мои глобальные переменные сбрасываются?" Если так, да , вот как они работают. Каждый запрос полностью независим от других. Они не разделяют переменные или другие данные. Все, что вы получаете, это то, что находится в $_SESSION, $_GET, $_POST и $_COOKIE.

Если вам необходимо сохранить между запросами, вы должны поместить это в сеанс, база данных, или что-то постоянное.

Если вы привыкли кодировать, где процесс сохраняется и переменные остаются, как в ситуациях на стороне клиента, это режим мышления, который вы должны полностью отказаться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...