Autor Zpráva
Generation
Profil *
Zdravím mám script níže který mi pomocí CSV updatuje sloupce v db.
Script porovnává existující a následně je updatuje.
Problém nástává když v názvu albumu je např.:
20 Greatest Hits
20 Greatest Hits [Loretta & Conway]
20th Century Masters - The Christmas Collection - The Best Of Loretta Lynn

Prostě je to neupdatuje.

Myslím že budu mít problém v ošetření ale nevím přesně kde.
Můžete mi někdo prosím poradit?
Děkuji

Script:
<?php
    

    if (isset($_FILES['fupload']))
    {
  $slozka = "csv"; // Zde si napi‘te svojí složku, do které se budou soubory ukádat (bez lomítka)
    $cil = $slozka . "/" .$_FILES['fupload']['name']; // Toto je proměnná $cil, která obsahuje adresář, kde se má soubor uploadovat a taky název souboru.
    $nazev_souboru = $_FILES['fupload']['tmp_name']; // Zjistí dočastné umístění souboru
    $copy = move_uploaded_file($nazev_souboru, $cil) // A tady zkopíruje soubor z dočastného umístění do cílového souboru a složky
      or die ("Přenesený soubor nelze zkopírovat"); // A pokud se nepovede, tak vypí‘e tuto hlá‘ku
    chmod ($cil, 0777); // Je‘tě na soubor vyhodíme funkci chmod, která změní jeho práva na maximum, pokud by soubor psal chybu změňte 0644 na 0777
// do této chvíle se řešil upload souboru 
    if($copy == true)    //pokudp roběhl uspěšně zapisujeme do databáze
    
    {
    include "settings.php"; 
     $stats="albums";
     
     $filename=$cil;

     $handle = fopen("$filename", "r");

     while (($data = fgetcsv($handle, 1000, '*')) !== FALSE)    // cyklus který prochází jednotlivé řádky CSV souboru

  {
 // tu se dívám do databáze jeslti daný Album už v databázi existuje.
    $exist_album = mysql_result(mysql_query("SELECT Album, Albumartist FROM $stats  WHERE `Album`='".addslashes(($data[0])."' AND 'Albumartist' = '$data[1]'"), 0);
//Existuje, uděláme update
    if($exist_album==0) {

    $import="UPDATE $stats SET Web='$data[2]' WHERE `Album`='".addslashes(($data[0])."'  AND 'Albumartist' = '$data[1]'";
    mysql_query($import) or die(mysql_error());
      echo $import.'<br />';

        } else {
        echo'chyba- neexistující album<br />';
        }
    
   }
     fclose($handle);

     print "<br />Linky úspěšně změněny";}
     
  }
?>
juriad
Profil
1) Na addslashes zapomeň. Použij mysql_real_escape_string.
2) Každý vstup musíš escapovat, nikoli jen některé z nich.
3) Máš na 27. a 31. řádku nadbytečnou otevírací závorku.
4) Albumartist nemá být v apostrofech, ale ve zpětných apostrofech. A nebo tam nemusí být vůbec nic, protože Albumartist není klíčové slovo v MySQL.

    $import = "UPDATE $stats 
SET Web = '" . mysql_real_escape_string($data[2]) . "' 
WHERE Album = '" . mysql_real_escape_string($data[0]) . "' 
  AND Albumartist = '" . mysql_real_escape_string($data[1]) "'";

Mimochodem, ten dotaz na 27. řádku vůbec není nutný. Pokud album neexistuje, tak update vůbec nic neudělá.

Ten kód, který jsi sem dal nemůže vůbec fungovat.
Generation
Profil *
v Albumartist se může nacházet i: Loretta Lynn & Conway Twitty
To je možné že to s tím má také něco společného.


juriad:
Funguje až na to co píši zde že neupdatuje ty názvy kde je číslo či speciální znak.

Nyní to je takto a stejně to nezapíše:
  {
 // tu se dívám do databáze jeslti daný Album už v databázi existuje.
    $exist_album = mysql_result(mysql_query("SELECT Album, Albumartist FROM $stats  WHERE Album='" . mysql_real_escape_string($data[0]) . "' AND Albumartist = '" . mysql_real_escape_string($data[1]). "'"), 0);
//Existuje, uděláme update
    if($exist_album==0) {

    $import="UPDATE $stats SET Web='" . mysql_real_escape_string($data[2]) . "' WHERE Album='" . mysql_real_escape_string($data[0]) . "'  AND Albumartist = '" . mysql_real_escape_string($data[1]). "'";
    mysql_query($import) or die(mysql_error());
      var_dump ( $import.'<br />');

        } else {
        echo'chyba- neexistující album<br />';
        }
    
   }
var_dump vypíše:
 " string(188) "UPDATE albums SET Web='https://mega.nz/#!thRFwBqQ!n6sA2ArRbafxkox17EuATqFPEhnc4m71H7ZYXUAwT0k' WHERE Album='Two\'s A Party And More' AND Albumartist = 'Loretta Lynn & Conway Twitty'
