Php JSON encode + while

Indította NevemSenki, 2012 december 11, 09:43:09 DÉLUTÁN

Előző téma - Következő téma

NevemSenki

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('<foo>',"'bar'",'"baz"','&blong&'"\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('foo' => 'bar''baz' => 'long');

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ézNormal: ["<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éz{"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!

Locutus

Á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!

NevemSenki

#2
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
Csak a Puffin ad neked erőt, és mindent lebíró akaratot!

Powered by EzPortal