[ Uros04 @ 07.02.2004. 19:01 ] @
Pozdrav, imam ovakvu strukturu podataka:

"8","Art. 1","KOM","34,51","27,00","20","1",""
"10","Art. 2","KOM","0,00","0,95","1","1",""
"11","Art. 3","KOM","0,00","115,41","6","0",""

ja bih trebao da napisem skript koji ce citati red po red
i dodavati podatke u mysql tabelu.

npr. 8 -> Sifra, Art.1 -> Naziv_art, KOM -> Jed_mere, itd...

Hvala vam unpared!
[ milanvla @ 07.02.2004. 21:32 ] @
trebalo bi da ti ovo obavi posao:

$file = file("ime_fajla.txt");//otvoris fajl
foreach ($file as $line){ //citas red po red
$data = explode(",", $line); //razdvojis na reci
// prvi clan ti je $data[0], a ti ih imas 7 ukupno, tj $data[0],...$data[6]
for($i=0;$i<=6;$i++)$data[$i]=str_replace("\"","",$data[$i]);//ovo ti skida prvi i zadnji znak navoda
//sada upises u bazu
mysql_query("insert into $ime_tabele(polje1,polje2,polje3,polje4,polje5,polje6,polje6) values('$data[0]','$data[1]','$data[2]','$data[3]','$data[4]','$data[5]','$data[6]')");
}
[ dr ZiDoo @ 08.02.2004. 01:18 ] @
Nekidan sam baš napisao skritput koja radi sa baš takvom strukturom fajlova (u mom slučaju OO programa za radi sa tabelama - *.cvs). Moj ne upisuje u SQL nego generiše html file, ali lako se prepraviti:

Code:

<?php

$file = "OOcvs.txt";

$fp = fopen($file, 'r');
if(!$fp)
{
    die("Ne mogu da otvorim file: $fp");
}
else
{
    $con = fread($fp, filesize($file));
    
    $con_red = explode("\n", $con);
    $num_red = count($con_red);
    echo("<table border=\"0\" cellspacing=\"0\" cellpading=\"0\"><tr><td bgcolor=\"#c0c0c0\">");
    echo("<table border=\"0\" cellspacing=\"1\" cellpadding=\"2\">");
    for($i = 0; $i <= $num_red-2; $i++)
    {
        print "\n";
        echo("<tr>");
        $cell = explode(",", $con_red[$i]);
        $numcell = count($cell);
        
        for($n = 0;$n <= $numcell-1; $n++)
        {
            print "\n";
            $brb = "";
            $strg = $cell[$n];
            $strg = ereg_replace('"', $brb, $strg);
            echo("<td align=\"center\" bgcolor=\"#FFFFFF\">$strg</td>");
            
        }
        echo("</tr>");
    }
    echo("</table>");
    echo("</td></tr></table>");
    
}

?>


Sada samo umjesto echo radi svoj SQL query.
Broj redova, i dužina nije važna.
[ Uros04 @ 08.02.2004. 11:54 ] @
Citat:
milanvla:
trebalo bi da ti ovo obavi posao:

$file = file("ime_fajla.txt");//otvoris fajl
foreach ($file as $line){ //citas red po red
$data = explode(",", $line); //razdvojis na reci
// prvi clan ti je $data[0], a ti ih imas 7 ukupno, tj $data[0],...$data[6]
for($i=0;$i<=6;$i++)$data[$i]=str_replace("\"","",$data[$i]);//ovo ti skida prvi i zadnji znak navoda
//sada upises u bazu
mysql_query("insert into $ime_tabele(polje1,polje2,polje3,polje4,polje5,polje6,polje6) values('$data[0]','$data[1]','$data[2]','$data[3]','$data[4]','$data[5]','$data[6]')");
}


Hvala, ali tvoj code mi pravi problem, naime on doda sve lepo u polja
ali predzadnji i zadnji podatak dodaje u formatu "0 i "" jedino je u tome problem. Ima li resenja?
[ Uros04 @ 08.02.2004. 11:56 ] @
Citat:
dr ZiDoo:
Nekidan sam baš napisao skritput koja radi sa baš takvom strukturom fajlova (u mom slučaju OO programa za radi sa tabelama - *.cvs). Moj ne upisuje u SQL nego generiše html file, ali lako se prepraviti:

Code:

<?php

$file = "OOcvs.txt";

$fp = fopen($file, 'r');
if(!$fp)
{
    die("Ne mogu da otvorim file: $fp");
}
else
{
    $con = fread($fp, filesize($file));
    
    $con_red = explode("\n", $con);
    $num_red = count($con_red);
    echo("<table border=\"0\" cellspacing=\"0\" cellpading=\"0\"><tr><td bgcolor=\"#c0c0c0\">");
    echo("<table border=\"0\" cellspacing=\"1\" cellpadding=\"2\">");
    for($i = 0; $i <= $num_red-2; $i++)
    {
        print "\n";
        echo("<tr>");
        $cell = explode(",", $con_red[$i]);
        $numcell = count($cell);
        
        for($n = 0;$n <= $numcell-1; $n++)
        {
            print "\n";
            $brb = "";
            $strg = $cell[$n];
            $strg = ereg_replace('"', $brb, $strg);
            echo("<td align=\"center\" bgcolor=\"#FFFFFF\">$strg</td>");
            
        }
        echo("</tr>");
    }
    echo("</table>");
    echo("</td></tr></table>");
    
}

?>


Sada samo umjesto echo radi svoj SQL query.
Broj redova, i dužina nije važna.


Evo sta dobijem kad pokrenem ovu skriptu:

Code:

Parse error: parse error in /var/www/htdcos/parser.php on line 3
[ dr ZiDoo @ 08.02.2004. 14:58 ] @
???

Kod mene sve radi kako treba. Taj error vjerovatno ce ti se pokazati samo kada nisi zatvorio neki navod, tj mozda to je u kopiranju nije prekopirao ; ili tako nesto.

Kada si stavio svoje ime fajla, vidi da li si zavtvorio sa ";".
[ Uros04 @ 08.02.2004. 21:27 ] @
Citat:
dr ZiDoo:
???

Kod mene sve radi kako treba. Taj error vjerovatno ce ti se pokazati samo kada nisi zatvorio neki navod, tj mozda to je u kopiranju nije prekopirao ; ili tako nesto.

Kada si stavio svoje ime fajla, vidi da li si zavtvorio sa ";".


Sve sam lepo uradio, ali ne vredi, opet nece, no ne mari, prepravio sam prvi code i sad sve lepo radi. Hvala jos jednom.
[ igac @ 09.02.2004. 00:40 ] @
pa citas li error?! treca linija ti je naziv fajla, ti ga nemas i tako da nemas sta da parsujes...
[ -zombie- @ 09.02.2004. 05:52 ] @
aman ljudi, ste čuli za fgetcsv()? http://php.net/fgetcsv


[ noviKorisnik @ 09.02.2004. 07:01 ] @
... i naravno da nismo, jerbo bi bilo stupidno da postavimo temu. Jer lepi PHP skoro da je taki da nudi gotovu funkciju za štogod ti se naumi da činiš. Samo treba znati ime funkcije. Hvala za ime.
[ igac @ 09.02.2004. 12:28 ] @
mozda je bas zato php toliko highhighhighhighhighhighhigh level programski jezik :D