Szerző Téma: Php JSON encode + while  (Megtekintve 5339 alkalommal)

Nem elérhető NevemSenki

  • Adminisztrátor
  • Cube Head
  • *****
  • Hozzászólások: 967
  • Kliens Editer
  • Op. Rendszer: Windows Xp Home Edition
Php JSON encode + while
« Dátum: 2012 December 11, 10:43:09 pm »
Php JSON encode + while

Kevés helyen lelhető fel ezen dologról adat, és nagyon oda kell figyelni hogy miként is csináljuk.
PhP Manual-on ez a rész takarja a lényeget, be is teszem ide:



Example #2 A json_encode() example showing some options in use

Kód: (php) [Kijelölés]
<?php
$a 
= array(&#39;<foo>&#39;,"&#39;bar&#39;",&#39;"baz"&#39;,&#39;&blong&&#39;, "\xc3\xa9");

echo "Normal: ",  json_encode($a), "\n";
echo 
"Tags: ",    json_encode($aJSON_HEX_TAG), "\n";
echo 
"Apos: ",    json_encode($aJSON_HEX_APOS), "\n";
echo 
"Quot: ",    json_encode($aJSON_HEX_QUOT), "\n";
echo 
"Amp: ",     json_encode($aJSON_HEX_AMP), "\n";
echo 
"Unicode: "json_encode($aJSON_UNESCAPED_UNICODE), "\n";
echo 
"All: ",     json_encode($aJSON_HEX_TAG JSON_HEX_APOS JSON_HEX_QUOT JSON_HEX_AMP JSON_UNESCAPED_UNICODE), "\n\n";

$b = array();

echo 
"Empty array output as array: "json_encode($b), "\n";
echo 
"Empty array output as object: "json_encode($bJSON_FORCE_OBJECT), "\n\n";

$c = array(array(1,2,3));

echo 
"Non-associative array output as array: "json_encode($c), "\n";
echo 
"Non-associative array output as object: "json_encode($cJSON_FORCE_OBJECT), "\n\n";

$d = array(&#39;foo&#39; => &#39;bar&#39;, &#39;baz&#39; => &#39;long&#39;);

echo "Associative array always output as object: "json_encode($d), "\n";
echo 
"Associative array always output as object: "json_encode($dJSON_FORCE_OBJECT), "\n\n";
?>


The above example will output:

Idézet
Normal: ["<foo>","'bar'","\"baz\"","&blong&","\u00e9"]
Tags: ["\u003Cfoo\u003E","'bar'","\"baz\"","&blong&","\u00e9"]
Apos: ["<foo>","\u0027bar\u0027","\"baz\"","&blong&","\u00e9"]
Quot: ["<foo>","'bar'","\u0022baz\u0022","&blong&","\u00e9"]
Amp: ["<foo>","'bar'","\"baz\"","\u0026blong\u0026","\u00e9"]
Unicode: ["<foo>","'bar'","\"baz\"","&blong&","é"]
All: ["\u003Cfoo\u003E","\u0027bar\u0027","\u0022baz\u0022","\u0026blong\u0026","é"]

Empty array output as array: []
Empty array output as object: {}

Non-associative array output as array: [[1,2,3]]
Non-associative array output as object: {"0":{"0":1,"1":2,"2":3}}

Associative array always output as object: {"foo":"bar","baz":"long"}
Associative array always output as object: {"foo":"bar","baz":"long"}



Na most igen, de mi van akkor ha a tartalom többrétű, és folyamatosan változik, alapból adatbázisból kiolvasott, mindez limitáltan, és ciklussal megoldva.

Mutatnám is, mert erről sok szemét kering neten! Ez egy működő kód, ebből ki lehet nézni hogy hogy old meg ha kell bele ciklus is. Ez egy keresőnek lesz a motorja. Ebben 2 cilkus is lefut. Mutatom a kódot, majd a kimenetet:

Kód: (php) [Kijelölés]
<?
if(isset($_GET['term'])){
if($_GET['term'] != null){
require_once('../beallitasok/conn.php');

/***************************/
/* Keresőtipp Item LIMIT 5 */
/***************************/
mysql_select_db($worlddb);
$keresotipp_item_sql = "select * from item_template where (name like '%" . str_replace( ' ', '%\' AND name LIKE \'%', $_GET['term'] ) . '%\') LIMIT 5';
$keresotipp_item_keres = mysql_query($keresotipp_item_sql);



$item_array = array();
while($row = mysql_fetch_array($keresotipp_item_keres)) {
            $item = array(
                        'type' => 'wowitem',
'level' => $row['RequiredLevel'],
'term' => $row['name'],
'objectId' => $row['entry'],
'rarity' => $row['Quality']

                    );
            $item_array[] = $item;
}


mysql_select_db($worlddb);
$keresotipp_item_sql2 = "select * from creature_template where (name like '%" . str_replace( ' ', '%\' AND name LIKE \'%', $_GET['term'] ) . '%\') LIMIT 5';
$keresotipp_item_keres2 = mysql_query($keresotipp_item_sql2);


while($row = mysql_fetch_array($keresotipp_item_keres2)) {
            $item2 = array(
                        'type' => 'static',
'desc' => $row['entry'],
'icon' => $row['name'],
'url' => $row['entry']

                    );
            $item_array[] = $item2;
}

$fing = array();

$keresotipp = array(
'results' => $item_array
);

// Echo JSON
echo json_encode($keresotipp);


}
}else{
include('../hibaoldal.php');
}

?>

Ha van a { term } változónak értéke, hasonlítva megnézi az adatbázisban hogy van-e ilyesmi, hs van akkor bedobálja a tömbbe, majd ha a másik lekérésnél is talál, bedobja ugyan azon tömbbe, egybefűzi, és encode-olja,

Kimenet ( a worl szóra rákeresve, vagyis: $_GET['term'] = worl ):

Idézet
{"results":[{"type":"wowitem","level":"38","term":"Underworld Band","objectId":"1980","rarity":"4"},{"type":"wowitem","level":"53","term":"Twig of the World Tree","objectId":"13047","rarity":"3"},{"type":"wowitem","level":"0","term":"World Enlarger","objectId":"18660","rarity":"2"},{"type":"wowitem","level":"0","term":"Schematic: World Enlarger","objectId":"18661","rarity":"2"},{"type":"wowitem","level":"60","term":"Zin'rokh, Destroyer of Worlds","objectId":"19854","rarity":"4"},{"type":"static","desc":"12999","icon":"World Invisible Trigger","url":"12999"},{"type":"static","desc":"15384","icon":"OLDWorld Trigger (DO NOT DELETE)","url":"15384"},{"type":"static","desc":"19871","icon":"World Trigger (Not Immune NPC)","url":"19871"},{"type":"static","desc":"21252","icon":"World Trigger (Not Immune PC)","url":"21252"},{"type":"static","desc":"22515","icon":"World Trigger","url":"22515"}]}

Ha valaki eljut ide, biztosan hasznát fogja venni! Sikerrel használjátok!

Üdv.: Senki
Csak a Puffin ad neked erőt, és mindent lebíró akaratot!

Nem elérhető Locutus

  • Középhaladó
  • ***
  • Hozzászólások: 144
  • Op. Rendszer: Windows 7
Re:Php JSON encode + while
« Válasz #1 Dátum: 2012 December 11, 10:55:35 pm »
Szép munka :D gg
Álljon fel az ország imádandó széki!
Nemzetek, országok, hódoljatok néki!
Uralkodjék köztünk ész, érdem, igazság,
Törvény s egyenlőség, s te, áldott szabadság!

Nem elérhető NevemSenki

  • Adminisztrátor
  • Cube Head
  • *****
  • Hozzászólások: 967
  • Kliens Editer
  • Op. Rendszer: Windows Xp Home Edition
Re:Php JSON encode + while
« Válasz #2 Dátum: 2012 December 12, 01:08:28 am »
Csak érdekesség képen.
Az első Post-ban írt kódot, például ilyen helyekre lehet felhasználni:

http://youtu.be/u9xXUavWzBI


A képet a Képfeltöltés.hu tárolja. http://www.kepfeltoltes.hu

Üdv.: Senki
« Utoljára szerkesztve: 2012 December 12, 01:11:05 am írta NevemSenki »
Csak a Puffin ad neked erőt, és mindent lebíró akaratot!

 

Sitemap 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