2010-09-23 5 views
0

У меня есть код для проверки дубликатов в db перед отправкой данных, но оператор, который у меня есть, не работает. если найден дубликат, сообщение возвращается в форму. однако он не работает, и я уверен, что это связано с неправильными утверждениями else, которые находятся в нижней части файла. предположим, что все соединения работают. где ошибка? Большое спасибоинструкция else, не отображающая данные

<?php 
$array = split('[,]', $_POST['fileno']); 

if (isset($_POST['submit'])) { 
    foreach ($array as $fileno) { 
     if ($fileno == '' && $box == '') 
      { 
       echo '<div style="background-color:#ffa; padding:2px; color:#ff0000;font-size:12px;font-weight:normal">' . 'You must incude a box and a file' . '</div>'; 

      } 
     elseif ($fileno == '') 
      { 

       echo '<div style="background-color:#ffa; padding:2px; color:#ff0000;font-size:12px;font-weight:normal">' . 'You must enter a file reference' . '</div>'; 
      } 
     elseif ($box == '') 
      { 
       //echo error; 
       echo '<div style="background-color:#ffa; padding:2px; color:#ff0000;font-size:12px;font-weight:normal">' . 'You must enter a box' . '</div>'; 
      } 
     else 
      { 
       $sql = "SELECT custref FROM files WHERE custref = '$fileno' "; 
       $result = runSQL($sql) or die(mysql_error()); 
       if (mysql_num_rows($result)>0){ 
        echo '<div style="background-color:#ffa; padding:2px; color:#ff0000;font-size:12px;font-weight:normal">' . $fileno . ' is already in the database. No duplicates' . '</div>'; 

       } 
       $sql = "SELECT custref FROM boxes WHERE custref = '$box' "; 
       $result = runSQL($sql) or die(mysql_error()); 
       if (mysql_num_rows($result)>0){ 
        echo '<div style="background-color:#ffa; padding:2px; color:#ff0000;font-size:12px;font-weight:normal">' . $box . ' is already in the database. No duplicates' . '</div>'; 
       } 

       else 
        { 
         //insert into db; 
         echo '<div style="background-color:#ffa; padding:2px; color:#33CC33;font-size:12px;font-weight:normal">' . $fileno . "Box: " . $box . $authorised . 'Successfull' . '</div>'; 
         $sql = "INSERT INTO `files` (customer, authorisation, boxstatus, boxref, custref, filestatus) VALUES ('$customer', '$authorised', '$boxstatus', '$box', '$fileno', $filestatus)"; 
         $result = runSQL($sql) or die(mysql_error()); 
         //echo 'This record is valid'; 
         //header("Location: http://localhost/sample/admin/files/index.php"); 
         //exit(); 
        } 
      } 
    } 
} 
?> 
+1

код формирования ;-( – Svisstack

+0

Я предположил, что «не работает» означает, что вы не видите, является уникальной записью, которая записывается в базу данных? Потому что неясно, что вы на самом деле спрашиваете. –

+0

1) используйте empty() to chek, если varriable пуст 2) Вы получаете какие-либо ошибки? нет? поверните display_errors на – Aviatrix

ответ

0

Пожалуйста, проверьте ли подходят в этом разделе: -

// Some logic 
if (...) { 
    // some more logic 
} 
... 
elseif ($box == '') { 
    //echo error; 
    echo '<div style="background-color:#ffa; padding:2px; color:#ff0000;font-size:12px;font-weight:normal">' . 'You must enter a box' . '</div>'; 
} 
else { 
    echo 'check it here please'; 
    // some more logic 
} 
... 

Надеется, что это помогает.

+0

знания. все работает до: –

+0

elseif ($ box == '') { // ошибка эха; echo '

' . 'You must enter a box' . '
'; } –

+0

frank -> если найден дубликат, возвращается в форму –

0

Положите несколько эхо-сигналов для проверки значений:

foreach ($array as $fileno) { 
    echo "fileno='$fileno' , box='$box'<br>"; 
    ...... 

затем в каждом блоке, если/ElseIf

echo "i'm running line : ",__LINE__,"<br>"; 

Что вы получите?

+0

правильные результаты, которые вводятся в форму. –

+0

Не могли бы вы нас, отредактировать свой вопрос, какое сообщение об ошибке у вас есть и что отображать эхо-сигналы? – Toto

0

Вам следует попробовать использовать exit();/die(); в ваших эхо-ошибках (не лучший способ обработки ошибок!) - try exceptions out) вместо инкапсуляции зависимого кода в другом. Я подозреваю, что это может исправить вашу проблему, поскольку вы только проверяете, чтобы добавить строку к одному из ваших операторов ошибок.

+0

извините. Я не понимаю вашего ответа. –

+0

Хорошо ... без большого блока кода здесь: Ваш последний оператор else только в ответ на единственную строку if перед ней, которая проверяет наличие дубликатов. Он не включает в себя первые дубликаты файлов. Вот почему я сказал, что полностью удалить инструкцию else в конце и иметь те два оператора if, что эхо-дубликаты сообщений об ошибках имеют die() или exit() внутри них, поэтому код ниже просто не запускается, а не запускает его внутри else. Я отредактирую свой основной пост, когда снова появлюсь, чтобы показать вам пример кода, что я имею в виду. –

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