Weboltalt az iPhonera!

iPhone és iPad kompatibilis nézet készítése gyakorlatilag bármely php+mysql alapú
honlaphoz bloghoz.

Mire van szükség?
OS X számítógépre és telepített iPhone SDK-ra, pontosabban ennek a Dashcode komponensére.
Mielőtt belekezdenél, nézd meg, nincs -e esetleg a tartalomkezelő rendszeredhez már meglévő ilyen megoldás. Az egyik legnépszerűbb blogmotorhoz, a WordPresshez például rendelkezésre áll a WPtouch theme plugin, ami teljesen ingyenes, ezt tudom javasolni.Első lépés:
Dashcode (legegyszerűbben a jobb felső SpotLight segítségével találod meg), ez első indítás alklmával fel is adja a lehetőséget, hogy templatek közül válaszunk. Válasszuk a Web Applications - Browser templatet.

Második lépés:
Szabjuk testre. A fejlécben a 'Browser' és a 'Back' szöveget cseréljük ki, nézzük át az 'Application Attributes' oldalt és csináljunk egy ikont, amit a 'WebClip icon' oldalon adjunk hozzá.

Harmadik lépés:
A 'Share' oldalon a 'Save to Disk' opcióval mentsük el, majd töltsük fel az állományokat a kedvenc FTP kliensünkel a yourdomain.com/mobile helyre pédául. A /mobile könyvtárat nekünk kell létrehozni. Ha jók voltunk, akkor ezek után a céleszközökön már be kell jönnie egy csomag mintaadatnak.

Negyedik lépés:
A /mobile/main.js nevezetű fájlt nevezzük át /mobile/main.php-ra, és chmod 755-öljük, ha a szerver így kívánja. A /mobile /index.html-ben keressük meg az egykori main.js-re való hivatkozást, és azt is írjuk át main.php-ra.

Ötödik lépés:
Kicsit elkanyarodunk a témától: szükség lesz a mysql adatbázisunkra. Keressük meg benne a táblát (pl.: phpmyadminban), amely a nekünk kellő bejegyzéseket tartalmazza. A tábla nevében valószínűleg valami content, vagy articles, vagy hasonló utal erre. Három mező (oszlop) kell nekünk: a cím, a dátum, és a szöveg. Ezek neveit, és a mysql hozzádérési információkat (szerver, adatbázis, felhasználónév, jelszó, táblanév, és a 3 mező) jegyezzük fel.

Hatodik lépés:
Nyissuk meg szerkesztésre a /mobile/main.php-t. Keressünk meg azt a sort, hogy:
detailDescription.innerHTML = valami, és azt a valamit cseréljük ki:
"this._park.detail;"-re (Nem tudom milyen megfontolásból tért itt el a logikától az Apple
programja).

Hetedik lépés
A fájl végén vannak mintaadatok, egy javascript tömbben (var parks = [ ... ];). Itt láthatjátok a mintaadatokat. Ezt a rész kell átírni az alábbi módon:


var parks = [
<?php
$link = mysql_connect("dbhost", "dbuser", "dbpass"); // Felvesszük a kapcsolatot az
adatbáziskiszolgálóval
if (!$link) {
die('Database Error: ' . mysql_error());
}
mysql_select_db ("dbname",$link); // Kiválasztjuk az adatbázist
$query = "SELECT * FROM `tablanev`"; // Adott esetben sorbarendezhető valami
elsődeleg kulcs alapján: ORDER BY `id` DESC
$result = mysql_query($query) or die('Database Error: ' . mysql_error()); // Lekérdezünk
while($row = mysql_fetch_array($result)){ // Bejárjuk a táblát

$text = str_replace("'","\"",$row['text']); // A szimpla aposztrófokat kicseréljük duplára, mert gondot okozna.

$title = str_replace("'","\"",$row['title']); // Hasonló módon itt is.

$date = date("y/m/d G:i", strtotime($row['date'])); // Unix időből emberi időt faragunk.

echo "{ name: '"; echo $title; echo "', location: '"; echo $date; echo "', detail: '"; echo $text; echo "' },\n"; // Átadjuk a javascript tömbnek az adatokat.
}
mysql_close($link); // Lezárjuk a kapcsolatot
?>
];

