Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: ZAJDAN 14. 10. 2014, 15:39:43
-
Ahoj,
zrovna sestrojuju v PHP ziskani dat z Databaze do formatu JSON, ale narazim na problem uz na samotnem zacatku:
$connection=mysqli_connect("localhost","user","pass","db");
$result = mysqli_query( $connection, " SELECT * FROM configuration ");
echo $result ;
echo nevrátí nic
zkusil jsem tedy zda dojde k jiné akci v DB jako třeba:
mysqli_query($connection,"INSERT INTO configuration (ID)
VALUES ('ZZH') ");
při kontrole v databázi se INSERT dat skutečně provede, proč ale nedokážu do proměné dostat obsah tabulky přes SELECT netuším.
díky za pomoc
-
Divné.
Z vlastní (prasácké) zkušenosti obaluju názvy tabulek a sloupců znakama `` (`table`) a nedělám zbytečný mezery (to je ale asi jen o zvyku). mysqli_query nejde jednoduše echovat, píše to nějaký kraviny, že to prostě nejde.
Zkus:
echo var_dump($vysledek);
To něco vysype, pokud je vše ok.
-
S mysqli som nikdy nerobil ale asi to bude podobné plnohodnotnému mysql, takže nejak takto :
$connection=mysqli_connect("localhost","user","pass","db");
$result = mysqli_query( $connection, " SELECT * FROM configuration ");
while($mysql_array=mysql_fetch_array($result)) {
print_r($mysql_array);
}
-
musis tim iterovat
$connection=mysqli_connect("localhost","user","pass","db");
if ($result = $mysqli_query(connection, "SELECT * FROM configuration") {
while($obj = $result->fetch_object()){
var_dump($obj);
}
}
-
$result->fetch_object()
Tohle je OOP? Já používám mysqli_fetch_array (OOP jsem zatím nepochopil/nepotřeboval).
-
Tohle je OOP? Já používám mysqli_fetch_array (OOP jsem zatím nepochopil/nepotřeboval).
je to jedno, bud chces pole nebo objekt :)
-
Divné.
Z vlastní (prasácké) zkušenosti obaluju názvy tabulek a sloupců znakama `` (`table`) a nedělám zbytečný mezery (to je ale asi jen o zvyku). mysqli_query nejde jednoduše echovat, píše to nějaký kraviny, že to prostě nejde.
Zkus:
echo var_dump($vysledek);
To něco vysype, pokud je vše ok.
ok..nyní mi to vrátí:
object(mysqli_result)#2 (5) { ["current_field"]=> int(0) ["field_count"]=> int(32) ["lengths"]=> NULL ["num_rows"]=> int(35) ["type"]=> int(0) }
-
musis tim iterovat
$connection=mysqli_connect("localhost","user","pass","db");
if ($result = $mysqli_query(connection, "SELECT * FROM configuration") {
while($obj = $result->fetch_object()){
var_dump($obj);
}
}
zkusil jsem ale nedumpne se nic...zadnej vystup neni videt
-
S mysqli som nikdy nerobil ale asi to bude podobné plnohodnotnému mysql, takže nejak takto :
$connection=mysqli_connect("localhost","user","pass","db");
$result = mysqli_query( $connection, " SELECT * FROM configuration ");
while($mysql_array=mysql_fetch_array($result)) {
print_r($mysql_array);
}
zadnej vypis ...potom jsem print_r($mysql_array); jsem nahradil var_dump($mysql_array); ovsem take neslo nic ven
-
Máš v tý tabulce sloupec ID. Pak by to mohlo být např.
...
while($mysql_array=mysql_fetch_array($result)) {
echo $mysql_array['ID'];
}
Ten while při každym průběhu posune pole o jeden řádek a v $mysql_array bude vždy ten jeden aktuální řádek.
-
ok..nyní mi to vrátí:
object(mysqli_result)#2 (5) { ["current_field"]=> int(0) ["field_count"]=> int(32) ["lengths"]=> NULL ["num_rows"]=> int(35) ["type"]=> int(0) }
A tohle Ti říká, že v proměnný něco je, takže mysqli_result něco vrátil. ["num_rows"]=> int(35) dokonce říká, že 35 řádků.
-
ok..nyní mi to vrátí:
object(mysqli_result)#2 (5) { ["current_field"]=> int(0) ["field_count"]=> int(32) ["lengths"]=> NULL ["num_rows"]=> int(35) ["type"]=> int(0) }
A tohle Ti říká, že v proměnný něco je, takže mysqli_result něco vrátil. ["num_rows"]=> int(35) dokonce říká, že 35 řádků.
a přesně to jsem potřeboval zjistit, zda ta proměná něco obsahuje...díky
-
ok..nyní mi to vrátí:
object(mysqli_result)#2 (5) { ["current_field"]=> int(0) ["field_count"]=> int(32) ["lengths"]=> NULL ["num_rows"]=> int(35) ["type"]=> int(0) }
A tohle Ti říká, že v proměnný něco je, takže mysqli_result něco vrátil. ["num_rows"]=> int(35) dokonce říká, že 35 řádků.
ano sloupec 'ID' je v tabulce obsažen.....zkusil jsem to tedy jak tady uvádíš, ale echo nevrátí nic
-
při kontrole v databázi se INSERT dat skutečně provede, proč ale nedokážu do proměné dostat obsah tabulky přes SELECT netuším.
mysqli_query() vrací jen deskriptor výsledku.
Projdi si http://php.net/manual/en/mysqli.query.php (http://php.net/manual/en/mysqli.query.php), je tam dost příkladů.
Doporučuji přejít na PDO.
-
S mysqli som nikdy nerobil ale asi to bude podobné plnohodnotnému mysql, takže nejak takto :
MySQLi _je_ plnohodné, ale starý MySQL_* už za plnohodnotný považovat nelze. Bude z PHP vyhozen.
Funkce pro mysqli_* a mysql_* nesmíš kombinovat.
-
při kontrole v databázi se INSERT dat skutečně provede, proč ale nedokážu do proměné dostat obsah tabulky přes SELECT netuším.
mysqli_query() vrací jen deskriptor výsledku.
Projdi si http://php.net/manual/en/mysqli.query.php (http://php.net/manual/en/mysqli.query.php), je tam dost příkladů.
Doporučuji přejít na PDO.
nevím co je to PDO a nerad bych díky tomu odbočoval z tématu
-
$connection = mysqli_connect("localhost", "user", "pass", "db");
$result = mysqli_query($connection, " SELECT * FROM `configuration`");
while ($result_array = mysqli_fetch_array($result)) {
echo $result_array['ID'];
}
Tohle MUSÍ fungovat. Pokud ne, jsem blbec.
Mimochodem, chyba je, jak uvedl Kit, který si všiml, v mysqli_fetch_array. Ty jsi použil mysql_fetch_array a chybělo Ti to i. Je to velmi podstatný. Já to pak jen zkopíroval a nekontroloval :-)
-
$connection = mysqli_connect("localhost", "user", "pass", "db");
$result = mysqli_query($connection, " SELECT * FROM `configuration`");
while ($result_array = mysqli_fetch_array($result)) {
echo $result_array['ID'];
}
Tohle MUSÍ fungovat. Pokud ne, jsem blbec.
Mimochodem, chyba je, jak uvedl Kit, který si všiml, v mysqli_fetch_array. Ty jsi použil mysql_fetch_array a chybělo Ti to i. Je to velmi podstatný. Já to pak jen zkopíroval a nekontroloval :-)
yeeeees, tak nyní to vypisuje všechny řádky ze sloupce 'ID'.....super díky
-
MySQLi _je_ plnohodné, ale starý MySQL_* už za plnohodnotný považovat nelze. Bude z PHP vyhozen.
Funkce pro mysqli_* a mysql_* nesmíš kombinovat.
děkuji pač to je zásadní věc
-
při kontrole v databázi se INSERT dat skutečně provede, proč ale nedokážu do proměné dostat obsah tabulky přes SELECT netuším.
mysqli_query() vrací jen deskriptor výsledku.
Projdi si http://php.net/manual/en/mysqli.query.php (http://php.net/manual/en/mysqli.query.php), je tam dost příkladů.
Doporučuji přejít na PDO.
nevím co je to PDO a nerad bych díky tomu odbočoval z tématu
1) tim ze budes vsechno boldovat nicemu nepomuzes
2) bez PDO si koledujes o krasny pruser. Pokud nejsi ochoten zjistit co to je a naucit se tak se na to vybodni a bez kopat kanaly, to bude uzitecnejsi.
-
při kontrole v databázi se INSERT dat skutečně provede, proč ale nedokážu do proměné dostat obsah tabulky přes SELECT netuším.
mysqli_query() vrací jen deskriptor výsledku.
Projdi si http://php.net/manual/en/mysqli.query.php (http://php.net/manual/en/mysqli.query.php), je tam dost příkladů.
Doporučuji přejít na PDO.
nevím co je to PDO a nerad bych díky tomu odbočoval z tématu
1) tim ze budes vsechno boldovat nicemu nepomuzes
2) bez PDO si koledujes o krasny pruser. Pokud nejsi ochoten zjistit co to je a naucit se tak se na to vybodni a bez kopat kanaly, to bude uzitecnejsi.
děkuji komandere,
1) bolduju to paš je to přehlednější a nesnaž se mi říkat, že ne....ano tobě chutná šunka a mě zase vysočina
2) o PDO si přečtu, ale nyní chci vyřešit tak jak to je a pak to tedy zdokonalit....namísto házeních druhých do kanálů by jsi mohl spíš poradit, než plýtvat čas komandováním druhých
-
Radu jsi dostal: pouzivej PDO.
-
to_je_jedno: Není potřeba hned odsuzovat ;-) Já PDO dodnes neslyšel a vystačím si bez něj. Pravda, nedělám PHP za prachy a ani zadarmo, plácám si v tom svoje kravinky, když potřebuju někde něco nakódovat... Bez PDO jsem se zatím obešel, bez OOP taky. Někde se musí začít a myslím, že projít běžný praktiky (třeba zastaralý nebo neefektivní nebo nepoužívaný) neni špatný. Každej začně "Hello world", i když mu to prakticky vlastně nic nedá... Pak teprve se jde dál.
ZAJDAN: Zbylý sloupce jsou v tom $result_array taky, stačí je vypsat stejnym způsobem. Vždy ale v tom jednom cyklu while pracuješ s jednim celym řádkem (tj. se všema sloupcema), v dalším průběhu už přijde novej řádek s novejma hodnotama. Zkoušej, pochopíš ;-)
-
to_je_jedno: Není potřeba hned odsuzovat ;-) Já PDO dodnes neslyšel a vystačím si bez něj. Pravda, nedělám PHP za prachy a ani zadarmo, plácám si v tom svoje kravinky, když potřebuju někde něco nakódovat... Bez PDO jsem se zatím obešel, bez OOP taky. Někde se musí začít a myslím, že projít běžný praktiky (třeba zastaralý nebo neefektivní nebo nepoužívaný) neni špatný. Každej začně "Hello world", i když mu to prakticky vlastně nic nedá... Pak teprve se jde dál.
děkuji za podporu, dívám se na to přesně jak píšeš
ZAJDAN: Zbylý sloupce jsou v tom $result_array taky, stačí je vypsat stejnym způsobem. Vždy ale v tom jednom cyklu while pracuješ s jednim celym řádkem (tj. se všema sloupcema), v dalším průběhu už přijde novej řádek s novejma hodnotama. Zkoušej, pochopíš ;-)
díky...moc mi to pomohlo, jdu experimentovat
-
PDO:
věnoval jsem tedy řas tomu, aby jsem můj příklad předělal na PDO. Spojení s DB funguje:
//define constant's in runtime
define('SQL_HOST','localhost');
define('SQL_DBNAME','dbname');
define('SQL_USERNAME', 'user');
define('SQL_PASSWORD','pass');
//define variables for further acctions
$induce = 'mysql:dbname=' . SQL_DBNAME . '; host=' . SQL_HOST . '';
$user = SQL_USERNAME;
$password = SQL_PASSWORD;
// "try - catch" block
try {
$pdo = new PDO ($induce, $user, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $e) {
die('Connection failed: ' . $e->getMessage() );
}
tady používám styl, kde dotaz předpřipravím a ptom vyvolám, ale echo zatím nic nevrací, proto bych chtěl požádat o radu:
// prepare QUERY
$select = $pdo->prepare("SELECT type, inside FROM configuration WHERE ID = ?");
// execute QUERY
$select->execute(array($result) );
$cabinet = $select->fetch();
echo $cabinet["type"]. " " . $cabinet["inside"];
-
Chápu, že dneska třeba bez PDO jako PHPčkař nenajdu uplatnění, ale když to vidím, tak bych blil... Zlatý starý normální funkce...
-
dej tam
print_r($result); a uvidis to.
IMHO ti to vraci objekt tak potrebujes bud printnout $cabinet ->type nebo ziskat vysledek s parametrem PDO::FETCH_ASSOC
-
ale v komentari nezminuju to ze tam nevidim jak probiha WHERE
-
Chápu, že dneska třeba bez PDO jako PHPčkař nenajdu uplatnění, ale když to vidím, tak bych blil... Zlatý starý normální funkce...
a proto pouzivam DiBi
-
PDO:
věnoval jsem tedy řas tomu, aby jsem můj příklad předělal na PDO. Spojení s DB funguje:
//define constant's in runtime
define('SQL_HOST','localhost');
define('SQL_DBNAME','dbname');
define('SQL_USERNAME', 'user');
define('SQL_PASSWORD','pass');
//define variables for further acctions
$induce = 'mysql:dbname=' . SQL_DBNAME . '; host=' . SQL_HOST . '';
$user = SQL_USERNAME;
$password = SQL_PASSWORD;
// "try - catch" block
try {
$pdo = new PDO ($induce, $user, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $e) {
die('Connection failed: ' . $e->getMessage() );
}
tady používám styl, kde dotaz předpřipravím a ptom vyvolám, ale echo zatím nic nevrací, proto bych chtěl požádat o radu:
// prepare QUERY
$select = $pdo->prepare("SELECT type, inside FROM configuration WHERE ID = ?");
// execute QUERY
$select->execute(array($result) );
$cabinet = $select->fetch();
echo $cabinet["type"]. " " . $cabinet["inside"];
ten $result mas nastavenej?
-
Chápu, že dneska třeba bez PDO jako PHPčkař nenajdu uplatnění, ale když to vidím, tak bych blil... Zlatý starý normální funkce...
Když vyházíš zbytečné komentáře (duplikují program) a zbytečné funkce define() a die(), tak to není zas tak zlé.
-
Chápu, že dneska třeba bez PDO jako PHPčkař nenajdu uplatnění, ale když to vidím, tak bych blil... Zlatý starý normální funkce...
chapu, ze dneska s lopatou uz moc nenajdu uplatneni, ale kdyz ty pendolina a railjety vidim, tak bych blilb... Zlaty stary konesprezky!
-
ten $result mas nastavenej?
Nemam....je to potreba?
-
ten $result mas nastavenej?
Nemam....je to potreba?
Ano, je. Do toho přece dáváš parametr, který bude vložen místo toho "?".
Určitě bys měl tu proměnnou pojmenovat jinak. Třeba $id. Ve WHERE máš přece ID.
$select = $pdo->prepare("SELECT type, inside FROM configuration WHERE ID = ?");
$select->execute(array($id));
$cabinet = $select->fetch();
-
Ono neni jedno jak se ta promena jmenuje?
-
Ono neni jedno jak se ta promena jmenuje?
Můžeš si proměnné pojmenovat třeba $a1, $a2, $a3, atd, ale srozumitelnosti programu to určitě nepřidá a musíš psát jinak zbytečné komentáře. Slovo "result" znamená "výsledek". Proč bys měl pojmenovávat formální parametr $result, když v něm máš ID?
Správné pojmenování proměnných a metod je velmi důležité pro pochopení OOP a programování obecně. Počítači je to však úplně fuk.
-
s tím polem se mi to prostě nedaří....
pokud si udělám výpis přes standardní select bez pole tak to jede jak má viz.:
try {
$pdo = new PDO ($induce, $user, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT * FROM configuration";
oreach ($pdo->query($sql) as $row) {
print $row['ID'] .' - '. $row['type'] . '<br />';
}
}
-
Varianta 1:
$select = $pdo->prepare("SELECT type, inside FROM configuration WHERE ID = :id");
$select->bindParam(':id', $id, PDO::PARAM_INT);
// execute QUERY
$select->execute();
$cabinet = $select->fetch(PDO::FETCH_ASSOC 8));
echo $cabinet["type"]. " " . $cabinet["inside"];
Varianta 1:
$select = $pdo->prepare("SELECT type, inside FROM configuration WHERE ID = :id");
// execute QUERY
$args = array(':id' => $id);
$select->execute($args);
$cabinet = $select->fetch(PDO::FETCH_ASSOC 8));
echo $cabinet["type"]. " " . $cabinet["inside"];
Takhle mu posilas to kterou skrin chces.
-
jde o to, ze takhle pres argumenty nemusis resit escape_string a podobne cypowiny.
-
jde o to, ze takhle pres argumenty nemusis resit escape_string a podobne cypowiny.
děkuji, jdu to vyzkoušet :_)
-
nikdy jsem se nesetkal u sql s případem, kde se u klausule WHERE neco dozazuje za = :
....WHERE ID = :id");
co tam zařídí ta dvojtečka?
díky
-
Chápu, že dneska třeba bez PDO jako PHPčkař nenajdu uplatnění, ale když to vidím, tak bych blil... Zlatý starý normální funkce...
chapu, ze dneska s lopatou uz moc nenajdu uplatneni, ale kdyz ty pendolina a railjety vidim, tak bych blilb... Zlaty stary konesprezky!
Railjety a Pendolina kolem mě nejezdí, my tady u nás jezdíme dobytčákama. Hele, neni to špatný, dopraví Tě to totiž úplně stejně. Přičemž ty novější by ani nebyly rychlejší, protože trať tady stojí za hovno...
-
....WHERE ID = :id");
co tam zařídí ta dvojtečka?
Ta dvojtečka zařídí, aby si databáze nespletla ten identifikátor s nějakým příkazem či proměnnou. Ta dvojtečka je jeho součástí.
-
proto je pak v $args(); zase :id s dvojteckou.
http://php.net/manual/en/pdostatement.execute.php
-
Chápu, že dneska třeba bez PDO jako PHPčkař nenajdu uplatnění, ale když to vidím, tak bych blil... Zlatý starý normální funkce...
chapu, ze dneska s lopatou uz moc nenajdu uplatneni, ale kdyz ty pendolina a railjety vidim, tak bych blilb... Zlaty stary konesprezky!
Railjety a Pendolina kolem mě nejezdí, my tady u nás jezdíme dobytčákama. Hele, neni to špatný, dopraví Tě to totiž úplně stejně. Přičemž ty novější by ani nebyly rychlejší, protože trať tady stojí za hovno...
vsak jo, trabant by te taky dovezl prakticky kamkoliv a presto jich dneska uz moc nevidis... stejne tak jako fabky nahrazujou u duchodcu filcky ktery nahradily embesa.
-
Ta dvojtečka zařídí, aby si databáze nespletla ten identifikátor s nějakým příkazem či proměnnou. Ta dvojtečka je jeho součástí.
mohu tedy poprosit co se vlastně děje v té přípravě SQL dotazu?
mate mne tady to, že hodnota sloupce ID není jako string/char a je bez uvozovek tak jako se to dělá pro čísla/numeric
$select = $pdo->prepare("SELECT type, inside FROM configuration WHERE ID = :id");
díky
-
in fact, ta dvojtecka je tam protoze tam pak probiha neco jako str_replace() tesne pred vykonaniom.
foreach ($args as $delta => $arg) {
str_replace($delta, $arg, $query);
}
no a ted si vem ze bys mel query: select id, name from ids WHERE id = id AND version_id = vid
by ti to nahradilo vsechny vyskyty stringu id(vcetne tech uvnitr slova version_id) za tu promennou takze bys dostal neco jako
select 123, name from 123s WHERE 123 = 123 AND version_123 = v123
takhle mas: select id, name from ids WHERE id = :id AND version_id = :vid
a v tom nahrazeni se vymeni jen presne :id a tim zustanou sloupce, nazve tabulek apod nezmenene. a vis ze tabulky, sloupce apod nikdy nemaji nazev s dvojteckou.
-
a ty uvozovky uz se pak neresi protoze tim ze se to do mysql posle jako argument tak on vi co je to za typ sloupce.
vidis? neni to skvele, ze neresis uvozovky? nemusis resit ze nekdo dal sloupec id jako string...
-
$select = $pdo->prepare("SELECT type, inside FROM configuration WHERE ID = :id");
":id" je identifikátor parametru. Proto kolem něho nejsou uvozovky ani když je v tom parametru řetězec.
-
Chápu, že dneska třeba bez PDO jako PHPčkař nenajdu uplatnění, ale když to vidím, tak bych blil... Zlatý starý normální funkce...
chapu, ze dneska s lopatou uz moc nenajdu uplatneni, ale kdyz ty pendolina a railjety vidim, tak bych blilb... Zlaty stary konesprezky!
Railjety a Pendolina kolem mě nejezdí, my tady u nás jezdíme dobytčákama. Hele, neni to špatný, dopraví Tě to totiž úplně stejně. Přičemž ty novější by ani nebyly rychlejší, protože trať tady stojí za hovno...
vsak jo, trabant by te taky dovezl prakticky kamkoliv a presto jich dneska uz moc nevidis... stejne tak jako fabky nahrazujou u duchodcu filcky ktery nahradily embesa.
Já to nemyslim špatně a nikoho neodrazuju od používání PDO (nebo OOP), spíš naopak. Jen jde o to, že já se tim živit nikdy nebudu, PHP dělám jen jako svůj "hlavní jazyk" a umím v něm nejvíc. Protože ale nedělám pro nikoho a neplánuju to, tak si vystačím s jednoduchýma základama, který už umim. Prostě v PHP nemám žádný cíle. I kdy to znělo jako jasnej výlev, tak to bylo zkrátka myšlený takhle... Snad se chápeme.
-
všem moc díky!
ještě bych Vás chtěl poprosit o objasnění, zda to chápu správně:
$select->bindParam(':tady se dosadí o jaký slq parametr jde', php $proměná která se na tento parametr naváže, zde jakým datovým typem bude);
-
http://php.net/manual/en/pdostatement.bindparam.php
:-)
-
no vypadá to, že jsem to pochopil správně :)
-
ač se jeví, že vše je správně stále nedokážu dostat žádnej výstup:
try {
$pdo = new PDO ($induce, $user, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$select = $pdo->prepare("SELECT type, inside FROM configuration WHERE ID = :id");
$select->bindParam(':id', $id, PDO::PARAM_INT);
// execute QUERY
$select->execute();
$cabinet = $select->fetch(PDO::FETCH_ASSOC);
echo $cabinet["type"]. " " . $cabinet["inside"];
}
-
http://php.net/manual/en/function.print-r.php
-
mělo by tedy stačit?
print_r($cabinet);
-
paklize nejsi schopen googlem zjistit co dela print_r tak to vzdej, kup si lopatu a krumpac... budes tim lidstvu prospesnejsi, protoze programator z tebe s takovou nikdy nebude
-
a jejda....
tady člověk s některýma nemá šanci, pokud se tím profesionálně neživý.....
někdo prostě nechce být profi programátor a všem to říkat, někdo prostě jen kutá pro sebe, experimentuje a nebo dělá jednoúčelové věci
-
No tak si kutej, experimentuj nebo delej jednoucelove veci. Domnivam se, ze se naucis vic nez pokladanim spousty dotazu.
Zkus projit tech 10 radku a fakt pochopit co to dela - ee to lepsi nez polozit dalsich 20 blbych dotazu.
-
ač se jeví, že vše je správně stále nedokážu dostat žádnej výstup:
Je možné, že takový záznam v DB prostě a jednoduše není?
-
ha, něco podobného mě napadlo, prověřím tabulku databáze
děkuji
-
mysql> SHOW COLUMNS FROM configuration;
+----------------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------------+------------------+------+-----+---------+----------------+
| ID | int(10) unsigned | NO | PRI | NULL | auto_increment |
| mark | varchar(20) | YES | | NULL | |
| type | char(3) | YES | | NULL | |
| inside | char(3) | YES | | NULL | |
| door_direction | char(1) | YES | | NULL | |
| partition | int(11) | YES | | NULL | |
| width | int(11) | YES | | NULL | |
| deep | int(11) | YES | | NULL | |
| height | int(11) | YES | | NULL | |
| sockel_height | int(11) | YES | | NULL | |
| podestal | char(5) | YES | | NULL | |
| plinth | char(3) | YES | | NULL | |
| lid | char(3) | YES | | NULL | |
| door | char(3) | YES | | NULL | |
| locking | char(2) | YES | | NULL | |
| washer | char(4) | YES | | NULL | |
| doorlock | char(8) | YES | | NULL | |
| masterkey | char(2) | YES | | NULL | |
| centralkey | char(2) | YES | | NULL | |
| shelf | char(3) | YES | | NULL | |
| backside | char(3) | YES | | NULL | |
| corpus_color | char(5) | YES | | NULL | |
| door_color | char(5) | YES | | NULL | |
| door_color2 | char(5) | YES | | NULL | |
| numbering | char(3) | YES | | NULL | |
| number_on_key | char(3) | YES | | NULL | |
| bracelet | char(3) | YES | | NULL | |
| door_limiter | char(3) | YES | | NULL | |
| hooks | char(5) | YES | | NULL | |
| silicon_seal | char(3) | YES | | NULL | |
| sheet_quality_corpus | char(5) | YES | | NULL | |
| sheet_quality_door | char(5) | YES | | NULL | |
| roof | char(2) | YES | | NULL | |
+----------------------+------------------+------+-----+---------+----------------+
33 rows in set (0.00 sec)
mysql>
mysql> SELECT ID FROM configuration
-> ;
+----+
| ID |
+----+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
| 11 |
| 12 |
| 13 |
| 14 |
| 15 |
| 16 |
| 17 |
| 18 |
| 19 |
| 20 |
| 21 |
| 22 |
| 23 |
| 24 |
| 25 |
| 26 |
| 27 |
| 28 |
| 29 |
| 30 |
| 31 |
| 32 |
| 33 |
| 34 |
| 35 |
+----+
35 rows in set (0.00 sec)
mysql>
jestli něco nepřehlížím, tak se mi jeví v pořádku
-
jestli něco nepřehlížím, tak se mi jeví v pořádku
A jaká je hodnota v proměnné $id? Měla by být v rozsahu 1..35. Je vůbec nastavena?
var_dump($id);
-
A jaká je hodnota v proměnné $id? Měla by být v rozsahu 1..35. Je vůbec nastavena?
var_dump($id);
vrátí:
NULL
-
A jaká je hodnota v proměnné $id? Měla by být v rozsahu 1..35. Je vůbec nastavena?
var_dump($id);
vrátí:
NULL
Výborně! Takže se ptáš na nějaký záznam a neřekneš databázi, který chceš. Tak ti žádný neposlala. Který z těch 35 záznamů jsi vlastně chtěl? Musíš jí to sdělit právě prostřednictvím proměnné $id.
-
ach tak, moje neznalost měla zato, že vrátí všechny záznamy
-
v tuto chvíli je mím cílem získat všechny hodnoty ze sloupce 'type' a to tak abych je mohl následně odeslat jako json data
-
v tuto chvíli je mím cílem získat všechny hodnoty ze sloupce 'type' a to tak abych je mohl následně odeslat jako json data
V tom případě musíš z toho SQL dotazu vyhodit klauzuli "WHERE ID = :id" a místo hvězdičky napsat název sloupce "type".
SELECT `type` FROM configuration;
-
V tom případě musíš z toho SQL dotazu vyhodit klauzuli "WHERE ID = :id" a místo hvězdičky napsat název sloupce "type".
SELECT `type` FROM configuration;
super už se to začíná hejbat k očekávanému cíli:
$select = $pdo->prepare("SELECT type FROM configuration");
$select->execute();
$cabinet = $select->fetchAll(PDO::FETCH_ASSOC);
print_r($cabinet);
původní ->fetch mi vracel pouze jeden prvek z pole(nevím či první či poslední), tak jsem ho nahradil ->fetchAll a už jde vidět obsah celého pole:
Array ([0] => Array ( [type] => G1E ) [1] => Array ( [type] => G1E ) [2] => Array ( [type] => G1E ) [3] => Array ( [type] => G1E ) [4] => Array ( [type] => G1E ) [5] => Array ( [type] => G1E ) [6] => Array ( [type] => G1E ) [7] => Array ( [type] => G1E ) [8] => Array ( [type] => G1E ) [9] => Array ( [type] => G1E ) [10] => Array ( [type] => G1E ) [11] => Array ( [type] => G1E ) [12] => Array ( [type] => G1E ) [13] => Array ( [type] => G1E ) [14] => Array ( [type] => G1E ) [15] => Array ( [type] => G1E ) [16] => Array ( [type] => G1E ) [17] => Array ( [type] => G1E ) [18] => Array ( [type] => G1E ) [19] => Array ( [type] => G1E ) [20] => Array ( [type] => G1E ) [21] => Array ( [type] => G1E ) [22] => Array ( [type] => G1E ) [23] => Array ( [type] => G1E ) [24] => Array ( [type] => G1E ) [25] => Array ( [type] => G1E ) [26] => Array ( [type] => G1E ) [27] => Array ( [type] => G1E ) [28] => Array ( [type] => G1E ) [29] => Array ( [type] => G1E ) [30] => Array ( [type] => G1E ) [31] => Array ( [type] => G1E ) [32] => Array ( [type] => G1E ) [33] => Array ( [type] => G1E ) [34] => Array ( [type] => ) )
-
tak a teď se tedy poohlídnu po metodě jak to poslat jako json data
-
tak a teď se tedy poohlídnu po metodě jak to poslat jako json data
Zkus tohle:
$cabinet = $select->fetchAll(PDO::FETCH_COLUMN);
echo json_encode($cabinet);
-
díky....
zrovna jsem to zkoušel je s tím, že jsem to dosadil do proměné:
$json = json_encode( $cabinet );
print_r($json);
a vypadá to ok
díky
-
si to kutej jak chces, ale kdyz se misto google ptas napoprve do fora tak se nikam nepohnes. navic print_r/var_dump je vec bez ktery nevydrzis dele nez prvnich par hodin. kdyby to bylo neco advanced tak clovek poradi rad, ale prvni musi byt videt snaha.
-
si to kutej jak chces, ale kdyz se misto google ptas napoprve do fora tak se nikam nepohnes. navic print_r/var_dump je vec bez ktery nevydrzis dele nez prvnich par hodin. kdyby to bylo neco advanced tak clovek poradi rad, ale prvni musi byt videt snaha.
to je jeste v pohode, na nette foru se lidi ptaj stylem "Pise mi to: wrong password in database connection. Co mam proboha delat?????"
-
naštěstí jsou i ochotní lidé, kteří se snaží pomoci za všech okolností, bez neustáleho remcáné a povyšování se, a věřím, že nyní když se to za pomoci Kida podařilo někam dostat, to pomůže několika dalším lamkám jaké já, bez toho aby se doprošovali bohů.
-
Pripada mi to tak, ze sa len nudis a robis si z ludi srandu. Pytas sa na veci, ktore bezny clovek pomocou Google zisti behom par sekund, aj ked tomu nerozumie. A ked niekomu podakujes, ze ti pomahal, tak doje... aj jeho meno. Ako chces potom vôbec nieco napisat sam, co nebude skomolane?
-
Vubec není na místě zkoumat, zda si člověk hraje/učí se nebo dělá něco profesionálního, jen hnup se v tom stourá. Ano a to je přesně co říkáš 'Google to najde za pár sekund', ale proč to ten google našel už Vás nenapadlo?....protože vznikly nějaké helpy, weby, fora a čím víc toho je tím lépe, v tom je ten internet krásnej. A jsem strašně moc rád, že na tomto příkladu se demonstrovalo, jak když jsou lidi jako Kid ochotní i s hloupějšíma, dá se to vyřešit do konce.
Rád bych poděkoval nejen KIdovi, ale všem zůčastněným snažícím se pomoci.
-
Ked myslis ze to takto funguje...
Ze vsetko co si ty lenivy urobit bude neustale za teba niekto iny robit. Dalsi dovod robit to sam je ten, ze z toho sa viac naucis ako ked to za teba bude robit niekto iny.
Nuz, ale ide ina doba, takze treba si zvykat.
A ten clovek co ti pomalal je Kit, apon jeho meno neprzni.
-
takže dost keců a vyčítání si kdo umí kdo ne...zde je funkční řešení pro všechny ostatní, kteří to budou potřebovat:
/connection to MySQL database
//define constant's in runtime
define('SQL_HOST','localhost');
define('SQL_DBNAME','cabinets');
define('SQL_USERNAME', 'configurator');
define('SQL_PASSWORD','configure');
//define variables for further acctions
$induce = 'mysql:dbname=' . SQL_DBNAME . '; host=' . SQL_HOST . '';
$user = SQL_USERNAME;
$password = SQL_PASSWORD;
// "try - catch" block
try {
$pdo = new PDO ($induce, $user, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$select = $pdo->prepare("SELECT type FROM configuration");
//$select->bindParam(':id', $id, PDO::PARAM_INT);
// execute QUERY
$select->execute();
$cabinet = $select->fetchAll(PDO::FETCH_ASSOC);
$json = json_encode( $cabinet );
print_r($json);
}
catch (PDOException $e) {
die('Connection failed: ' . $e->getMessage() );
}
-
Ked myslis ze to takto funguje...
Ze vsetko co si ty lenivy urobit bude neustale za teba niekto iny robit. Dalsi dovod robit to sam je ten, ze z toho sa viac naucis ako ked to za teba bude robit niekto iny.
Nuz, ale ide ina doba, takze treba si zvykat.
A ten clovek co ti pomalal je Kit, apon jeho meno neprzni.
podívej se na sebe..kolik času tady plýtváš kázáním...když poradit nechceš a to ať z jakehokoliv důvodu, nemá smysl reagovat...
rozhodně za mně nikdo nedělá vše....přečti si celé vlákno...byl jsem nabádán k PDO....sám jsem si k tomu připravil konstrukci a teprve až potom poprosil o pomoc s konkretnima problemama a zapochodu to řešil.
-
Aaaaano a tucty takovych prikladu se daji najit treba na manualovych strankach PHP treba tady: http://php.net/manual/en/pdostatement.fetchall.php
Ovsem domnivam se, ze pro lidi s tvym pristupem je to stejne k nicemu, protoze misto toho, aby si to vygooglili a pochopili, si to nechaji od nekoho seskladat na foru a jeste budou drzkovat. A pak az budou potrebovat misto vsech zaznamu vybrat treba jenom jeden, budou stejne v pasti, protoze absolutne netusi co ty podivny pismenka se strednikama delaj.
-
možná to tak s někým je, ale já to díky tomuto vláknu začal chápat
dejme tomu, že budu chtít teď z DB vypsat pouze typy, které mají hodnotu sloupce 'plinth' S30
$select = $pdo->prepare("SELECT type FROM configuration WHERE plinth= :plinth");
$select->execute(array(':plinth' => 'S30'));
$cabinet = $select->fetchAll(PDO::FETCH_ASSOC);
$json = json_encode( $cabinet );
print_r($json);
-
Pekny, smekam, fakt jsem to necekal ...
-
ono to pujde... btw v cem to pises? bylo by fajn si hned na zacatku zvyknout psat jednim stylem... treba mezery kolem zavorek apod.
-
ono to pujde... btw v cem to pises? bylo by fajn si hned na zacatku zvyknout psat jednim stylem... treba mezery kolem zavorek apod.
PHP používám jako začátečník a to jen na menší věci(udělátka) jako toto,
ano, i přesto, že mě to hlava bere velmi pomalu, půjde to
používám Aptanu, ale ta mi upgradem začla padat, tak než to vyřeším používám Sublime a líbí se mi....pravda jeden styl...začnu s tím něco dělat
-
Pro toho slovenskýho kazatele: Učil jsem PHP kamaráda. Teda učil... on jen věděl, že něco takovýho je, ale neměl páru o ničem, anglicky moc neuměl, ... Vysvětloval jsem mu všechno, úplně totálně všechno. MySQL bylo až "na třetí hodině", protože do tý doby nechápal ani cykly... Kdybych mu řekl "najdi si to", dodnes by se nikam nedostal. I začátky a prkotiny se dají řešit na foru. Koneckonců, to je vidět na tomhle případu. Já taky občas vyvěsim kód, kde potřebuju poradit s kravinou. Většinou po několika hodinách zkoušení a hledání řešení. Ale čím dýl zkoušim a hledam, tím spíš na tu kravinu nepřijdu (někde chybí středník/uvozovky/mám = místo == apod.). Když na to koukne někdo jinej, zasměje se (protože to zná z vlastní zkušenosti) a poradí.
ZAJDAN: Půjde to, to je jasné. Jak píše to_je_jedno, na stylu zapracuj, nějakej si "vymysli" a drž to. Já na to přišel teprve nedávno. Konečně dělám takový běžný věci jako: mezery kolem = a ==, mezery za , (když je ve funkci víc parametrů) a další. Odrážím pravým tabulátorem, ne mezerama apod. Mám ale i nezvyklý věci, například začátek if nebo cyklů (znak { ) mám na stejnym řádku, jako ten if. Myslím, že běžně se to odráží na vlastní řádek...
Píšu v Kate (desktop) nebo v Anjuta (netbook). Převážně v Anjuta, protože se přitom můžu válet na gauči... ;D
-
Proto, aby php kod nevypadal jako od prasat, byl jednotny a dalo se tak (o neco lepe) vyznat v cizim kodu, existuje stabni kultura psani kodu: http://pear.php.net/manual/en/standards.php. Prohlednete si to a programujte tak.
-
Proto, aby php kod nevypadal jako od prasat, byl jednotny a dalo se tak (o neco lepe) vyznat v cizim kodu, existuje stabni kultura psani kodu: http://pear.php.net/manual/en/standards.php. Prohlednete si to a programujte tak.
To jsou pravidla, která jsou určena pro PEAR. Některá z nich jsou rozumná, jiná ne.
-
..., na stylu zapracuj, nějakej si "vymysli" a drž to. Já na to přišel teprve nedávno. Konečně dělám takový běžný věci jako: mezery kolem = a ==, mezery za , (když je ve funkci víc parametrů) a další. Odrážím pravým tabulátorem, ne mezerama apod. Mám ale i nezvyklý věci, například začátek if nebo cyklů (znak { ) mám na stejnym řádku, jako ten if. Myslím, že běžně se to odráží na vlastní řádek...
Když se podívám na své starší zdrojáky, tak se mi už také moc nelíbí. Naštěstí existují formátovače, které to dokáží přerovnat podle nějakých pravidel.
Také používám tabulátor, znak '{' na stejném řádku jako if nebo function a break ani else pro jistotu nepoužívám vůbec.
-
To tam jako místo else pereš pod to obrácenou podmínku? A co break ve switchi? Taky ne? Ty vlastně pro jistotu nepoužíváš ani gettery a settery, co? Co všechno ještě pro jistotu nepoužíváš? Jen tak ze zvědavosti, zaujalo mě to.
-
ja u PHP pro jistotu nepouzivam cykly ani funkce
-
To tam jako místo else pereš pod to obrácenou podmínku? A co break ve switchi? Taky ne? Ty vlastně pro jistotu nepoužíváš ani gettery a settery, co? Co všechno ještě pro jistotu nepoužíváš? Jen tak ze zvědavosti, zaujalo mě to.
Místo else nedávám nic. Není potřebné. Často není potřebné ani if... Místo break ve switchi mi mnohem lépe poslouží return. Místo setteru se krásně dá použít konstruktor. Místo getteru raději data zpracuji uvnitř objektu, abych ty atributy z objektu vůbec ven nevytahoval.
-
To myslíš vážně nebo jenom trolluješ?
-
To myslíš vážně nebo jenom trolluješ?
To myslím skutečně vážně. Proč by to měl být trolling? Tyhle struktury přece patří do strukturovaného programování. Přechodem na OOP se jich postupně zbavuji. Evidentně to jde, tak proč to tak nedělat? Programy se tím výrazně zkrátí, zjednoduší a často i zrychlí.
-
To myslíš vážně nebo jenom trolluješ?
To myslím skutečně vážně.
mám to! nepoužívá if-else-then, ale ternáry!
-
mám to! nepoužívá if-else-then, ale ternáry!
To by tím pádem else používal tak jako tak.
Evidentně to jde, tak proč to tak nedělat?
Já věřím, že ti to funguje. To je jako když se někdo rozhodne, že psát háčky a čárky je zbytečnost - taky určitě sdělí, co potřeboval, akorát se to pak po něm dost blbě čte. Oni tam ty keywordy autoři jazyka nedávali jen tak ze srandy, protože se nudili, ale proto, že za určitých podmínek mají svoje použití. Říct si u poloviny prostředků, že je to pěkná píčovina, už to schválně nikdy nepoužít a tam kde by se to hodilo to schválně obcházet, to mi nějak rozum nebere. Ale dělej, jak uznáš za vhodné, on tě život naučí. Dokud s tvými kódy nemusím pracovat, tak je mi to v podstatě buřt.
-
mám to! nepoužívá if-else-then, ale ternáry!
To by tím pádem else používal tak jako tak.
Ternár není else. Pokud do proměnné ukládám jednu ze dvou možných hodnot, ternár je tou správnou volbou.
Evidentně to jde, tak proč to tak nedělat?
Já věřím, že ti to funguje. To je jako když se někdo rozhodne, že psát háčky a čárky je zbytečnost - taky určitě sdělí, co potřeboval, akorát se to pak po něm dost blbě čte. Oni tam ty keywordy autoři jazyka nedávali jen tak ze srandy, protože se nudili, ale proto, že za určitých podmínek mají svoje použití. Říct si u poloviny prostředků, že je to pěkná píčovina, už to schválně nikdy nepoužít a tam kde by se to hodilo to schválně obcházet, to mi nějak rozum nebere. Ale dělej, jak uznáš za vhodné, on tě život naučí. Dokud s tvými kódy nemusím pracovat, tak je mi to v podstatě buřt.
Kupodivu se to pak čte velmi dobře. Lépe než když tam taková klíčová slova jsou. OOP nám umožňuje používat jiné konstrukce než ty, které tady byly někdy před 20 lety. Když vezmu výsledný příklad a trochu ho přeformátuji, dostanu tohle:
$host = 'localhost';
$dbname = 'cabinets';
$user = 'configurator';
$password = 'configure';
$dsn = "mysql:dbname=$dbname; host=$host";
$atributy = Array(
\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
\PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8",
);
try {
$pdo = new PDO($dsn, $user, $password, $atributy);
$select = $pdo->prepare("SELECT type FROM configuration");
$select->execute();
$cabinet = $select->fetchAll(PDO::FETCH_ASSOC);
$json = json_encode( $cabinet );
print_r($json);
} catch (PDOException $e) {
throw new Exception('Connection failed: ' . $e->getMessage() );
}
Vidíš tam někde nějaké if, else nebo break? Máš snad pocit, že je to nepřehledné?
-
Ježíši Kriste! Ternár je přece jenom jinak zapsaný if-else, proboha. Jinak já netvrdím, že máš cpát podmínky na každý druhý řádek, ale že rozhodně není pravda, že nemají význam nebo jsou dokonce zbytečné. Doporučil bych přestat bezmyšlenkovitě přebírat rady z článků typu "blablabla is evil in the OOP", má to na tebe špatný vliv. Ale to je jako mluvit do dubu. Mám lepší věci na práci, měj se.
-
Ježíši Kriste! Ternár je přece jenom jinak zapsaný if-else, proboha.
Aha, takže tohle nedorozumění pramení z toho, že si pleteš programovou strukturu s výrazem.
Jinak já netvrdím, že máš cpát podmínky na každý druhý řádek, ale že rozhodně není pravda, že nemají význam nebo jsou dokonce zbytečné.
Možná by sis měl znovu přečíst, jak jsem to napsal, abys to pochopil.
Doporučil bych přestat bezmyšlenkovitě přebírat rady z článků typu "blablabla is evil in the OOP", má to na tebe špatný vliv. Ale to je jako mluvit do dubu. Mám lepší věci na práci, měj se.
Jaké rady přebírám z jakých článků? Googlil jsem vhodnou referenci pro tazatele na gettery/settery a tahle mi připadla jako dobrá.
Stačí, když se začteš do knih od Roberta C. Martina a Martina Fowlera. Snad potom pochopíš, že o těchto věcech tam píší. Jak nahradit "if" polymorfismem, jak nelpět na jediném výstupním bodu z metody, jak aplikovat SRP, jak nepsat komentáře, jako volit názvy proměnných a metod, jak neporušit Déméteřin zákon,...
BTW: Gettery a settery zmíněný Déméteřin zákon porušují poměrně často.