Как получить и назначить данные для каждой строки

#php #mysql

#php #mysql

Вопрос:

Итак, что я пытаюсь сделать, это получить данные из базы данных и назначить их для каждого процесса, чтобы позволить пользователю редактировать их. Вот как я хочу, чтобы это выглядело: [прикрепленное изображение][1]

Но то, что я получаю, находится [здесь] [2]. Итак, как вы можете видеть, это неоднократно отображается в обоих процессах. Итак, чтобы получить данные и назначить их каждому процессу, я делаю это:

 <div class="procLeader">
<div class="ui-widget-content">
<label>Leader:</label>  
  <ol>
    <li class="placeholder" name="procLeader[]"><div class="adding">Add Process Leader here</div></li>                          
    <?php   
        $result4 = getProcessLeader($projectNo);
        if (!$result4) {
            die('Invalid query: ' . mysqli_error($conn));
        }   
        while($row4 = mysqli_fetch_array( $result4))
        {  
            $procL[] = $row4['process'];
            $procLeader[] = $row4['proc_leader'];
        }

        foreach( $procL as $proc => $eq ) 
        {
            $leader = $procLeader[$proc];
            echo "<li class='dropClass'><span class='closer'>x</span>".$leader."</li>";                                 
        }                           
    ?>
    </ol>
</div>
</div>
  

И getProcessLeader функция:

 function getProcessLeader($projectNo){
    global $con;    
    $sql = "SELECT * FROM `proc_leader` WHERE projectNo='$projectNo' ";
    return mysqli_query($con, $sql);
}   
  

Итак, как я могу назначить каждого человека точно для процесса? Спасибо

Редактировать

После использования only while у меня все еще возникла проблема с отображением имен для каждого процесса:Теперь это выглядит так

 <div class="procLeader">
<div class="ui-widget-content">
<label>Leader:</label>  
  <ol>
    <li class="placeholder" name="procLeader[]"><div class="adding">Add Process Leader here</div></li>                          
    <?php   
        $result4 = getProcessLeader($projectNo);
        if (!$result4) {
            die('Invalid query: ' . mysqli_error($conn));
        }   
        while($row4 = mysqli_fetch_array( $result4))
        {  
            $procL[] = $row4['process'];
            //$procLeader[] = $row4['proc_leader'];

            echo "<li class='dropClass'><span class='closer'>x</span>".$row4['proc_leader']."</li>";
        }

    ?>
    </ol>
</div>
</div>
  

Но мне нужно это

Комментарии:

1. ПРЕДУПРЕЖДЕНИЕ : При использовании mysqli вы должны использовать параметризованные запросы и bind_param добавлять пользовательские данные в свой запрос. НЕ используйте интерполяцию строк или конкатенацию для выполнения этого, потому что вы создали серьезную ошибку SQL-инъекции . НИКОГДА не помещайте данные $_POST или $_GET непосредственно в запрос, это может быть очень вредным, если кто-то попытается воспользоваться вашей ошибкой.

Ответ №1:

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

 while($row4 = mysqli_fetch_array($result4)){  
    echo "<li class='dropClass'><span class='closer'>x</span>".$row4['proc_leader']."</li>";
}
  

Комментарии:

1. Это решило проблему за одно повторение. Но он по-прежнему выводит оба имени для каждого процесса. Пожалуйста, смотрите edit. Спасибо

2. У вас должен быть другой цикл, который переносит то, что вы опубликовали?

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

4. Нет, я имею в виду, у вас есть цикл, который оборачивает это? Вы должны, потому что в вашем сообщении у вас есть <label>Leader:</label> один раз в html, но на вашей фотографии у вас есть две из этих меток.

5. Да, это цикл. Хорошо, итак, это двухэтапная форма, первая форма позволяет пользователю выбирать количество процессов, вторая форма позволяет пользователю назначать людей для каждого процесса. После отправки формы, если пользователь хочет отредактировать проект и нажать кнопку редактирования, я хочу отобразить эту форму с назначенными процессами и людьми внутри нее. Моя проблема в том, что система отображает все присвоенные имена для каждого процесса. даже если люди назначены для разных процессов. Он просто отображает все данные из таблицы базы данных