A megfelelő helyekre ebben kell beilleszteni az előbb feljegyzett infomációkat. Mentsük el a fájlt, és próbáljuk ki a frissítést a céleszközön. Ha valami nem okés, akkor a Mobile Safariban nagyon jó JS debugger van, amit a Settings - Safari - Debug Console-nál kapcsolhatunk be. Majdnem készen vagyunk!

Nyolcadik lépés:
Ismertessük fel a rendszerrel a böngészőnket. Ne is kelljen a mobil felhasználóknak tudni a /mobile helyről. Ehhez keressük meg a tartalomkezelőnk /index.php -ját. Mindjárt az elejére, a <?php sor után új sorba írjuk be:


if((strlen(strstr($_SERVER['HTTP_USER_AGENT'],"iPhone"))>0) ||
(strlen(strstr($_SERVER['HTTP_USER_AGENT'],"iPad"))>0)){
header("Location: http://yourdomain.com/mobile/"); // Értelem szerűen ide kell kitölteni e helyes címet.
}

Ez a böngésző azonosító sztringjében keresi az iPhone és iPad subsztringeket.
Egyébként az iPhone böngészőé valahogy így néz ki:


Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543a Safari/419.3

Persze verziótól függően.

Nagyjából ennyi volt a nagy tudomány, amit közkincsé szerettem volna tenni. Várom a
véleményeket, észrevételeket, megjegyzéseket.

Sperl Viktor

Hozzászólások

Én a topikcím javítását várom.

Namost. Ha jól fogtam fel a dolgot, akkor a fentiek kihókuszpókuszolják az adatokat a mysql-ből, php-n át egy js tömbbe, amit gondolom egy szintén js valami kiír valahová, valamikor, valamiért.
A számtalan kérdés közül talán a leglényegesebb az az, hogy miért kell ez a sok mágiát csinálni, amikor a php szerény képességekkel megáldva ugyan, de viszonylag ügyesen tud mysql-ből html outputot tolni. Ki lehet hagyni a js esőtáncot, és az oldal kb. 10x gyorsabb lesz, és ha a template-et nem törzsi babonák alapján rakták össze, akkor jóval olvashatóbb is.

Szóval ezt így hogy?

Nézd, én majdnem mindenből hajlandó és képes vagyok tanulni. Majdnem. Ez nem az. Egyébként szerintem a HTTP_USER_AGENT varázsige felfedezése feletti örömben keletkezett a bejegyzés, ha jól tippelek. Ha iPhone, akkor header_location-el elküldi egy, kifejezetten az iPhone számára tervezett oldalra.

Elolvastam többször, de tényleg nem értem.

-----
"Egy jó kapcsolatban a társunkat az ő dolgában kell támogatni, nem a miénkben."

a lenyeg hogy a srac ert a mysqlhez es phphez es tud ipadra fejleszteni. az applenel meg mindig keresik az emailcimet hogy fel tudjak vennni amilyen hamar csak lehet. szerencse hogy olvassak a hupot. egy szobaba kerulnek majd az antenna fejlesztokkel csak hogy massive win legyen a vege a dolognak.

Ügyes!

Mellesleg a címet átírhatnád erre:

"iPhone és iPad kompatibilis nézet készítése gyakorlatilag bármely php+mysql alapú
honlaphoz, bloghoz."

Igen, lehet vi-vel is honlapot készíteni, bármivel, bármihez, nem is erről van szó, hanem arról, hogy mit csináljunk akkor, ha szeretnénk, ha egységes arculata lenne a honlapunknak a készülék szoftveréhez megszokottal.