Zapis do DB, vytvoreni tabulky – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Zapis do DB, vytvoreni tabulky – PHP – Fórum – Programujte.comZapis do DB, vytvoreni tabulky – PHP – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
lubos
~ Anonymní uživatel
79 příspěvků
18. 11. 2012   #1
-
0
-

Dobrý den řeším problém se zápise do DB zapíše se jen část souboru 3 řádky z 20. soubor je  spoluzaci.csv(office soubor-tabulky) který chci samozřejmě zapsat celý a nahrát ho do DB scriptem a ne pomoci phpadmina který na to má podporu, na tomto souboru si svůj script zkouším, později chci do DB nahrát přes 11 000 řádků (složení řádku je asi- čísla,znaky+čísla,znaky,čísla,znaky+čísla,komentáře- cca 60znaků na řádku) pokud zkouším otevřít soubor a procházet ho po řádku a očišťovat řádek od přebytečných znaků tak se mi to celkem daří ale když přidám i zápis řádku do DB tak už se nic neděje ostatní funguje ale zápis do DB se nezdaří prosím o radu . V bodech naznačuji co bych od scriptu chtěl a přikládám i kód předem děkuji

1)připojení kDB

2)vybrat DB (název DB přijde z formuláře)

3)vytvořit tabulku (nazev tabulky přijde z formuláře)

4)otevrit originalni soubor ze kterého načtu a zapíšu do DB(nazev souboru přijde z formuláře)

5)vytvořit kopii originálnáho souboru

6)otevřu originál a procházím po řádku,(začíná cyklus)

7)řádek očišťuji od přebytečných znaků(cyklus pokračuje)

8)ocištěný řádek chci vložit do tabulky v DB(cyklus pokračuje)- zde je problém z 20 řádků mi zapíše jeden a jen

částečně, také se zapíšou dva řádky které jsou prázdné-

9)ještě chci očištěný řádek  zapsat do záložního souboru(cyklus končí)

10)nakonec zobrazím záložní soubor a konec scriptu

<?php
//formular
 $stranka= $_POST['idsite'];
 $user= $_POST['iduser'];
 $nazev_db= $_POST['nazev_db'];
 $nazev_table= $_POST['nazev_table'] ;
 $nazev_sesitu= $_POST['nazev_sesitu'];
          //pripojeni k serveru
  
$link = mysql_connect('localhost', 'root', 'adelka123');
if (!$link) {
    die('spojeni se nenavazalo: ' . mysql_error());
}

            //vybrat DB
 $db_selected = mysql_select_db($nazev_db, $link);
if (!$db_selected) {
    die ('databáze nebyla nalezena <br /> ' . mysql_error());
} 
             // VYTVORENI TABULKY 

 $sql = "CREATE TABLE $nazev_table
 (
  $nazev_table TEXT NOT NULL 
 )";
if( mysql_query($sql, $link)) {
    echo "vytvoření tabulky se zdařilo <br />"; 
} else {
    echo 'chyba vytvoreni tabulky'.mysql_error(). "\n" ;
    }
      
            // VLOZENI HODNOT DO SLOUPCU V TABULCE 
        $sesit_zaloha= "zaloha".$nazev_sesitu;  //nazev zalozniho souboru
          $vytvor_zalohu= fopen ($sesit_zaloha,"w+");//vytvoreni zaloz. souboru
         if (file_exists($sesit_zaloha))
         {
            fclose($vytvor_zalohu);//prozatim zavrit     
          }
          else
          {
          echo " vytvoreni zalozni kopie souboru se nezdarilo ";
              exit;
          }
          //pokud existuje originalni soubor tak ho prochazet po radcich
          if (file_exists($nazev_sesitu)) {
          
                $soubor=fopen($nazev_sesitu, "r"); //otevrit original
                 $vytvor_zalohu= fopen ($sesit_zaloha,"w");//otevrit kopii
                   //pokud jsou otevreny soubory
                if($soubor && $vytvor_zalohu){
                    while (!feof($soubor)){   //dokud neni konec souboru
                    $radek = fgets($soubor,10000);  //radek souboru                      
                    $radek= str_replace(";"," ",$radek);//ocistit  radek
                    $radek= str_replace("\"","",$radek); //ocistit radek
                    trim($radek);          //ocistit
                    $zapis_celek=$radek."\n";  //odradkovat
                      //vlozit do tabulky a sloupce                            
                    $rozkaz="INSERT INTO $nazev_table ('mlatinoha') VALUES ($radek)"; 
                    $vysledek = mysql_query($rozkaz,$link);
  
                     if (!$vysledek){
                          print "<br><b>nezapsano do tabulky</b>";
                          exit;
                      }
                     //zapsat ocistene do zalohy
                   $zapis_do_zalohy = fwrite($vytvor_zalohu,$zapis_celek);
                    } //konec while
                    
                }//konec vnoreny if
                
              else {
              print("Soubor ".$nazev_sesitu." se nepodařilo otevřít pro čtení.");
                    exit;
               } //konec else (vnoreny if )
          } //konec if
        else {
           print("Soubor ".$nazev_sesitu." neexistuje.");
               exit;
          } //konec else
           
readfile($sesit_zaloha) ;  //zobrazit ocistenou zalohu
fclose($vytvor_zalohu);
fclose($soubor);
?>
Nahlásit jako SPAM
IP: 89.103.94.–
Reklama
Reklama
CZechBoY+4
Věrný člen
18. 11. 2012   #2
-
0
-

#1 lubos
zdravim,
nikde neošetřuješ apostrofy ($radek)

ten řádek má vždycky 10000 bajtů?

jinak doporučuju lepší odsazování (nebo to dělá zvýrazňovač na foru?)

Nahlásit jako SPAM
IP: 213.192.10.–
lubík
~ Anonymní uživatel
16 příspěvků
18. 11. 2012   #3
-
0
-

Máš pravdu , apostrofy jsem v kódu neošetřoval , v řádku jsem je rovnou mazal, tu délku řádku jsem jen pro jistotu určil na maximální možnou hodnotu která by asi nejspíš nenastala , odsazování je určitě z mojeho scriptu , než jsem ten script hodil sem tak jsem v něm pořád mazal a různě ho upravoval, zkoušel jsem různý možnosti jak to rozchodit který jsem našel na googlu , tak proto to vypadá takhle , vím že ani nemám ošetřený vstupy , při vstupu do scriptu i při vstupu do DB

popravdě jsem se s touhle omáčkou nezdržoval ,chtěl jsem mít hlavně script funkční. Teď už jsem problém vyřešil, problém byl že jsem název tabulky do který jsem chtěl zapisovat příjmal z formuláře a pak jsem ten název vložil do proměnné $nazev_table,  

$rozkaz="INSERT INTO $nazev_table ('mlatinoha') VALUES ($radek)";

když jsem tam vložil název ručně (natvrdo ) tak se to už rozběhlo,

$prikaz="INSERT INTO lucik (lucik) VALUES (',$zapis_celek')"; 

teď už budu dodělávat jen tu omáčku atd. dík  

Nahlásit jako SPAM
IP: 89.103.94.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 66 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý