2010-09-23 5 views
0

J'ai un code pour vérifier les doublons dans une base de données avant de soumettre les données, mais la déclaration que j'ai ne fonctionne pas. Si un doublon est trouvé, un message est renvoyé au formulaire. Cependant, cela ne fonctionne pas et je suis sûr que cela a à voir avec mes autres déclarations près du bas du fichier étant incorrect. Supposons que toutes les connexions fonctionnent. où est l'erreur? Un grand merciinstruction else ne pas afficher les données

<?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

le formatage du code ;-( – Svisstack

+0

J'ai supposé que "ne fonctionnait pas" signifie que vous ne voyez pas une entrée unique dans la base de données, car vous n'êtes pas sûr de ce que vous demandez réellement –

+0

1) utilisez empty() pour chek si une varriable est vide 2) As-tu des erreurs? non ? tourner display_errors sur – Aviatrix

Répondre

0

S'il vous plaît vérifier si elle vient dans cette section: -

// 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 
} 
... 

Hope it helps.

+0

connaissances. tout fonctionne jusqu'à ici: –

+0

elseif ($ box == '') { // erreur d'écho; echo '

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

+0

frank -> si un doublon est trouvé, un message est retourné au formulaire –

0

Mettez un peu echos pour vérifier les valeurs:

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

puis dans chaque bloc de si/elseif

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

Qu'est-ce que vous obtenez?

+0

les résultats corrects qui sont entrés dans le formulaire. –

+0

Pourriez-vous nous expliquer, en éditant votre question, quel message d'erreur vous avez et ce que les échos affichent? – Toto

0

Vous devriez essayer d'utiliser exit();/die(); dans vos erreurs renvoyées (pas la meilleure façon de gérer les erreurs! - try exceptions out) au lieu d'encapsuler du code dépendant dans un autre. Je suspecte que ceci puisse résoudre votre problème, car vous vérifiez seulement pour ajouter la rangée contre une de vos déclarations d'erreur.

+0

désolé. Je ne comprends pas ta réponse. –

+0

Ok ... sans avoir un gros bloc de code ici: Votre dernière instruction else est seulement en réponse à la ligne single if avant celle qui vérifie une boîte en double. Cela n'implique pas du tout le premier contrôle des doublons de fichiers. C'est pourquoi je disais enlever complètement l'instruction else à la fin et avoir ces deux instructions if si les messages d'erreur en double écho ont die() ou exit() à l'intérieur de sorte que le code ci-dessous n'est pas exécuté au lieu de l'exécuter une autre déclaration. Je vais éditer mon post principal quand je serai de nouveau disponible pour vous montrer un exemple de code de ce que je veux dire. –

Questions connexes