2012-04-09 4 views
0

Ich bin neu in PHP-Programmierung und haben schlechte Kenntnisse darüber, aber ich möchte es verwenden, um Web-Services zu meinem Klienten Android-Anwendung zu machen ...PHP Web Service mit Android

Ich begann meine erste Web-Service zu machen mit PHP und es funktioniert gut, aber ich möchte wissen, wie ich eine Datei machen, dass alle meine Funktionen und Methoden, die ich brauche, und wie es von Android nennen

Danke

Dies ist functions.php

<?php 
    function GetAllRest() 
    { 
    mysql_connect("localhost","root","root"); 
    mysql_select_db("myhoteldb"); 
    $sql=mysql_query("SELECT rest_id ,rest_name,cuisine,no_tables,bg_img,rest_logo  FROM restaurant"); 
    while($row=mysql_fetch_assoc($sql)) 
    $output[]=$row; 
    print(json_encode($output)); 
    mysql_close(); 
} 
function GetAllCategory($lang_id,$rest_id) 
{ 
    mysql_connect("localhost","root","root"); 
    mysql_select_db("myhoteldb"); 
    $sql=mysql_query("SELECT cat_lang.rowid ,cat_lang.cat_id as _id,lang_id, cat_name,cat_description from cat_lang ,menu_category WHERE lang_id= $lang_id AND restaurant= $rest_id "); 

     while($row=mysql_fetch_assoc($sql)) 
    $output[]=$row; 
    print(json_encode($output)); 
     mysql_close(); 

    } 



    ?> 

und die URL http://localhost/mywebservices.php?op=GetAllCategory&lang_id=1&rest_id=1

und ich habe diesen Fehler jetzt

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in  

C: \ xampp \ htdocs \ functions.php on line 22

Notice: Undefined variable: output in C:\xampp\htdocs\functions.php on line 24 
    null 
+0

möglich Duplikat von [Warnung: mysql_fetch_ * erwartet Parameter 1 als Ressource, boolescher gegebener Fehler] (http://stackoverflow.com/questions/11674312/warning-mysql-fetch-expects-parameter-1-to-be-resource-boolean) -geben-Fehler) – j0k

Antwort

1

Als Idee, ich Ich empfehle Ihnen, den Namen der Funktion anzugeben, die in Ihrer URL ausgeführt werden soll. Und dann, dass die Funktionsnamen und Argumente erhalten, geben sie

call_user_func_array() 

Funktion PHP.

Hier ist eine sehr einfache Idee einer Funktion handler:

Ihre Anfrage URL würde wie folgt aussehen:

http://www.mysite.com/webservice.php?op=CallFunctionOne&param_a=test&param_b=test2 

Und hier ist der Handler, um Ihre Anrufe an Ihre Funktionen:

require_once("./functions.php"); 

if(!empty($_SERVER["QUERY_STRING"])){ 
    $query_str = stripslashes($_SERVER['QUERY_STRING']); 
    parse_str($query_str,$args); 
    $op = array_shift($args); 
    if(is_callable ($op)){ 
     call_user_func_array($op,$args); 
    } 
    else{ 
     echo "Handler error.<br />"; 
     echo $op . " function is not callable."; 
    } 
} 

Und functions.php Datei würde Ihre Funktionen enthalten. Hoffe es wird eine Idee geben.

+0

können Sie mehr erklären. mit insgesamt Beispiel, wie ich Ihnen sagte, ich habe schlechte Kenntnisse in PHP – Basant

+0

und wenn ich Funktionen haben, die args nicht nahm, was es – Basant

+0

sein wird, können Sie einfach ein leeres Array übergeben. Wenn ich mehr erkläre, ist das, was ich Ihnen gezeigt habe, ein einfacher Call-Handler, der auf URL basiert. "op" ist der Funktionsname, den Sie von Ihrer Android-Anwendung aus aufrufen möchten.Sobald Sie eine Anfrage stellen, wird Ihre PHP-Anwendung die URL analysieren und den Funktionsnamen erhalten. Basierend auf dem Funktionsnamen ruft es die Funktion zurück, die sich in Ihrer Datei functions.php befinden würde. – selo

1

Wenn Sie PHP dann wissen, nehme ich an, dass Sie HTML kennen.

Mit PhoneGap können Sie Apps auf andriod mit HTML, Javascript und CSS ausführen. http://phonegap.com/start

Mit dem Javascript können Sie eine Seitenanforderung an Ihre Web-PHP-Datei vornehmen.

Hier ist ein jQuery Beispiel

<script> 
$.ajax({ 
    url: 'http://example.com/myfile.php', 
    dataType: 'json', 
    success: function(data) { 
    alert(data.rest_name); // do whatever you want with the json response 
    } 
}); 
</script> 

die Cross-Domain Sie diese in die PHP-Dateien Header (nicht sicher, ob Apps benötigen Cross-Domain-Validierung tho) hinzufügen müssen aktivieren

header('Access-Control-Allow-Origin: *');