Informatikai Barkács Fórum

ÁLTALÁNOS WEB/NET => Általános beszélgetés => A témát indította: NevemSenki Dátum 2012 december 11, 09:43:09 DÉLUTÁN

Cím: Php JSON encode + while
Írta: NevemSenki Dátum 2012 december 11, 09:43:09 DÉLUTÁN
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
Cím: Re:Php JSON encode + while
Írta: Locutus Dátum 2012 december 11, 09:55:35 DÉLUTÁN
Szép munka :D gg
Cím: Re:Php JSON encode + while
Írta: NevemSenki Dátum 2012 december 12, 12:08:28 DÉLELŐTT
Csak érdekesség képen.
Az első Post-ban írt kódot, például ilyen helyekre lehet felhasználni:

http://youtu.be/u9xXUavWzBI (http://youtu.be/u9xXUavWzBI)

(http://kepfeltoltes.hu/thumb/121212/tooltip1_www.kepfeltoltes.hu_.jpg) (http://kepfeltoltes.hu/view/121212/tooltip1_www.kepfeltoltes.hu_.jpg)
A képet a Képfeltöltés.hu tárolja. http://www.kepfeltoltes.hu (http://www.kepfeltoltes.hu)

Üdv.: Senki