2010-10-18 6 views
0

J'ai une base de données remplie d'ID d'employé et de noms d'employés correspondants pour chaque ID d'employé. Existe-t-il un moyen que je peux rechercher un tableau pour les ID d'employé de la base de données? Google ne m'aide pas, je pense parce que je ne suis pas sûr de savoir comment formuler ma recherche.Tableau de recherche des valeurs de la base de données

Mon idée est d'avoir quelque chose comme, array_search ($ empID, $ currentArray). Et puis bouclez chaque ID d'employé de la base de données et comparez-le $ currentArray? Je doute que ce soit le moyen le plus efficace, mais j'apprends encore et toute aide serait appréciée. Si quelqu'un est prêt à prendre le temps de m'aider avec cela, je peux poster plus d'informations nécessaires. Merci!

Modifier ici est mon code si quelqu'un est intéressé:

<?php 

//this variable tells us how many drupal nodes or 'paystub pages' we need to create 
$nodeCount = 0; 
$i = 0; 

//needed for creating a drupal node 
//for this code to work this script must be run from the root of the drupal installation 
require_once './includes/bootstrap.inc'; 
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); 

if ($handle = opendir('/var/www/html/pay.mistequaygroup.com/upload')) 
{ 

    /* This is the correct way to loop over the directory. */ 
    while (false !== ($file = readdir($handle))) 
    { 
     if ($file != "." && $file != "..") 
     { 
      $nodeCount++; 
      //We convert the pdf documents into text documents and move put them in the converted folder 
      $command = "pdftotext /var/www/html/pay.mistequaygroup.com/upload/" . $file . " /var/www/html/pay.mistequaygroup.com/upload/converted/" . $file . ".txt"; 
      //Execute the command above 
      $output = exec($command); 

      //mark all the spots that TO THE ORDER OF shows up 
      //echo array_search("TO THE ORDER OF", $currentArray); 

      //echo $userName; 


      //extract the employees name 


      //print_r($currentArray); 
      //echo '<pre>'; 
      //echo array_search("DATE AMOUNT", $currentArray); 
      //echo '</pre>'; 

     }  
    }   
    closedir($handle);   
} 

//subtract two because the folders "array" and "converted" are included because PHP does not differentiate 
//between folders and files 
$nodeCount = $nodeCount - 2; 

echo "<br />"; 
echo "I counted $nodeCount pdf files"; 
echo "<br />"; 

//open the directory 
if ($handle2 = opendir('/var/www/html/pay.mistequaygroup.com/upload/converted')) 
{ 
    //check to see if we have reached the last file of our directory, if not stay in loop 
    while (false !== ($currentText = readdir($handle2))) 
    { 
     //filter out files named . and .. 
     if ($currentText != "." && $currentText != "..") 
     { 
       //Create a file for array to be printed to 
       $createArray = fopen("/var/www/html/pay.mistequaygroup.com/upload/arrays/" . $currentText . ".txt", "w+") or die ("Cannot find file to create array, ID 2"); 


       //read the file we are on from the loop into the array 
       $currentArray = file("/var/www/html/pay.mistequaygroup.com/upload/converted/" . $currentText, FILE_SKIP_EMPTY_LINES) or die ("Cannot find file to create array, ID 1"); 

       //$countArray = array_search(". . . . . . . . . .", $currentArray); 

       //echo $countArray; 

       //print array to .txt file for debugging purposes 
       $out = print_r($currentArray, true); 
       fwrite($createArray, $out); 
       fclose($createArray); 


       //Loop? 
      array_search($empID, $currentArray); 

      //need to loop through the array we are on, looking for numbers that match the employee ID's 
      //OR we might have to search for names within a string of text and then get the corresponding ID for that user from the database? 

      //brainstorming 
       $query = SELECT * FROM `profile_values` WHERE `fid` = 2 AND `value` = $employeeID; 



       //DOES NOT WORK AS EXPECTED 
       $indexEmpid = 0; 
       foreach ($currentArray as $value) 
       { 
        //set the value to 28 and it doubles each time the loop runs so there is no need to add 28 each time 
        //every 28th index in our array is an employee id 
        $indexEmpid = $indexEmpid + 28; 
        $currentEmployeeID = $currentArray[$indexEmpid]; 
        echo "<br />"; 
        echo "Employee ID's found: $currentEmployeeID"; 
       //echo "Employee ID's found: $currentArray[$indexEmpid]"; 
       echo "<br />"; 
       echo "IndexEmpid: $indexEmpid";    
       } 




     } 
    } 

} 


?> 

Répondre

1

Oui, vous pouvez le faire en utilisant le SQL IN clause comme:

$empIDs = array(1,2,3); 
$query = "SELECT name FROM emp WHERE ID IN (" . implode(',',$empIDs) . ")"; 
+0

Désolé, je n'étais pas assez clair. Ce qui se passe vraiment ici, c'est que j'essaie d'importer des paystubs. Je fais cela en convertissant un fichier PDF en txt puis lire le fichier txt dans un tableau en PHP. Je ne peux pas aller tous les 28 lignes par exemple et obtenir l'ID de l'employé parce que les ID ne sont pas tous les 28e index dans le tableau. Donc, je me suis dit que le meilleur moyen est de rechercher les identifiants. J'ai une base de données drupal chaque nom d'utilisateur a un identifiant d'employé qui lui est associé. Je cherche à rechercher mon tableau qui est le paystub pour un ID d'employé correspondant de ma base de données. Si ça a du sens. – Hus

Questions connexes