Forum » Programiranje » [PHP]Zajem podatkov iz baze
[PHP]Zajem podatkov iz baze
KernelPanic ::
Spostovani!
Zakaj mi spodnja skripta ne vraca podatkov, stevilo zadetkov je ok (8), vendar dobim same prazne nize:
Lp,
M.
Zakaj mi spodnja skripta ne vraca podatkov, stevilo zadetkov je ok (8), vendar dobim same prazne nize:
<?php session_start(); if($_SERVER["REQUEST_METHOD"]=="POST") { $hostname_localhost ="localhost"; $database_localhost ="localhost"; $username_localhost ="test"; $password_localhost ="test"; $localhost=mysql_connect($hostname_localhost, $username_localhost, $password_localhost) or die(mysql_error()); mysql_select_db($database_localhost) or die(mysql_error()); $query_user=mysql_query("SELECT id_category FROM ps_category WHERE id_parent =1 AND active=1"); $rows=mysql_num_rows($query_user); if($rows>0) { $output=mysql_fetch_assoc($query_user); $query_categories=mysql_query("SELECT name FROM ps_category_lang WHERE id_category IN ($output) AND id_lang=1"); $rows_categories=mysql_num_rows($query_categories); if($rows_categories>0) { $categories=mysql_fetch_assoc($query_categories); $userdata=array("name" => $output['name']); print(json_encode($userdata)); mysql_close(); } // if } else { #echo "User not found.<br/>"; } // if } // if ?>V php sem zacetnik, vendar mislim, da je problem v drugem SQL stavku, kjer uporabim SELECT * FROM X WHERE Y IN (). Znotraj teh oklepajev je treba lociti vrednosti z vejico, kako to storim v php kodi?
Lp,
M.
urosz ::
vse zadetke ki so v $output moraš združit v niz
neki takega recimo:
neki takega recimo:
$niz = ""; while ($output=mysql_fetch_assoc($query_user)) { $niz .= $output . ","; } // odrežemo zadnjo vejico $niz = substr($niz, 0, strlen($niz)-2);
Zgodovina sprememb…
- spremenil: urosz ()
KernelPanic ::
Fantje, prosim se za malo pomoci! Spodnja skripta mi nikakor noce delovati!!!! Celo noc nisem spal in se zaje.... z to skripto, a kdo vidi kako sintakticno napako:
Lp,
M.
<?php session_start(); if($_SERVER["REQUEST_METHOD"]=="POST") { $hostname_localhost ="localhost"; $database_localhost ="localhost"; $username_localhost ="test"; $password_localhost ="test"; $localhost=mysql_connect($hostname_localhost, $username_localhost, $password_localhost) or die(mysql_error()); mysql_select_db($database_localhost) or die(mysql_error()); $query_categories_id_numbers=mysql_query("SELECT id_category FROM ps_category WHERE id_parent=1 AND active=1"); $number_of_categories=mysql_num_rows($query_categories_id_numbers); if($number_of_categories>0) { $categories_id_numbers=""; while($category_id_number=mysql_fetch_assoc($query_categories_id_numbers)) { $categories_id_numbers.=$category_id_number.","; } // while $categories_id_numbers=substr($categories_id_numbers, 0, strlen($categories_id_numbers)-2); $query_categories_names=mysql_query("SELECT name FROM ps_category_lang WHERE id_category IN ($categories_id_numbers) AND id_lang=1"); $number_of_categories_names=mysql_num_rows($query_categories_names); if($number_of_categories_names>0) { $categories=mysql_fetch_assoc($query_categories_names); $userdata=array("name" => $categories['name']); print(json_encode($userdata)); } // if } else { } // if } // if ?>
Lp,
M.
ales85 ::
Kakšno napako ti pa javi PHP? Če še nimaš, potem si za razvijanje vklopi "error reporting" v php.ini imaš stikalo display_error, ki mora biti "on". Nato pa zopet izvedi tvojo skripto in sporoči napako, ki ti jo javi.
Mesar ::
Za mysql_query() dodaj echo mysql_error(); če nimaš pri nobenem queryu napak dopolni else ... da vidiš koliko vrstic dobiš, če dobiš več kot 0 vrstic lahko daš print_r($category_id_number) v while, da vidiš kakšne podatke dejansko dobiš.
Pa ne rezat zadnje vejice stran...
if($categories_id_numbers == '') { $categories_id_numbers = $category_id_number; } else { $categories_id_numbers.=",".$category_id_number; }
oz.
$categories_id_numbers .= ($categories_id_numbers == '' ? '' : ',').$category_id_number;
Pa ne rezat zadnje vejice stran...
if($categories_id_numbers == '') { $categories_id_numbers = $category_id_number; } else { $categories_id_numbers.=",".$category_id_number; }
oz.
$categories_id_numbers .= ($categories_id_numbers == '' ? '' : ',').$category_id_number;
Your turn to burn!
Zgodovina sprememb…
- spremenil: Mesar ()
ales85 ::
KernelPanic ne rabiš gledati error.log ampak ko nastaviš error reporting se ti error izpiše, ko greš na spletno stran (ta skripta). In tisti error prilepi.
KernelPanic ::
KernelPanic ne rabiš gledati error.log ampak ko nastaviš error reporting se ti error izpiše, ko greš na spletno stran (ta skripta). In tisti error prilepi.Vse sem vklopil, se vedno ne dobim nobene napake!
Sedaj sem pognal android aplikacijo, ki klice skripto in v rezultatu funkcije dobim sledec string (wtf??):
"Unknown column 'Array' in 'where clause'Od kod njemu ime column-a Array?????
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /var/www/moja-domena.com/php/getCategories.php on line 41
"
Zgodovina sprememb…
- spremenil: KernelPanic ()
Ziga Dolhar ::
var_dump("SELECT name
FROM ps_category_lang
WHERE id_category IN ($categories_id_numbers) AND id_lang=1");
FROM ps_category_lang
WHERE id_category IN ($categories_id_numbers) AND id_lang=1");
https://dolhar.si/
KernelPanic ::
Dam tale var_dump, resultat je isti, nikjer nic ne pise matr ... V Netbenasu v aplikaciji pa isti string ...
Arto ::
$categories_id_numbers.=$category_id_number.",";
$category_id_number je array, ti ga pa kar prilepiš k stringu.
Zgodovina sprememb…
- spremenil: Arto ()
KernelPanic ::
Arto ::
Ne vem, ker ne vem kako maš v bazi. Ampak moral boš prebrat vrednost nekega indexa od $category_id_number. Mogoče si mislil $category_id_number['id']?
EDIT: Aja ne, pomoje morš dat $category_id_number['category_id'].
EDIT: Aja ne, pomoje morš dat $category_id_number['category_id'].
Zgodovina sprememb…
- spremenil: Arto ()
KernelPanic ::
Lej v bazi imam dve tabeli (zaenkrat - baza je bazirana na prestashop template-u), ki se nanasata na kategorijo izdelkov. Kategorija, ki ima za parent_id vrednost 1, je vrhnja kategorija (glavna). V php skripti najprej poberem id-je le teh kategorij (z parent_id=1) in nato v drugi tabeli preko dobljenih id-jev (iz prvega mysql stavka) poiscem imena kategorij. Ta imena (in nato se slike, ampak to je drug problem, ker moram najprej nastudirati sistem, kako se slike kategorij shranijo v prestashop template-u) bi rad prenesel v android aplikacijo, da jih prikazem v ImageView-u, da lahko nato pregledujes izdelke v izbrani kategoriji. Torej, v drugem mysql stavku hocem pobrati imena kategorij, jih spraviti v array, ga zakodirati v json in poslati android napravi.
Lp,
M.
Lp,
M.
Zgodovina sprememb…
- spremenil: KernelPanic ()
Arto ::
Pomoje morš dat samo namest $category_id_number $category_id_number['id_category']
Če pogledaš kaj ti vrne mysql_fetch_asoc - ti vrne array. Ta array bo imel polja, ki si jih izbral s SELECT stavkom. V tvojem primeru imaš "SELECT id_category ...", torej hočeš očitno polje id_category:
Če pogledaš kaj ti vrne mysql_fetch_asoc - ti vrne array. Ta array bo imel polja, ki si jih izbral s SELECT stavkom. V tvojem primeru imaš "SELECT id_category ...", torej hočeš očitno polje id_category:
$category_id_number['id_category']
Zgodovina sprememb…
- spremenil: Arto ()
KernelPanic ::
Matr, zdele mi pa javlja sledece:
"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') AND id_lang=1' at line 3Tole je pa malo dodelana skripta sedaj:
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /var/www/moja-domena.com/php/getCategories.php on line 39
"
<?php session_start(); if($_SERVER["REQUEST_METHOD"]=="POST") { $hostname_localhost ="localhost"; $database_localhost ="localhost"; $username_localhost ="test"; $password_localhost ="test"; $localhost=mysql_connect($hostname_localhost, $username_localhost, $password_localhost) or die(mysql_error()); mysql_select_db($database_localhost) or die(mysql_error()); $query_categories_id_numbers=mysql_query("SELECT id_category FROM ps_category WHERE id_parent=1 AND active=1"); echo mysql_error(); // debug code $number_of_categories=mysql_num_rows($query_categories_id_numbers); if($number_of_categories>0) { $categories_id_numbers=""; while($category_id_number=mysql_fetch_assoc($query_categories_id_numbers)) { $categories_id_numbers.=$category_id_number['id_category'].","; } // while substr($categories_id_numbers,0,-1); $query_categories_names=mysql_query("SELECT name FROM ps_category_lang WHERE id_category IN ($categories_id_numbers) AND id_lang=1"); echo mysql_error(); // debug code $number_of_categories_names=mysql_num_rows($query_categories_names); if($number_of_categories_names>0) { $categories=mysql_fetch_assoc($query_categories_names); $userdata=array("name" => $categories['name']); print(json_encode($userdata)); } // if } else { } // if } // if ?>
Arto ::
Raje print_r, če je array
Aja sm tud jes en bumbar. Ja veš kaj nared, novo spremenljivko za SQL, pa ga še sprinti preden ga pokličeš. Tkole:
... $sql = "SELECT name FROM ps_category_lang WHERE id_category IN ($categories_id_numbers) AND id_lang=1"; echo $sql; $query_categories_names=mysql_query($sql); echo mysql_error(); // debug code ...
keworkian ::
Probi zdej
<?php session_start(); if($_SERVER["REQUEST_METHOD"]=="POST") { $hostname_localhost ="localhost"; $database_localhost ="localhost"; $username_localhost ="test"; $password_localhost ="test"; $localhost=mysql_connect($hostname_localhost, $username_localhost, $password_localhost) or die(mysql_error()); mysql_select_db($database_localhost) or die(mysql_error()); $query_categories_id_numbers=mysql_query("SELECT id_category FROM ps_category WHERE id_parent=1 AND active=1"); echo mysql_error(); // debug code $number_of_categories=mysql_num_rows($query_categories_id_numbers); if($number_of_categories>0) { $categories_id_numbers=""; while($category_id_number=mysql_fetch_assoc($query_categories_id_numbers)) { $categories_id_numbers.=$category_id_number['id_category'].","; } // while $categories_id_numbers = substr($categories_id_numbers,0,strlen($categories_id_numbers)-1); $query_categories_names=mysql_query("SELECT name FROM ps_category_lang WHERE id_category IN ($categories_id_numbers) AND id_lang=1"); echo mysql_error(); // debug code $number_of_categories_names=mysql_num_rows($query_categories_names); if($number_of_categories_names>0) { $categories=mysql_fetch_assoc($query_categories_names); $userdata=array("name" => $categories['name']); print(json_encode($userdata)); } // if } else { } // if } // if ?>
Obscenities in B-Flat
KernelPanic ::
Takoj bom probal, sedaj sem dobil paket v androida (gledam v debuger watch):
Zdele je pa neki zacel migat, ja, hvala, samo se par stvari preverim!
"16,74,75,87,159,199,You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') AND id_lang=1' at line 3Cifre zdej koncno dobim, samo vejica je na kocnu stringa, moram se je resit! Takoj javim ce bo delalo!
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /var/www/moja-domena.com/php/getCategories.php on line 43
"
Zdele je pa neki zacel migat, ja, hvala, samo se par stvari preverim!
Zgodovina sprememb…
- spremenil: KernelPanic ()
KernelPanic ::
Stvar je zacela migat, koda je sledeca:
<?php session_start(); if($_SERVER["REQUEST_METHOD"]=="POST") { $hostname_localhost ="localhost"; $database_localhost ="localhost"; $username_localhost ="test"; $password_localhost ="test"; $localhost=mysql_connect($hostname_localhost, $username_localhost, $password_localhost) or die(mysql_error()); mysql_select_db($database_localhost) or die(mysql_error()); $query_categories_id_numbers=mysql_query("SELECT id_category FROM ps_category WHERE id_parent=1 AND active=1"); // echo mysql_error(); // debug code $number_of_categories=mysql_num_rows($query_categories_id_numbers); if($number_of_categories>0) { $categories_id_numbers=""; while($category_id_number=mysql_fetch_assoc($query_categories_id_numbers)) { $categories_id_numbers.=$category_id_number['id_category'].","; } // while $categories_id_numbers = substr($categories_id_numbers, 0, strlen($categories_id_numbers)-1); // echo $categories_id_numbers; // debug code $query_categories_names=mysql_query("SELECT name FROM ps_category_lang WHERE id_category IN ($categories_id_numbers) AND id_lang=1"); print_r($query_categories_names); // debug code // echo mysql_error(); // debug code $number_of_categories_names=mysql_num_rows($query_categories_names); if($number_of_categories_names>0) { while($categories=mysql_fetch_assoc($query_categories_names)) { $userdata=array("name" => $categories['name']); } // while print(json_encode($userdata)); } // if } else { } // if } // if ?>Ampak imam se zadnji problem: Spodnja while zanka se sicer sprehodi po najdenih vrednostih, ampak znotraj nje si zapomnem vsak element in ga prepisem, tako, da ostane samo zadnji. Kako spremenim kodo znotraj druge while zanke, da bom dodajal element v json array?
keworkian ::
if($number_of_categories_names>0) { $userdata = array(); while($categories=mysql_fetch_assoc($query_categories_names)) { $userdata[] = array("name" => $categories['name']); } // while print(json_encode($userdata)); } // if
Obscenities in B-Flat
Zgodovina sprememb…
- spremenil: keworkian ()
cobrica ::
Da ne odpiram nove teme.. V čem je finta da koda ne deluje kot bi želel?
Torej želim da stvar preveri če je datum recimo današnji že vpisan v bazi če je doda datum z uro, da lahko backupe dela kr naprej.
$backupname = date("d-m-y"); $query_backups = $this->db->get('backups'); foreach ($query_backups->result() as $row){ if($row->date == $backupname){ // preveri če obstaja že zapis backupa z tem datumom, in začne naprej zapisovat z časom komplet $backupname = date("d-m-y-G-i-s"); } else { $backupname = date("d-m-y"); }
Torej želim da stvar preveri če je datum recimo današnji že vpisan v bazi če je doda datum z uro, da lahko backupe dela kr naprej.
Ziga Dolhar ::
$backupname = date("d-m-y"); $žeObstaja = false; $query_backups = $this->db->get('backups'); foreach ($query_backups->result() as $row){ if($row->date == $backupname){ // preveri če obstaja že zapis backupa z tem datumom, in začne naprej zapisovat z časom komplet $žeObstaja = true break; } } $backupname = $žeObstaja ? date("d-m-y-G-i-s") : date("d-m-y");
https://dolhar.si/
Ziga Dolhar ::
Lion: upam da je dovolj grdo, da bo popravil na kaj lepšega ;).
Sicer pa bi v bistvu zadostovalo ...
(Upam da tisti break deluje tako kot si predstavljam - torej, prekine foreach zanko.)
Sicer pa bi v bistvu zadostovalo ...
foreach ($query_backups->result() as $row) { if($row->date == $backupname) { $backupname = date("d-m-y-G-i-s"); break; } }
(Upam da tisti break deluje tako kot si predstavljam - torej, prekine foreach zanko.)
https://dolhar.si/
Zgodovina sprememb…
- spremenil: Ziga Dolhar ()
KernelPanic ::
Ziga Dolhar ::
Sičnikov zagotovo ne dopušča! Kam pa pridemo s sičniki v kodi!?! :P
https://dolhar.si/
Zgodovina sprememb…
- spremenil: Ziga Dolhar ()
Lion29 ::
KernelPanic je izjavil:
lol@$žeObstajaDobra, sam a php res dopusca sumnike in sicnike za imena spremenljivk? :D
oh my god...
sej bo, sej bo... le pridno se uci
na netu mas na miljone tutorialov, tako da ce mas voljo, se lahko zlo hitro naucis
srecno
Founder and CTO @ Article-Factory.ai
cobrica ::
@ZihaDolhar hvala zadeva deluje iz nule!
Mate mogoče idejo na kakšen način uvozit preko phpja dumpano bazo nazaj? Sepravi da bi restoral bazo?
Mate mogoče idejo na kakšen način uvozit preko phpja dumpano bazo nazaj? Sepravi da bi restoral bazo?
Zgodovina sprememb…
- spremenil: cobrica ()
keworkian ::
@ZihaDolhar hvala zadeva deluje iz nule!
Mate mogoče idejo na kakšen način uvozit preko phpja dumpano bazo nazaj? Sepravi da bi restoral bazo?
Ja, z Import gumbom.
Obscenities in B-Flat
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | HTML in SQL pomoč (strani: 1 2 )Oddelek: Programiranje | 7697 (6575) | def0r |
» | php array sortiranjeOddelek: Izdelava spletišč | 1201 (924) | Mesar |
» | Branje slik jpg iz MySQL z PHPOddelek: Izdelava spletišč | 2431 (2049) | a-ptuj1 |
» | [PHP]Zajem slike iz direktorijaOddelek: Programiranje | 1246 (1163) | KernelPanic |
» | MySQL Query VprašanjeOddelek: Izdelava spletišč | 3240 (3005) | overlord_tm |