PHP извлекает две строки, но загружает файл только из последней строки

0

Я пытаюсь извлечь записи из базы данных, затем мне нужно загрузить изображение, которое должно быть сохранено в папке, а также ссылку, которая будет обновляться в таблице. Все работает отлично только с последней строкой.. Для первой строки это не обновление.. Пожалуйста, помогите меня, где я иду.. Ниже мой код

Изображение 174551

<?php
$email1 = $_SESSION['email'];
$Vendor_id = "SELECT Vendor_id FROM vendors where email = '$email1' ";
$result = mysqli_query($conn, $Vendor_id);
$row = mysqli_fetch_row($result);
$sql = "select Vendor_wallet_id, total_amount, request, amount, status, amt_pdflink from vendor_wallet";
$query = mysqli_query($conn, $sql);
?>

<form action="upload.php" method="post" enctype="multipart/form-data">
    <table id="example1" class="table table-bordered table-striped">
        <thead>
            <tr>
                <th>Transfer ID</th>
                <th>Request</th>
                <th>Amount</th>
                <th>Status</th>
                <th>Upload</th>
                <th>Submit</th>
            </tr>
        </thead>
        <tbody>

            <?php
            while ($row = mysqli_fetch_array($query))
            {
                $cpid = $row['Vendor_wallet_id'];
                $tid = $row['request'];
                $type = $row['amount'];
                $pays = $row['status'];
                $amt = $row['amt_pdflink'];
                ?>
                <tr>    
                    <td value="<?php echo $cpid; ?>" name="cpid"><?php echo $cpid; ?></td>
                    <td><?php echo $tid; ?></td>
                    <td><?php echo $type; ?></td>
                    <td><?php echo $pays; ?></td>   
                    <td><input type="file" value="<?php echo $amt; ?>" name="fileToUpload" id="fileToUpload" ></td> 
                    <td><input type="submit" value="Submit" name="submit" >
                        </button>
                    </td>  </tr>
            <?php } ?>

        </tbody>
    </table>
</form>  

upload.php взят из https://www.w3schools.com/php/php_file_upload.asp

Теги:

4 ответа

1
Лучший ответ

в вашей форме

<?php
$email1 = $_SESSION['email'];
$Vendor_id = "SELECT Vendor_id FROM vendors where email = '$email1' ";
$result = mysqli_query($conn, $Vendor_id);
$row = mysqli_fetch_row($result);
$sql = "select Vendor_wallet_id, total_amount, request, amount, status, amt_pdflink from vendor_wallet";
$query = mysqli_query($conn, $sql);
?>

<form action="upload.php" method="post" enctype="multipart/form-data">
    <table id="example1" class="table table-bordered table-striped">
        <thead>
            <tr>
                <th>Transfer ID</th>
                <th>Request</th>
                <th>Amount</th>
                <th>Status</th>
                <th>Upload</th>
                <th>Submit</th>
            </tr>
        </thead>
        <tbody>

            <?php
            while ($row = mysqli_fetch_array($query))
            {
                $cpid = $row['Vendor_wallet_id'];
                $tid = $row['request'];
                $type = $row['amount'];
                $pays = $row['status'];
                $amt = $row['amt_pdflink'];
                ?>
                <tr>    
                    <td value="<?php echo $cpid; ?>" name="cpid"><?php echo $cpid; ?></td>
                    <td><?php echo $tid; ?></td>
                    <td><?php echo $type; ?></td>
                    <td><?php echo $pays; ?></td>   
                    <td><input type="file" name="fileToUpload []" class="fileToUpload" ></td> 
                    <input type="hidden" value="<?php echo $amt; ?>" name="fileToUploadLink []" class="fileToUploadLink" >
                    <td><input type="submit" value="Submit" name="submit" >
                        </button>
                    </td>  </tr>
            <?php } ?>

        </tbody>
    </table>
</form>  

on upload.php

<?php
 if(isset($_FILES['fileToUpload']['tmp_name'])&&isset($_POST['fileToUploadLink'])){
  for($i=0;$i<=(count($_FILES['fileToUpload']['tmp_name'])-1);$i++){
    move_uploaded_file($_FILES['fileToUpload']['tmp_name'][$i],$_POST['fileToUploadLink'][$i]);
  }

}

?>
1

Есть несколько способов, которыми вы могли бы выполнить загрузку файла, одним из которых было бы сделать форму дочерним элементом одной ячейки таблицы и иметь поле файла в качестве прямого дочернего элемента этой формы. Кнопка submit, чтобы сохранить макет, не будет дочерним элементом формы и должна быть изменена на простой тип ввода button затем используйте javascript для отправки формы

<?php
    $email1 = $_SESSION['email'];
    $Vendor_id = "SELECT Vendor_id FROM vendors where email = '$email1' ";
    $result = mysqli_query($conn, $Vendor_id);
    $row = mysqli_fetch_row($result);
    $sql = "select Vendor_wallet_id, total_amount, request, amount, status, amt_pdflink from vendor_wallet";
    $query = mysqli_query($conn, $sql);
?>

    <table id="example1" class="table table-bordered table-striped">
        <thead>
            <tr>
                <th>Transfer ID</th>
                <th>Request</th>
                <th>Amount</th>
                <th>Status</th>
                <th>Upload</th>
                <th>Submit</th>
            </tr>
        </thead>
        <tbody>

