Díky :)
Příspěvky odeslané z IP adresy 90.182.180.–
Dobrý den,
budu si dělat minieshop na svém webu. Tady se chci zeptat chytřejších hlav :) jaký postup je výhodnější při tvorbě košíku.
Buď může být košík klasicky jako tabulka v DB, nebo jako SESSION.
Co je výhodou DB oproti SESSION mi přijde, že se uživatel může vrátit po delší době k nákupu ale zas to zbytečně zatěžuje DB, ne? Navíc pokud je uživatel "anonymní" tak se může přihlásit jinde a "svůj" košík neuvidí, nebo jej uvidí zas jindy na původním PC. A když se uživatel vybodne na nákup tak musím řešit jak mazat staré košíky...
Budu rád za každý názor :)
Ať zkouším přímé vložení pomocí jednoduchého příkazu nebo tento i další složitější algoritmy tak mi vždy ohlásí že vše bylo provedeno. Ve skutečnosti však databáze zustane stejná.
Jen u těchto jednoduchýh příkazů co jsem uvedl poslední mi oznámí chybu jenom DIE();
Když však kód z sql souboru zkopíruju do konzole phpmyadmin tak kod ze souboru je v pořádku.
Takže dělám chybu v odesílání dat do DB. Bohužel vůbec nevím kde ...
Peter: Identický kód je, protože to byl zdroj, odkud jsem čerpal než jsem psal na forum.
Koukám, že se to tu zvrhlo ve výměnů názorů :)
No tady je to co sem naposledy zkoušel:
$filename = "backup-file.sql";
$templine = file_get_contents($filename);
mysql_query($templine, $connect) or die('Chyba ve vkládání QUERY příkazu \'<strong>' . htmlspecialchars($templine) . '\': ' . mysql_error() . '<br /><br />');
A zde obsah sql souboru :
USE `drdforum.mys4942`;
DROP TABLE ARTICLES;
CREATE TABLE `ARTICLES` (
`ID` int(5) NOT NULL AUTO_INCREMENT,
`TITLE` varchar(65) NOT NULL,
`CONTENT` text NOT NULL,NULL,
`IMG` varchar(255) NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=102 DEFAULT CHARSET=utf8;
INSERT INTO ARTICLES VALUES("1", .... další řádky kodu....
Dobrý den,
potřebuji importovat zálohu do DB. Záloha je ve sql tvaru.
Používám tento kód ale ikdyž mi na konci vypíše, že vše proběhlo DB je pořád nezměněná.
<?php
$filename = 'moje_zaloha.sql';
$mysql_host = 'host';$mysql_username = 'root';$mysql_password = '123456';$mysql_database = 'dump';
mysql_connect($mysql_host, $mysql_username, $mysql_password) or die('Chyba v připojení : MySQL server: ' . mysql_error());
mysql_select_db($mysql_database) or die('Chyba ve vybrání DB: ' . mysql_error());
$templine = '';
$lines = file($filename);
foreach ($lines as $line)
{
if (substr($line, 0, 2) == '--' || $line == '')
continue;
$templine .= $line;
if (substr(trim($line), -1, 1) == ';'){
mysql_query($templine) or print('Chyba ve vkládání QUERY příkazu \'<strong>' . $templine . '\': ' . mysql_error() . '<br /><br />');
$templine = '';
}
}
echo "Záloha vpořádku importována";
?>
Prošel sjem si kód a zjistil jsem, že opravdu odesílám data v metodě GET, mám zvyk používat jen POST, proto jsem předpokládal, že tam v jádru bude také post..
večer zkusím přepsat na POST.
Děkuji za rychlou pomoc :)
Dobrý den, zadrhnul jsem se na problému s předáváním obsahu proměnné.
Co potřebuji: Zápis dlouhého textu do db.
Problém: Při odeslání formuláře chyba "414 Request-URI Too Large".
Doteď jsem obsah předával pomocí $_POST[] formuláře ale nyní mi prohlížeč vypisuje
"414 Request-URI Too Large" což jsem pochopil jako příliž slouhé uri.
Jaké mám možnosti ? Lze předat dlouhý text jinak bež uri? Nebo to omezení lze nějak obejít?
#7 Kit
Teď si připadám jak hňup. Chyby ve všech jazicích php i cz ..
Ještě poslední dotaz. Prosím Tě, ukládám do tabulky v DB nový řádek a mám nastaveno auto_increment.
Jak zjistím jaký ID se vytvořilo? Resp. je nějaká funkce co vrací vytvořené ID ? Zatím to řeším pomocí vlastního ÍD založené na časovém kodu (ID_TIME=01012015125959) . Je to podle mě zbytečné pracné a dlouhé ale jelikož anglicky a rusky jen louskám tak mi google zatím moc neporadil.
#5 Kit
Takž epokud chápu zprávně místo abych načítal ID komentářů z tabulky článku a pak je vyhledával, bude lepší vyhledadat ID článku v tabulce komentářů?
Vím, že komentářů je poměrově k článkům více, proto jsem chtěl hledat spíš v tabulce kde je méně hodnot.
Určitě se se vrhnu co nejdříve na OOP, procedurální sestavování je čistě na naučení.
Zakusím to teda překopat.
Poznámka:
Kód z vrchu mi začal fungovat když jsem pokaždé před voláním mysql_querry přidal nový Connect...
Jenže připojovat se tolikrát k DB je šílenost.
Stále nechápu proč to ale nefunguje - jestli rozumíš ? Tu logiku proč manuálně nastavené pole jede ale vytažené z DB už ne...
Oprava chyby v
if (!is_numeric($r) ){
$vypis.= $value;
}
Zapoměl jsem odstranit podmínku s numericou...
Dobrý den, už tři dny se mi nedaří řádně zprovoznit vytahování dat z DB.
Mám pocit, že jsem se zamotal do hrozné pavučiny, potřebuji pouze zobrazit vybrané řádky z tabulky COMMENTS.
ID těchto řádků jsou uložena jako string v bunce článku v tabulce ARTICLES. (string protože se mi nedařilo uložit pole do DB )
Problém je takový, že pokud si vytvořím pole s hledanými ID tak vše funguje. Ale pokud použiji funkci která mi vytvoří pole tak se mi vypíše jen první vyhledaný obsah.
Kod:
// Tato funkce mi vyhledá v tabulce s článkny(ARTICLES) clanek s celym obsahem sloupcu
function dbsearch($connect, $table, $search_id, $search_value ){
$if="SELECT * FROM $table WHERE `$search_id`='$search_value' ";
$navrat=mysql_db_query("myforum", $if, $connect);
while($row = mysql_fetch_array($navrat)){
$return[]=$row;
}
return $return;
}
$id_a = 157; //idečko hledaného článku.
// zde se mi ulozi obsah clanku do pole m_article
$m_article = dbsearch($connect, "ARTICLES", "ID", $id_a )or die(" Debugg from: clanek.php: Cannot use function dbsearch. CODE 258. ");
// Zde vyhledám v klici COMMENTS a obsah koments ulozim do $m_comments.
foreach ($m_article as $array){
foreach ($array as $key => $value ){
if ($key == "COMMENTS"){
$m_comments = explode(",",$value); // zde se string is ID komentářů prevede do pole
}
}
}
// zde je funkce pro otevreni radku s clankem
function open($result){
while($row1 = mysql_fetch_array($result)){$return=$row1;}
foreach ($return as $value){
if (!is_numeric($r) ){
$vypis.= $value;
}
}
return $vypis;
}
// Na zaver forem projedu matici M_COMMENTS a obsah vypíši ...
foreach ($m_comments as $id_c){
$if = ("SELECT * FROM COMMENTS WHERE ID_TIME='".($id_c)."' ");
$result = mysql_query($if, $connect) or die("CODE 778");
echo open($result); // vypis obsahu komentare
echo "<br>"; // dalsi radek pro oddeleni komentaru
}
/*
ZDE - se vypise jen obsah prvniho nalezeneho radku...
Když ale manuálně nastavím matici takto :
$m_comments = null;
$m_comments[0]=20092015123947;
$m_comments[1]=20092015123841;
$m_comments[2]=20092015123327;
a zadám ciklaci tak vse funguje ....
*/
Zkušenějším to celé asi přinde jako matlanice, tak prosím poradit a né odsuzovat.
Když by se někdo ptal proč na komentáře nepoužiji nějaké FrameWorky tak tímhle se chci naučit jak vlastně fungje php..
Předem dík za jakoukoliv pomoc.