" string(172) "UPDATE albums SET Web='https://mega.nz/#!RgIgGKgL!ZxwHi8RnEcfvRNPvtDjcgq-j9qtp6D5aqveaprCK6ew' WHERE Album='Making Love From Memory' AND Albumartist = 'Loretta Lynn'
" string(213) "UPDATE albums SET Web='https://mega.nz/#!F1ZyXIwA!8d7LzQpklVXvOqd4mLhkiajLzddd3M5od_Jr3nltVCA' WHERE Album='Lyin\' Cheatin\' Woman Chasin\' Honky Tonkin\' Whiskey Drinkin\'' AND Albumartist = 'Loretta Lynn'
" string(161) "UPDATE albums SET Web='https://mega.nz/#!UlhG3ZQC!rhOEkRHqs10Pk6GnCuTL2-Mc_IWJJ19eAdkHwO7KmAo' WHERE Album='Just A Woman' AND Albumartist = 'Loretta Lynn'
" chyba- neexistující album
string(179) "UPDATE albums SET Web='https://mega.nz/#!NgoChT7I!mboNRuZps9gnbU7s7gzRPYxMO4Es7LhyK88xlKfVQQ8' WHERE Album='Making Believe' AND Albumartist = 'Loretta Lynn & Conway Twitty'
" string(170) "UPDATE albums SET Web='https://mega.nz/#!F94AWSxA!VA_deBsQzzog3kJUaS906qGzVjgOG8_OGQVt9Q2lzbE' WHERE Album='Who Was That Stranger' AND Albumartist = 'Loretta Lynn'
" chyba- neexistující album
string(168) "UPDATE albums SET Web='https://mega.nz/#!pxoDVToI!49H8z2yvYMVWzKTIMh_NuHgQFIAd8mQmP8b-ed3-WYc' WHERE Album='Peace In The Valley' AND Albumartist = 'Loretta Lynn'
" string(182) "UPDATE albums SET Web='https://mega.nz/#!U1IxUYTZ!_UsE-jF6C0aWUXq-jgxCDeh8fAkuQvsjA84gSpJg79E' WHERE Album='Country Music Hall Of Fame Series' AND Albumartist = 'Loretta Lynn'
" string(186) "UPDATE albums SET Web='https://mega.nz/#!Nlx23ChA!ylBhjdWn6ruAcAgZXlQLzrygCvmKTbxCTGOkrkazYwA' WHERE Album='Country Gospel Greats' AND Albumartist = 'Loretta Lynn & Conway Twitty'
" string(179) "UPDATE albums SET Web='https://mega.nz/#!oxpAEC7B!cMk-80_x1yLPFFqUZolPqCly26HcSf4wyqgWqwWtAY0' WHERE Album='Sings Patsy Cline\'s Favorites' AND Albumartist = 'Loretta Lynn'
" string(169) "UPDATE albums SET Web='https://mega.nz/#!BoBigTbA!TYVaQIC79yNlPG2ew3kVlpv0j24ltib2vF804ZYkWKI' WHERE Album='The Old Rugged Cross' AND Albumartist = 'Loretta Lynn'
" string(178) "UPDATE albums SET Web='https://mega.nz/#!ttIE1CyJ!h3NuXXkjFOCe1YljBBs_b_SWcGKS34RMHFlCkosf7WY' WHERE Album='Coal Miner\'s Daughter - Live' AND Albumartist = 'Loretta Lynn'
" string(177) "UPDATE albums SET Web='https://mega.nz/#!dpYyjDYJ!dJJhJbz3B3ym2N6TXp17hgQS_HOmWqe-zRj8Zki-0q8' WHERE Album='Country\'s Favorite Daughter' AND Albumartist = 'Loretta Lynn'
" string(195) "UPDATE albums SET Web='https://mega.nz/#!s0Y1GKyQ!YHSGpZtNVnx6kiA15-ZbZpCchHRiwxYV3TOg3XjCRBE' WHERE Album='Honky Tonk Girl - Collection (3CD Set) Disc 1' AND Albumartist = 'Loretta Lynn'
" string(195) "UPDATE albums SET Web='https://mega.nz/#!s0Y1GKyQ!YHSGpZtNVnx6kiA15-ZbZpCchHRiwxYV3TOg3XjCRBE' WHERE Album='Honky Tonk Girl - Collection (3CD Set) Disc 2' AND Albumartist = 'Loretta Lynn'
" string(195) "UPDATE albums SET Web='https://mega.nz/#!s0Y1GKyQ!YHSGpZtNVnx6kiA15-ZbZpCchHRiwxYV3TOg3XjCRBE' WHERE Album='Honky Tonk Girl - Collection (3CD Set) Disc 3' AND Albumartist = 'Loretta Lynn'
" string(169) "UPDATE albums SET Web='https://mega.nz/#!80hCWIzY!CcKSROrulJpWwkjLhKCtDGDyKh3TB1LJ9AnCH8VEZ7o' WHERE Album='Making More Memories' AND Albumartist = 'Loretta Lynn'
" string(191) "UPDATE albums SET Web='https://mega.nz/#!M9wEjLCQ!OeI_zw_Q5bf_gS-R3ym05kDZkXJDuNUTZvI8x4n4FG8' WHERE Album='Just A Closer Walk With Thee' AND Albumartist = 'Patsy Cline & Loretta Lynn'
" string(201) "UPDATE albums SET Web='https://mega.nz/#!BgQTnbhD!ujYq5Mb_IpIxtWWT88PW9ZDvDlO4grDTN-d30zryw8k' WHERE Album='Sing Their Biggest (2CD Set) Disc 1' AND Albumartist = 'Loretta Lynn & Conway Twitty'
" string(201) "UPDATE albums SET Web='https://mega.nz/#!BgQTnbhD!ujYq5Mb_IpIxtWWT88PW9ZDvDlO4grDTN-d30zryw8k' WHERE Album='Sing Their Biggest (2CD Set) Disc 2' AND Albumartist = 'Loretta Lynn & Conway Twitty'
" chyba- neexistující album
string(164) "UPDATE albums SET Web='https://mega.nz/#!dgZwXBZL!9tVeRNjN9lWNKJ4QoUSNZvojPf6RBRLYH2w_vixpsP8' WHERE Album='Her Gospel Side' AND Albumartist = 'Loretta Lynn'
" string(162) "UPDATE albums SET Web='https://mega.nz/#!ltoRRYpQ!W6A2mpVwVtW-SLgqD-BIzlZbO6I0r4DGtP9aFA6CaGo' WHERE Album='Still Country' AND Albumartist = 'Loretta Lynn'
" chyba- neexistující album
string(171) "UPDATE albums SET Web='https://mega.nz/#!0xI1jBzb!orprm_vixvR69zV-JJQFhZ0aGjnO-0FmZOO2HD3L1uo' WHERE Album='All-Time Greatest Hits' AND Albumartist = 'Loretta Lynn'
" string(192) "UPDATE albums SET Web='https://mega.nz/#!1lIBFKKJ!xzLj09MmVVDj1mBd4AoJSXki5qeLzP2uk4TgH43UFUg' WHERE Album='All Time Gospel Favorites (2CD Set) Disc 1' AND Albumartist = 'Loretta Lynn'
" string(192) "UPDATE albums SET Web='https://mega.nz/#!1lIBFKKJ!xzLj09MmVVDj1mBd4AoJSXki5qeLzP2uk4TgH43UFUg' WHERE Album='All Time Gospel Favorites (2CD Set) Disc 2' AND Albumartist = 'Loretta Lynn'
" string(162) "UPDATE albums SET Web='https://mega.nz/#!R5pxRJiZ!bcRh1ylJzCbxdOIVpE9NCfaXncdk8aUAR8_NNMRqy2o' WHERE Album='Van Lear Rose' AND Albumartist = 'Loretta Lynn'
" chyba- neexistující album
string(209) "UPDATE albums SET Web='https://mega.nz/#!AkQFzSDY!SeD7w23k0QGSAy8JJ_0RgqlZDyiDyZjzeyu-fEmuKhw' WHERE Album='The Definitive Collection [Loretta & Conway]' AND Albumartist = 'Loretta Lynn & Conway Twitty'
" string(174) "UPDATE albums SET Web='https://mega.nz/#!o0IjVSBb!akeC-yAwh2Xdsgwwd1Q1h-OLGRWOHGPK0D0ODIw5HgY' WHERE Album='The Definitive Collection' AND Albumartist = 'Loretta Lynn'
" string(171) "UPDATE albums SET Web='https://mega.nz/#!4t5yARza!F2RF7mI3vqYBeTTRrbPyynQT0wDD3Btib9PahC70BvI' WHERE Album='Gold (2CD Set) Disc 1' AND Albumartist = 'Loretta Lynn'
" string(171) "UPDATE albums SET Web='https://mega.nz/#!4t5yARza!F2RF7mI3vqYBeTTRrbPyynQT0wDD3Btib9PahC70BvI' WHERE Album='Gold (2CD Set) Disc 2' AND Albumartist = 'Loretta Lynn'
" string(195) "UPDATE albums SET Web='https://mega.nz/#!h5IgnLRa!5zispt9NczBFx7US48e7vIyo1xpCJpu-V5ITs489CZY' WHERE Album='Live And Alive - Legends Of The Grand Ole Opry' AND Albumartist = 'Loretta Lynn'
" string(162) "UPDATE albums SET Web='https://mega.nz/#!QhxUCQSR!M6rlEBz7SPEU6t3pCi493byHDmVoM7niZB9oql2ahvA' WHERE Album='Country Queen' AND Albumartist = 'Loretta Lynn'
" chyba- neexistující album
chyba- neexistující album

Linky úspěšně změněny  



Když jsem odmazal to co patřilo k 27 řádku, už to funguje.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: