webForumDet fria alternativet

wap och php

Webbutveckling

30 svar · 788 visningar · startad av visslaren

Medlem sedan juli 20011 222 inlägg
Frågan#1

håller på att göra en wapsida och är i behov av att ha php på den men jag får det inte att fungera. enligt webhotellet så ska det fungera.
koden jag testat med hittills:

<?php

header("Content-type: text/vnd.wap.wml");  

print "<?xml version=\"1.0\"?>\n";  
print "<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\""  
   . " \"http://www.wapforum.org/DTD/wml_1.1.xml\">\n"; 
   
print "<wml>\n";
print "<card>\n";
print "<P>Hello world</P>\n";
print "</card>\n";
print "</wml>\n";

?>

nån som ser nåt fel i koden som kan orsaka att sidan inte fungerar? kommer upp att sidan inte är tillgänglig. filen har ändelsen .php som ska vara det rätta enligt webhotellet.

Tack på förhand

Medlem sedan juli 20013 378 inlägg
#2

Du har råkat få in ett litet slarvfel bara...
WML gör skillnad på STORA och små bokstäver...

Kör med <p> i stället för <P> och prova igen ;)

Medlem sedan juli 200173 inlägg
#3

i wml är alla taggar "case sensitive", så byt <P> mot <p>

Medlem sedan juli 20011 222 inlägg
#4

Tack nu fungerar det.
Nästa problem är att fixa in en mysqlkoppling på sidan. jag har använt samma kod som jag brukar, men det fungerar inte.
någon?

<?php

header("Content-type: text/vnd.wap.wml");  

print "<?xml version=\"1.0\"?>\n";  
print "<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\""  
    . " \"http://www.wapforum.org/DTD/wml_1.1.xml\">\n"; 
   
$länk=mysql_connect("###", "###", "###");
$db=mysql_select_db("###");

print "<wml>\n";
print "<card>\n";

$sql="SELECT DISTINCT title, content FROM news";
$result = mysql_query("$sql"); 
$rad=mysql_fetch_row($result);

$i=0;
while ($i<3 AND $rad=mysql_fetch_row($result)) {
print "<b>".$rad[0]."</b><br>\n";
print $rad[1]."<br><br>";
}
print "</card>\n";
print "</wml>\n";

?>
Medlem sedan juli 200173 inlägg
#5

Problemet är att du skriver i wml inte i HTML, så du kan inte använda samma kod. Ett fel som jag direkt ser är <br> som ska vara <br/>

Medlem sedan juli 20013 378 inlägg
#6

Kan lägga till att du inte heller kan lägga text direkt i ett <card> sådär i WML...
Lägg in ett <p> runt all text du hämtar ur databasen (som du hade runt "hello world" i ditt första exempel) så borde det funka.

Medlem sedan juli 20011 222 inlägg
#7

ah tackar :) att jag inte tänkte på att det inte var html som gällde nu. vana :r

Medlem sedan juli 20011 222 inlägg
#8

here we go again... :)
vet inte om det är jag som börjar bli blind, men jag kan inte hitta nåt fel i koden.

Får felet:
"Failed getting media"

och på technical information om felet står det:
"Content error - the requested file was too large for conversion in the Gateway/proxy"

Låter lite konstigt att det är förstort. filen är 26 rader och 1kb stor.

Nån som kan hitta nåt fel i koden?

<?php

header("Content-type: text/vnd.wap.wml");  

print "<?xml version=\"1.0\"?>\n";  
print "<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\""  
    . " \"http://www.wapforum.org/DTD/wml_1.1.xml\">\n"; 
   
$link=mysql_connect("###", "###", "###");
$db=mysql_select_db("###");

print "<wml>\n";
print "<card>\n";
print "<p>\n";
$sql="SELECT title FROM nyheter";
$result = mysql_query("$sql"); 
$rad=mysql_fetch_row($result);
$i=0;
while ($i<1) {
print "<b>".$rad[0]."</b><br/><br/>\n";
}
print "</p>\n";
print "</card>\n";
print "</wml>\n";

?>

Tack på förhand.

Medlem sedan juli 20013 378 inlägg
#9

Hmm...
Svårt att säga...
Får du samma fel om du begränsar antalet nyheter i SELECT-frågan mot databasen så att du bara får ut en rad? (i så fall är det nog storleken trots allt)...

Långskottsgissning:
Är du säker på att resultatet från databasen inte innehåller varken "<", ">" eller (OBS VIKTIGT!) "&"-tecken som inte har översatts till &lt; , &gt; respektive &amp; ? (jag skulle nog köra med t.ex. htmlspecialchars för säkerhets skull för att slippa risken att sidan kraschar pga att man råkat peta in "skräp" i databasen i form av <, > eller &-tecken av misstag... ;) )

Medlem sedan juli 20013 378 inlägg
#10

Äsch... :r

Jag missade också det uppenbara... (stirrade mig blind på WML-koden ;) )
Är inte

while ($i<1) {
print "<b>".$rad[0]."</b><br/><br/>\n";
}

alltid en oändlig loop ? :birp

Medlem sedan maj 20023 372 inlägg
#11

Hm...när de utvecklade wml, hade någon av utvecklarna födelsedag så att de firade med vin på jobbet ? Ska vara <br/> och att det måste vara <p> och inte <P>...varför krånga till det så för? :(

Medlem sedan juli 200173 inlägg
#12

Snarare tvärtom. Jämför med XML som ju också är extra petigt. Så den allmäna uppfattningen är att problemet är nog att HTML borde varit mer stingent. Att sedan Internet Explorer är ännu mer förlåtande, med t ex sluttaggar, gör ju att de finns en massa felaktig kod som visas olika i olika bläddrare.

Medlem sedan juli 20011 222 inlägg
#13

tack. nu fungerar den biten. :)

nu har jag lite problem med länkar. själva länkarna fungerar, men eftersom jag plockar fram via databas så måste jag skicka med idnummer. det verkar den heller inte ha nåt problem med, men däremot sidan som tar emot har problem. får bara upp "ogiltigt innehåll" hela tiden.

länken:

print "<a href=\"nyhet.php?io=".$rad[1]."\">".$rad[0]."</a><br/>\n";

andra sidan:

print "<wml>\n";
print "<card id=\"nyhet\" title=\"wap.spelbasen.nu\">\n";
print "<p>\n";
$sql="SELECT title, samman FROM nyheter WHERE id='$io'"
or die(mysql_error());
$result = mysql_query("$sql")
or die(mysql_error()); 
$rad=mysql_fetch_row($result)

print "<b>".$rad[0]."</b><br/>\n";
print $rad[1];
print "</p>\n";
print "</card>\n";
print "</wml>\n";

börjar fundera på om ödet vill att jag ska lyckas med en phpdriven wapsida. stöter ju bara på nya fel hela tiden. börjar kännas lite pinsamt :)

Medlem sedan mars 20007 896 inlägg
#14

Du har missat ett semikolon på raden:

$rad=mysql_fetch_row($result)

Om jag var du skulle jag hämta 'io' från querystringen med $GET['io'] istället, bara en liten hint om snyggare kod. ;)

Medlem sedan juli 20011 222 inlägg
#15

oki. fixat. nu ser koden ut så här på nyhet.php:

print "<wml>\n";
print "<card id=\"nyhet\" title=\"wap.spelbasen.nu\">\n";
print "<p>\n";
$sql="SELECT title, content FROM nyheter WHERE id='$GET['io']'"
or die(mysql_error());
$result = mysql_query("$sql")
or die(mysql_error()); 
$rad=mysql_fetch_row($result);

print "<b>".$rad[0]."</b><br/>\n";
print $rad[1];
print "</p>\n";
print "</card>\n";
print "</wml>\n";

fortfarande "ogiltig innehållstyp" :(

Medlem sedan juli 20013 378 inlägg
#16

Hmm...
Ta inte illa upp, för det här är antagligen en dum fråga, men du har väl inte tagit bort

header("Content-type: text/vnd.wap.wml");  
print "<?xml version ='1.0'?>\n";  
print "<!DOCTYPE wml PUBLIC '-//WAPFORUM//DTD WML 1.1//EN\'  'http://www.wapforum.org/DTD/wml_1.1.xml'>\n";

från början av koden ?

Om inte:
Är datat från databasen verkligen kodat i UTF-8 eller UTF-16 ? - annars måste du ha med den encoding du verkligen använder, t.ex. encoding='ISO-8859-1' i också <?xml?>-taggen

Medlem sedan mars 20007 896 inlägg
#17

Ser också ett litet fel... Du har skrivit $GET[ 'io' ] där du hämtar från querystringen, det ska vara $_GET[ 'io' ].

Medlem sedan juli 20011 222 inlägg
#18

jarvklo: ingen fara :) inte tagit bort de raderna. provade att lägga till isogrejen, men det fungera inte. ingen aning om är utf8 eller utf16.

SPiN: Har ändra till $_GET['io'] och det fungerade inte heller

:(

Medlem sedan juli 20013 378 inlägg
#19

Hmm...
Har du möjlighet att lägga upp en länk så man kan undersöka resultatet ?

Medlem sedan juli 20011 222 inlägg
#20

ahjo. hade tänkt göra det, men glömde det :)

wap.spelbasen.nu

260 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)