Autor | Zpráva | ||
---|---|---|---|
Fisak Profil |
#1 · Zasláno: 6. 5. 2014, 12:27:19
Dobrý den, chtěl jsem si udělat do svého CMS takové tlačítko "Update" které když bych zmáčknul tak se mi aktualizuje DB podle určité definice.. Bohužel jsem v koncích jelikož nevím proč mi to nefunguje..
database.txt: options{row(type,text)mod_rewrite:no;title:titulek stranky;default_language:cs;change_language:no;one_language:no;template:default;default_page:home;web_name:Nazev stranky;web_subtitle:podnazev stranky;author:Insignia CMS;date_format:j.n.Y;time_format:G:i;seo_description:;seo_keywords:;pagination:no;num_pagination:10;version:1.0.0 BETA;image_player:default;media_player:default;form_plugin:default;headers:;analytics:;footer:;address:;} tlačítko update: $errmsg_vers = false; $fp_vers = @fsockopen('adresa.cz', 80, $errno_vers, $errstr_vers, 30); if (!$fp_vers) return ''; else { $out_vers = "GET /update/database.txt HTTP/1.1\r\nHost: adresa.cz\r\nConnection: Close\r\n\r\n"; fwrite($fp_vers, $out_vers); while (!feof($fp_vers)) { $database_vers = fgets($fp, 128); $echo_database = preg_replace('#[^0-9\a-z\(\)\-\_\;\{\}\:\.]#ui', '', $database_vers); $exp_table = explode("}", $echo_database); //rozdělení tabulek $n_table = count($exp_table); for ($i_table = 0; $i_table <= $n_table; $i_table++) { $count_table = explode("{", $exp_table[$i_table]); //rozdělení názvu tabulky od obsahu $count_table_t = explode(")", $count_table[1]); //rozdělení obsahu od typu $count_table_ty = explode("(", $count_table_t[0]); //rozdělení typu od definice tabulky $count_table_type = explode(",", $count_table_ty[1]); //rozdělení typů sloupců $count_table_row = explode(";", $count_table_t[1]); //rozdělení jednotlivých řádků $n_count_table = count($count_table_row); for ($i_count_table = 0; $i_count_table <= $n_count_table; $i_count_table++) { $table_exp_tab = explode(":", $n_count_table[$i_count_table]); if($count_table_ty[0] == "row") { $sql_up_db = DB::query("SELECT * FROM [:pref:".$count_table[0]."] where [".$count_table_type[0]."] = %s", $table_exp_tab[0]); if(count($sql_up_db) != 1) { $arr_db_table = array( $count_table_type[0] => $table_exp_tab[0], $count_table_type[1] => $table_exp_tab[1], ); DB::query("insert into [:pref:".$cont_table[0]."]", $arr_db_table); } } elseif ($count_table_ty[0] == "table") {} } } } fclose($fp); } Nevěděl by si někdo rady nebo neviděl by někdo nějakou chybu v kódu? Předem děkuji za odpovědi. |
||
Kajman Profil |
#2 · Zasláno: 6. 5. 2014, 12:51:55
Tak si např. vypište dotazy nebo postupně proměnné, zda tam je to, co očekáváte.
Problém může být ve zpracovávání po 128 znacích, ale i klidně úplně jinde. Ten formát asi není zrovna nejšťastnější, co když v datech bude nějaká závorka či čárka? XML by bylo lépe čitelnější. |
||
Fisak Profil |
#3 · Zasláno: 6. 5. 2014, 12:53:31
No zkoušel jsem vše vypsat takto:
if($count_table_ty[0] == "row") { echo "Tabulka: ".$count_table[0]."<br> Typ: ".$count_table_ty[0]."<br> Sloupce: ".$count_table_type[0].", ".$count_table_type[1]."<br> Řádek: ".$table_exp_tab[0].", ".$table_exp_tab[1]."<hr>"; } elseif ($count_table_ty[0] == "table") {} |
||
Kajman Profil |
#4 · Zasláno: 6. 5. 2014, 12:57:17
Tak se tam vůbec kód nedostane. Vypište si i dřívější proměnné, případně si zapněte zobrazování php chyb.
|
||
aDAm Profil |
#5 · Zasláno: 6. 5. 2014, 13:38:32
error log mlčí?
|
||
Fisak Profil |
#6 · Zasláno: 6. 5. 2014, 14:41:41
Už mám opravenou většinu chyb... jen :
<?php $content = file_get_contents('http://insignia.netstrike.cz/update/database.txt'); $echo_database = preg_replace('#[^0-9\a-z\(\)\-\_\;\{\}\:\.]#ui', '', $content); $exp_table = explode("}", echo_database); //rozdělení tabulek $n_table = count($exp_table); for ($i_table = 0; $i_table <= $n_table; $i_table++) { $count_table = explode("{", $exp_table[$i_table]); //rozdělení názvu tabulky od obsahu $count_table_t = explode(")", $count_table[1]); //rozdělení obsahu od typu $count_table_ty = explode("(", $count_table_t[0]); //rozdělení typu od definice tabulky $count_table_type = explode(",", $count_table_ty[1]); //rozdělení typů sloupců $count_table_row = explode(";", $count_table_t[1]); //rozdělení jednotlivých řádků $n_count_table = count($count_table_row); for ($i_count_table = 0; $i_count_table <= $n_count_table; $i_count_table++) { $table_exp_tab = explode(":", $n_count_table[$i_count_table]); if($count_table_ty[0] == "row") { echo "č. ".$i_count_table." Tabulka: ".$count_table[0]."<br> Typ: ".$count_table_ty[0]."<br> Sloupce: ".$count_table_type[0].", ".$count_table_type[1]."<br> Řádek: ".$table_exp_tab[0].", ".$table_exp_tab[1]."<hr>"; } elseif ($count_table_ty[0] == "table") {} } } ?> |
||
Kajman Profil |
#7 · Zasláno: 6. 5. 2014, 15:10:54
Protože $n_count_table není pole, jak očekáváte na řádku 22.
|
||
Fisak Profil |
#8 · Zasláno: 6. 5. 2014, 16:29:52
Děkuji. S vaší pomocí funguje vše jak má.
|
||
Časová prodleva: 11 let
|
0