Prüfen, ob Datensatz vorhanden (schon wieder)

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Prüfen, ob Datensatz vorhanden (schon wieder)

    moin, moin
    ich bins schon wieder einmal. Ich hab nun den ganzen Tag gesucht und verzweifel langsam. Mein Problem: ich übertrage Daten von einer CSV-Datei in eine Datenbank. Nun möchte ich, dass mein Script vorher prüft, ob der Datensatz schon vorhanden ist oder nicht. Es sollen nur die Datensätze eingetragen werden, die noch nicht in der Datenbank sind. Ich hab es mit folgendem Script versucht:
    PHP Code:
    <?php
    $datei
    =fopen($db_File,"r");
    $daten=fread($datei,filesize($db_File));
    fclose($datei);
    $datensaetze=explode("\n",$daten);
    $result array_unique ($datensaetze);
    mysql_connect($db_Hostname$db_UserName$db_Password) || die("Can't Connect to Database: ".mysql_error());
    mysql_select_db($db_Database) || die("FEHLER ".mysql_error());
    for(
    $i=1;$i<sizeof($result);$i++) 
    {    
        
    $result[$i]=str_replace('"','',$result[$i]);
        
    $result[$i]=str_replace(',','.',$result[$i]);
        
    $datenfeld[$i]=explode(";",$result[$i]);
        
    $suchen mysql_query ("SELECT nummer FROM partner_clean WHERE `nummer` !='.$datenfeld[$i][0].' 
            AND partner_id='adbutler'"
    )|| die("FEHLER ".mysql_error());
        if (!
    $suchen
        {
            
    $eintrag "INSERT INTO partner_clean (nummer, programm, datum, id_kunde, betrag, k_status, partner_id) 
            VALUES('"
    .$datenfeld[$i][0]."','".$datenfeld[$i][1]."','".$datenfeld[$i][2]."','".$datenfeld[$i][3]."',
                   '"
    .$datenfeld[$i][4]."','".$datenfeld[$i][5]."','adbutler')";
            
    $eintragen mysql_query($eintrag);
            
        }
        else
        {
            echo 
    "Schon vorhanden";
        }
    }
    $sql mysql_query ("UPDATE partner_clean SET k_status='offen' where k_status='best„tigt' AND partner_id='adbutler'");
    $sql mysql_query ("DELETE FROM partner_clean WHERE k_status ='' AND partner_id = 'adbutler'");
    $sql mysql_query ("DELETE FROM partner_clean WHERE k_status !='offen' AND partner_id='adbutler'");
    $typ1 mysql_query ("UPDATE partner_clean SET typ='oA' where typ='' AND partner_id='adbutler'");
    mysql_close();
    ?>
    Es kommen keine Fehlermeldungen. Er meldet mir viermal, schon vorhanden, obwohl die Datensätze noch nicht in der Datenbank sind. Kann mir vielleicht jemand einen Hinweis geben, wo mein Fehler liegt?

    Gruß Stoner

  • #2
    PHP Code:
    $suchen mysql_query ("SELECT nummer FROM partner_clean WHERE `nummer` !='.$datenfeld[$i][0].' 

            AND partner_id='adbutler'"
    )|| die("FEHLER ".mysql_error());
    if (!
    $suchen
    suchen ist immer true?
    Die Zeit hat ihre Kinder längst gefressen

    Comment


    • #3
      okay, das war der erste Fehler, es muss heissen:
      PHP Code:
      $suchen mysql_query ("SELECT nummer FROM partner_clean WHERE `nummer` ='.$datenfeld[$i][0].' AND partner_id='adbutler'"
      Aber auch dann funzt es nicht..
      ......
      Nee, $suchen ist nicht immer true, d.h. es kann sein, dass der Datensatz nicht da ist, dann ist $suchen=false (oder hab ich das falsch verstanden?)

      Wenn ich dann schreibe;
      PHP Code:
      if ($suchen=false).... 
      schreibt er aber auch nix in die Datenbank

      Gruß Stoner

      Comment


      • #4
        dann ist $suchen=false (oder hab ich das falsch verstanden?)
        letzteres, ...? ich glaub des query ist immer true, wenns richtig ausgeführt wird, sonst bräuchstest ja kein or die(), mußt schon fetchen (oder num_rows), um nen false zu kriegen, ... könnte aber sein, daß ich mir irre, keene lust, nachzuschauen ...

        Wenn ich dann schreibe;
        PHP Code:
        if ($suchen=false).... 
        schreibt er aber auch nix in die Datenbank
        ja, wenn du suchen den wert false zuweist, sollte suchen dann false sein, was du mit
        PHP Code:
        if ($suchen==false).... 
        überprüfen könntest ... oder auch
        PHP Code:
        if (!$suchen).... 
        Die Zeit hat ihre Kinder längst gefressen

        Comment


        • #5
          lol, nun ist das Problem andersrum:
          PHP Code:
          for($i=1;$i<sizeof($result);$i++) 
          {    
              
          $result[$i]=str_replace('"','',$result[$i]);
              
          $result[$i]=str_replace(',','.',$result[$i]);
              
          $datenfeld[$i]=explode(";",$result[$i]);
              
          $suchen "SELECT * FROM partner_clean WHERE nummer ='.$datenfeld[$i][0].' AND programm = '.$datenfeld[$i][1].' ";
              
          $search mysql_query($suchen);
              if(
          mysql_num_rows($search) > 0)
              {
                  echo (
          "Schon vorhanden<br>");
              }
              else
              {
                  
          $eintrag "INSERT INTO partner_clean (nummer, programm, datum, id_kunde, betrag, k_status, partner_id) 
                  VALUES('"
          .$datenfeld[$i][0]."','".$datenfeld[$i][1]."','".$datenfeld[$i][2]."','".$datenfeld[$i][3]."',
          '"
          .$datenfeld[$i][4]."','".$datenfeld[$i][5]."','adbutler')";
                  
          $eintragen mysql_query($eintrag);
              }

          nun trägt das Script alles ein, aber auch, wenn die Datensätze schon vorhanden sind. Ich werd noch zum Elch. Was mach ich denn nu falsch?

          Gruß Stoner

          Comment


          • #6
            PHP Code:
                $suchen "SELECT * FROM partner_clean WHERE nummer ='.$datenfeld[$i][0].' AND programm = '.$datenfeld[$i][1].' ";
            echo 
            $suchen
            schau mal aufs highlighting
            PHP Code:
                $suchen "SELECT * FROM partner_clean WHERE nummer =".$datenfeld[$i][0]." AND programm = ".$datenfeld[$i][1]." ";
            echo 
            $suchen
            sind die felder numerisch? sonst
            PHP Code:
                $suchen "SELECT * FROM partner_clean WHERE nummer ='".$datenfeld[$i][0]."' AND programm = '".$datenfeld[$i][1]."' ";
            echo 
            $suchen
            jetzt?
            Die Zeit hat ihre Kinder längst gefressen

            Comment

            Working...
            X