Avatar billede hipermedia Nybegynder
28. april 2005 - 14:39 Der er 8 kommentarer og
1 løsning

skriver for mange gange til DB.

Skal kun sætte ind i databasen hvis den ikke eksistere, men det gør den ikke, den skriver ind selvom den eksistere, er der nogle der kan se problemet





-----------------------------------------------------
<?php
$conn_string = "host=localhost port=5432 dbname=db_01 user=demo password=";
$dbconn = pg_connect($conn_string) or die("Could not connect to database");

$demo = $_GET['film'];
$file_array=file("//mappe1/1ex_300/der/$demo");

$status = 0;

for ($y = 0; $y < count($file_array); $y++){
    $row=trim(current($file_array));
    if ($row<>"")
    {
        $dividedtext = explode(";",$row);
        //  echo(count($dividedtext));
        $new_row['Reg_nr'] = trim($dividedtext[0]);
        $new_row['Title'] = trim($dividedtext[1]);
        $new_row['Actors'] = trim($dividedtext[2]);
        $new_row['Genre'] = trim($dividedtext[3]);
        $new_row['Director'] = trim($dividedtext[4]);
        $new_row['Time'] = trim($dividedtext[5]);

        $name = $new_row['Title'];
        $director = $new_row['Director'];
        $media_time = $new_row['Time'];
        $genre = $new_row['Genre'];
        $reg_nr = $new_row['Reg_nr'];

        //echo "$name - $director - $media_time - $genre - $reg_nr <br>";

        $final_array[]=$new_row;
    }
    next($file_array);



    $sql_guery = pg_query("SELECT name FROM test.titles") or die ("pgSQL error");
                  while ($row1 = pg_fetch_array($sql_guery)) {
                          $old_t_name = $row1["name"];
                          if($name != $old_t_name){
                                      echo "1";
                                      $status = 1;
                                      }else{
                                            echo "0";
                                            $status = 0;
                                            }
                          }
                          echo "$name<br>";

    if($status == 1){
            $sql_guery_add = pg_query("INSERT INTO test.titles (name,category_id,studio_id,director_id,playtime,genre_id,\"fileName\")
                                                        VALUES ('$name',8,0,12,0,5,'$reg_nr')") or die ("pgSQL error at add actors");
            }else{
                  echo "Skriver ikke denne film: $name til databasen<br>";
                  }

}
pg_close($dbconn);
//------printer indholdet af dit arraay ud til test brug
echo("<PRE>");
print_r($final_array);
echo("</PRE>");
?>
Avatar billede erikjacobsen Ekspert
28. april 2005 - 14:43 #1
Du skal nok lave den her

  $sql_guery = pg_query("SELECT name FROM test.titles") or die ("pgSQL error");
                  while ($row1 = pg_fetch_array($sql_guery)) {
                          $old_t_name = $row1["name"];
                          if($name != $old_t_name){
                                      echo "1";
                                      $status = 1;
                                      }else{
                                            echo "0";
                                            $status = 0;
                                            }

om til

  $sql_guery = pg_query("SELECT name FROM test.titles") or die ("pgSQL error");
          $status = 0;
              while ($row1 = pg_fetch_array($sql_guery)) {
                          $old_t_name = $row1["name"];
                          if($name != $old_t_name){
                                      echo "1";
                                      $status = 1;
                                      }else{
                                            echo "0";
                                            }
Avatar billede erikjacobsen Ekspert
28. april 2005 - 14:46 #2
Eller måske rettere
 
  $sql_guery = pg_query("SELECT name FROM test.titles") or die ("pgSQL error");
          $status = 1;
              while ($row1 = pg_fetch_array($sql_guery)) {
                          $old_t_name = $row1["name"];
                          if($name == $old_t_name){
                                      echo "1";
                                      $status = 0;
                                      }

men du burde i stedet for overveje en ændret sql-sætning sådan ca...

"SELECT name FROM test.titles where name='$name'"
Avatar billede hipermedia Nybegynder
28. april 2005 - 14:48 #3
det gør ikke rigtig nogen forskel
Avatar billede erikjacobsen Ekspert
28. april 2005 - 14:55 #4
Det er nok korrekt. Du skal rykke INSERT-sætningen ud af din while-løkke. Men det var egentlig kun for at forklare hvad du gjorde galt. Du skal ændre sql-sætningen som skitseret.
Avatar billede hipermedia Nybegynder
28. april 2005 - 15:04 #5
der er flere ting der skal sættes ind, hvis jeg rykker den ud, skriver jo kun den sidste ind.
Avatar billede erikjacobsen Ekspert
28. april 2005 - 15:08 #6
Den står jo også uden for whilesætningen. Så burde det vel virke. Men lad det ligge,
og lav sql-sætningen om som foreslået.
Avatar billede hipermedia Nybegynder
25. november 2005 - 18:40 #7
Det er ikke aktuelt mere, men tak for hjælpen. Smid et svar hvis du vil have point.
Avatar billede erikjacobsen Ekspert
25. november 2005 - 18:41 #8
nej tak
Avatar billede hipermedia Nybegynder
27. november 2005 - 00:25 #9
så lukker vi.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester