Почему не видит переменную $id?

Рейтинг: 0Ответов: 1Опубликовано: 03.06.2023

Я прошелся циклом по таблице "Food" и вывел её значения, одно из значений это $id. При отправке данной формы в другой файл он не видит значение переменной $id в $_POST[], но если задать значение вручную он работает.

                <form action="Dish.php" method="post">
                <?php 
                    $result = mysqli_query($conn3, "SELECT * FROM `Food`");
                    
                    
                ?>
                <?php foreach($result as $row):?>
                        <?php $id = $row['id'];?> //эту переменную не видит в "Dish.php"
            <div class="plate" >
                    <img class="img" src="<?php echo $row['img'];?>"  alt="">
                    <h3 class="title" name="name"><?php echo $row['dish_name'];?></h3>
                    <textarea type="text" class="discript"  readonly><?php echo $row['ingr'];?></textarea>
                    <input type="text" class="price" value="<?php echo  $row['cost'] . "p"; ?>"  readonly>
                    <input type="submit" name="<?php echo $id;?>" value="Заказать"  class="button_for_buy">
                </div> 
            <?php endforeach;?>
            </form>    

Идет форма в которой не видит переменную:

                        <?php 
            if(isset($_POST[$id])){ // здесь если задать вручную всё работает, естественно в  поле id_ingr ='' тоже меняю. 
              $sql = "SELECT * FROM `ingredient` WHERE id_ingr = '$id'";
              if($result = $conn3->query($sql)){
                $count = 0; 
                foreach($result as $row ){
                  $count++;
                  $ingredient = $row['ingredient'];
            ?>
               <input type="checkbox" class="checkbox"  name ="checkboxx[]" value="<?php echo($ingredient); ?>" id="checkbox<?php echo($count); ?>" checked/>
               <label class="label" for="checkbox<?php echo($count); ?>"><?php echo($ingredient); ?></label>
            <?php
                }
              }
            }?>

Ответы

▲ 0

Я переделал метод передачи данных с post на get И переделал Input на созданную при помощи php ссылку, а дальше получил из get данные id. Код выглядит так:

         <form action="Dish.php" method="get">
                <?php 
                    $result = mysqli_query($conn3, "SELECT * FROM `Food`");
                    
                    
                ?>
                <?php foreach($result as $row):?>
                        <?php $id = $row['id'];?>
            <div class="plate" >
                    <img class="img" src="<?php echo $row['img'];?>"  alt="">
                    <h3 class="title" name="name"><?php echo $row['dish_name'];?></h3>
                    <textarea type="text" class="discript"  readonly><?php echo $row['ingr'];?></textarea>
                    <input type="text" class="price" value="<?php echo  $row['cost'] . "p"; ?>"  readonly>
                    <?php echo "<a class='button_for_buy' href='Dish.php?id=$id'>Заказать</a>"?>
                   
                </div> 
            <?php endforeach;?>
            </form>    

Файл в который передается значение get'а:

            <?php 
            if(isset($_GET['id'])){
              $id = $_GET['id'];
              $sql = "SELECT * FROM `ingredient` WHERE id_ingr = '$id'";
              
              if($result = $conn3->query($sql)){
                $count = 0; 
                foreach($result as $row ){
                  $count++;
                  $ingredient = $row['ingredient'];
            ?>
               <input type="checkbox" class="checkbox"  name ="checkboxx[]" value="<?php echo($ingredient); ?>" id="checkbox<?php echo($count); ?>" checked/>
               <label class="label" for="checkbox<?php echo($count); ?>"><?php echo($ingredient); ?></label>
            <?php
                }
              }
            }?>