<?php

    while( $row = mysqli_fetch_array( $query ) ) {
        $cpid = $row['Vendor_wallet_id'];
        $tid = $row['request'];
        $type = $row['amount'];
        $pays = $row['status'];
        $amt = $row['amt_pdflink'];
?>
    <tr>    
        <td value="<?php echo $cpid; ?>" name="cpid"><?php echo $cpid; ?></td>
        <td><?php echo $tid; ?></td>
        <td><?php echo $type; ?></td>
        <td><?php echo $pays; ?></td>   
        <td>
            <form action="upload.php" method="post" enctype="multipart/form-data">
                <input type="file" value="<?php echo $amt; ?>" name="fileToUpload" />
            </form>
        </td>   
        <td><input type="button" value="Submit" name="submit" /></td> 
    </tr>
<?php
    }
?>

        </tbody>
    </table>



<script>
    var bttns=Array.prototype.slice.call(document.querySelectorAll('input[type="button"][name="submit"]'));
        bttns.forEach(function(bttn){
            bttn.addEventListener('click',function(evt){
                this.parentNode.parentNode.querySelector('form').submit();
            }.bind(bttn),false );
        });
</script>
  • 0
    @urfusion а ссылка для?
  • 0
    Я предлагаю вам внимательно посмотреть на ответ Квентина - он не может быть дочерним элементом таблицы, tbody или tr, но он действителен в ячейке таблицы
Показать ещё 1 комментарий
1

У меня есть несколько предложений:

  1. В вашем файле "php.ini" найдите директиву file_uploads и установите значение On: file_uploads = On
  2. ... </button><!-- <<-- How are you using this? --> </button><!-- <<-- How are you using this? -->
  3. Можно попробовать эхо $ amt; в нижней части цикла, чтобы убедиться, что путь правильный.
  4. Может захотеть проверить, есть ли $ amt с условием IF Empty condition/statement и, возможно, проверить состояние ваших других переменных.

                $email1 = $_SESSION['email'];
                $Vendor_id="SELECT Vendor_id FROM vendors where email = '$email1' ";
                $result=mysqli_query($conn,$Vendor_id);
                $row = mysqli_fetch_row($result);
                $sql = "select Vendor_wallet_id, total_amount, request, amount, status, amt_pdflink from vendor_wallet";
                $query = mysqli_query($conn, $sql);
            ?>
    
                 <form action="upload.php" method="post" enctype="multipart/form-data">
    
              <table id="example1" class="table table-bordered table-striped">
    
                <thead>
                    <tr>
                        <th>Transfer ID</th>
                        <th>Request</th>
                        <th>Amount</th>
                        <th>Status</th>
                        <th>Upload</th>
                        <th>Submit</th>
                    </tr>
                </thead>
                <tbody>
    
                <?php
    
                while ($row = mysqli_fetch_array($query))
                {                                                       
                        $cpid=$row['Vendor_wallet_id'];
                        $tid=$row['request'];
                        $type=$row['amount'];
                        $pays=$row['status'];
                        $amt=$row['amt_pdflink'];
                ?>
    
                        <tr>    
                        <td value="<?php echo $cpid; ?>" name="cpid"><?php echo $cpid;?></td>
                        <td><?php echo $tid;?></td>
                        <td><?php echo $type;?></td>
                        <td><?php echo $pays;?></td>    
                        <td><input type="file" value="<?php echo $amt;?>" name="fileToUpload" id="fileToUpload" ></td>  
                        <td><input type="submit" value="Submit" name="submit" >
                        </button> <!-- WHY IS THIS HERE? -->
                        </td></tr>
    
            <?php 
    
                echo $amt; //See if it is correct path
    
            }//END WHILE ?>
    
          </tbody>
         </table>
      </form>
    
-1

Похоже, вы хотите сделать форму за строку.

<tr>    
    <td value="<?php echo $cpid; ?>" name="cpid"><?php echo $cpid; ?></td>
    <td><?php echo $tid; ?></td>
    <td><?php echo $type; ?></td>
    <td><?php echo $pays; ?></td>   
    <td colspan="2">
       <form action="upload.php" method="post" enctype="multipart/form-data">
         <input type="hidden" name="Vendor_wallet_id" value="<?php echo $cpid;?>" />
         <input type="file" value="<?php echo $amt; ?>" name="fileToUpload" />
         <button>Submit</button>
       </form>
    </td>
</tr>
</form>

и удалите <form> который обертывает таблицу

  • 0
    Это было бы неправильно - форма не может быть дочерней по отношению к таблице, если она полностью не находится в ячейке таблицы td - она не может охватывать строку таблицы, подобную этой
  • 0
    @RamRaider Я знаю, что я не прав. Но мне все равно, как правильно обернуть строку формой. Владелец вопроса хочет загрузить файл на каждый кошелек. И есть 2 способа: 1. Сделать имя поля ввода для представления массива fileToUpload[<?=$cpid?>] 2. fileToUpload[<?=$cpid?>] каждую строку кнопкой « fileToUpload[<?=$cpid?>] потому что она находится в другом столбце. Я знаю, что вы можете сообщить нам js и обработать прослушиватель событий, а затем отправить его в одноранговый каталог TD> FORM. Но мой ответ - минимизировать использование js. На самом деле браузер хорошо справляется с моим примером.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню