» »

[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:
<?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:
$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:
<?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.

KernelPanic ::

Ravno to je, error.log ne javi nobene napake, error reporting je vklopljen!

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;
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 ::

ales85 je izjavil:

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'

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /var/www/moja-domena.com/php/getCategories.php on line 41

"
Od kod njemu ime column-a Array?????

Zgodovina sprememb…

Ziga Dolhar ::

var_dump("SELECT name
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 ...

Ziga Dolhar ::

In rezultat je ... array?
https://dolhar.si/

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 je izjavil:

$categories_id_numbers.=$category_id_number.",";

$category_id_number je array, ti ga pa kar prilepiš k stringu.
LOL mas prav zgleda, kako pa naj to potem naredim, da bo ok?

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'].

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.

Zgodovina sprememb…

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:

$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 3

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /var/www/moja-domena.com/php/getCategories.php on line 39

"
Tole je pa malo dodelana skripta sedaj:
<?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 ::

Dej nared en
echo $query_categories_names;

Pa prlimi sm kako zgleda SQL.

_Dormage_ ::

Raje print_r, če je array

KernelPanic ::

Ma ne eno ne drugo mi nic ne printa v browser!!! PA to je za pozpidit!!! GRRRRRRR ;((

Arto ::

_Dormage_ je izjavil:

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):
"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 3

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /var/www/moja-domena.com/php/getCategories.php on line 43

"
Cifre zdej koncno dobim, samo vejica je na kocnu stringa, moram se je resit! Takoj javim ce bo delalo!

Zdele je pa neki zacel migat, ja, hvala, samo se par stvari preverim! :D:))

Zgodovina sprememb…

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…

cobrica ::

Da ne odpiram nove teme.. V čem je finta da koda ne deluje kot bi želel?
 $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/

Lion29 ::

lol@$žeObstaja
Founder and CTO @ Article-Fatctory.ai

Ziga Dolhar ::

Lion: upam da je dovolj grdo, da bo popravil na kaj lepšega ;).

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…

KernelPanic ::

Lion29 je izjavil:

lol@$žeObstaja
Dobra, sam a php res dopusca sumnike in sicnike za imena spremenljivk? :D

Ziga Dolhar ::

Sičnikov zagotovo ne dopušča! Kam pa pridemo s sičniki v kodi!?! :P
https://dolhar.si/

Zgodovina sprememb…

Lion29 ::

KernelPanic je izjavil:

Lion29 je izjavil:

lol@$žeObstaja
Dobra, sam a php res dopusca sumnike in sicnike za imena spremenljivk? :D


oh my god...:D

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-Fatctory.ai

KernelPanic ::

Ma ok, neumno vprasanje, vem, to sem samo tako vprasal, kot zanimivost ...

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?

Zgodovina sprememb…

  • spremenil: cobrica ()

keworkian ::

cobrica je izjavil:

@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

cobrica ::

Ne preko phpmyadmin ampak preko CMS, katerega urejam?


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

HTML in SQL pomoč (strani: 1 2 )

Oddelek: Programiranje
517069 (5947) def0r
»

php array sortiranje

Oddelek: Izdelava spletišč
91102 (825) Mesar
»

Branje slik jpg iz MySQL z PHP

Oddelek: Izdelava spletišč
152248 (1866) a-ptuj1
»

[PHP]Zajem slike iz direktorija

Oddelek: Programiranje
51131 (1048) KernelPanic
»

MySQL Query Vprašanje

Oddelek: Izdelava spletišč
152968 (2733) overlord_tm

Več podobnih tem