2014-01-02 4 views
0

У меня небольшая проблема с приведенными ниже кодами. Когда я использую name="staff_number[]", тогда он вставляет запись со всем окном, даже если он уже находится в таблице базы данных, и когда я использую name="staff_number", он проверяет запись, а также дает мне окно с предупреждением, но при вставке записи, если она отсутствует в базе данных он хранит только первое число сотрудников, например, штат № 12345, он хранит только 1. может ли кто-нибудь помочь в этой записи, я думаю, что есть только незначительная проблема, что я не могу разобраться.php mysql проблема с проверкой, существует ли запись перед вставкой

PHP код:

<select placeholder='Select' style="width:912px;" name="staff_number[]" multiple /> 
<?php 
$query="SELECT * FROM staff"; 
$resulti=mysql_query($query); 
while ($row=mysql_fetch_array($result)) { ?> 
<option value="<?php echo $row['staff_no']?>"><?php echo $row['staff_name']?></option> 
<?php } ?> 
</select> 

Mysql Код:

$prtCheck = $_POST['staff_number']; 
$resultsa = mysql_query("SELECT * FROM staff where staff_no ='$prtCheck' "); 
$num_rows = mysql_num_rows($resultsa); 
if ($num_rows > 0) { 
echo "<script>alert('Staff No $prtCheck Has Already Been Declared As CDP');</script>"; 
$msg=urlencode("Selected Staff ".$_POST['st_nona']." Already Been Declared As CDP"); 
echo'<script>location.href = "cdp_staff.php?msg='.$msg.'";</script>'; 
} 

Вставка запросов

$st_nonas = $_POST['st_nona']; 
$t_result = $_POST['st_date']; 
$p_result = $_POST['remarks']; 
$arrayResult = explode(',', $t_result[0]); 
$prrayResult = explode(',', $p_result[0]);  $arrayStnona = $st_nonas; 
$countStnona = count($arrayStnona); 


for ($i = 0; $i < $countStnona; $i++) { 
    $_stnona = $arrayStnona[$i]; 
    $_result = $arrayResult[$i]; 
    $_presult = $prrayResult[$i]; 

    mysql_query("INSERT INTO staff(st_no,date,remarks) 
     VALUES ('".$_stnona."', '".$_result."', '".$_presult."')"); 
    $msg=urlencode("CDP Staff Has Been Added Successfully"); 
    echo'<script>location.href = "cdp_staff.php?msg='.$msg.'";</script>'; 
} 
+0

Можете ли вы сделать свой вопрос более понятным. – Amit

+0

Я не вижу частей вставки ... – Peon

+0

@amit, что вы хотите, чтобы я очистил ??? Я столкнулся с проблемой, что, когда я использую массив для staff_number [], запрос, чтобы проверить, существует ли запись или нет, не работает. но когда я использую man_number, запрос работает нормально, но когда я нажимаю кнопку «Добавить», он сохраняет только первое число номера персонала ... – Malangi

ответ

3

Ваш $_POST['staff_number'] на самом деле является array.

Таким образом, вы должны получить к нему доступ, как $_POST['staff_number'][0] здесь, 0 - номер индекса.

+0

Спасибо большое за ваш ответ.PLZ сказать мне одну вещь, только когда запускается запрос вставить, он не вставляет записи, которые не находятся в базе данных. – Malangi

1

Если имя выберите Я s staff_number [], тогда $ prtCheck будет массивом, поэтому ваш запрос проверки должен быть в цикле, чтобы убедиться в вашем состоянии проверки.

Если имя staff_number, то нижеследующий код в порядке.

+0

Не могли бы вы привести пример с моим кодом? – Malangi

0

Ответ на вопрос, но я завершу его.

Ваша HTML-форма дает вашему PHP массив из-за использования staff_number [] с [], что кажется легитимным с атрибутом «multiple». Итак, вам нужно зациклиться на заданных значениях, вы делаете это с помощью и для множества бесполезных переменных, не проверяя их. С давних времен у нас есть структура цикла FOREACH.

Я мог бы помочь вам больше, если бы я знал, что такое значения 'st_nona', st_date 'и' remarks '.

+0

st_date - это поле для выбора нескольких дат, а st_nona - персональный номер выбранного пользователя – Malangi

0

По вашему вопросу у вас возникли трудности с хранением данных. Этот вопрос связан с массивом $ _POST.

Как и ваш вопрос, мы выбрали следующие идентификаторы из списка: 1,2,3,4 Это только сохранение 1. Это связано с тем, что вы не использовали цикл при вставке данных. Как показано ниже:

<?php 
foreach($_POST['staffnumber'] as $staffnumber){ 
$query=mysql_query("select * from staff where staff_number =".$staffnumber); 
if(mysql_num_rows($query)>0){ 
//action you want to perform 
}else{ 
//action you want to perform like entering records etc. as your wish 
} 
} 
?> 

И я хотел бы предложить вам, что использование уникальных ключей в базе данных для поля и использовать PHP PDO для базы данных, так как он является безопасным и лучше всего подходит для Упса. Дайте мне знать, если у вас есть какие-либо вопросы.

Смежные вопросы