DEAR ALL,
THIS THREAD IS FOR DEVELOPERS/DEVELOPMENT ONLY!
DO NOT POST ANY IRRELEVANT TO DEVELOPMENT INFORMATION/QUESTIONS/REQUESTS/FEEDBACKS/RECOMMENDATIONS/...
THANK YOU FOR YOUR UNDERSTANDING!
=====
NOTES
=====
Note for Users:
This is not for users yet! ;(
Notes for Developers:
----- <legend> -----
"+" stands for feature added
"-" stands for feature removed
"!" stands for bug fixed
"=" stands for irrelevant to development action was made
"?" stands for information
----- </legend> -----
purpose:
This freeware tool was developed for authors' personal use
disclaimer:
By downloading this tool you are becoming solely responsible for matters relating to the tool including but not limiting: use, consequences, redistribution and etc, and therefore no claims involving authors shall be filed on this matter
requirements:
Pocket PC-based device with .NET CF installed
23-aug-2005:
?: partially on vacations))
23-aug-2005:
+ wap: WSPPost/WSPGet
- http: post/get
?: seeding of frank's old core for cteam
08-aug-2005:
?: project suspension notice (summa vacations))
06-aug-2005:
=: dynamic library is replaced with static by requests of cteam and corresponding seed is published
?: no changes have been made to draft version of the code
01-aug-2005:
?: announcement of the developoment plan in the form of code layout and consequent draft version seeding to corresponding developers
30-jul-2005:
?: announcement of the idea
==========
SETUP/USAGE
==========
(SETUP)
1) Copy files to \windows folder
2) Create MMS/GPRS connection for your operator
3) Run \windows\MMSd.exe
4) Fill your operator's data in
(USAGE)
5) Now you can send/receive MMS
6) When MMS is received a message box appears asking you to "Download it now". Just choose to download it now
7) Wait for "Download Complete" message. Tap "Ok" and wait for "Files saved" message
8) When "Files Saved" message appears just choose to "Read MMS now". This will open your MMS in Pocket Internet Explorer
9) To send MMS: use Windows Explorer to find your multimedia file first
10) Then, tap and hold on this file until you get "Deliver via MMS" option in your tap-&-hold menu
11) Choose this option and fill in all needed information
===
FAQ
===
q: I got error while downloading my MMS can I re-download it?
a: Open your \Temp folder, find file with "Envelope" icon and tap on it. Then choose to 'Download it now'
q: to correctly display name of senders
a: make sure they comply to int'l notation of +{country code}{area/city code}{phone number}
q: 3gp/mp4 playback
a: You need to use external player to play content of such type
q: where are the notification messages? i.e. New MMS received and etc...
a: First, uninstall all other MMS-related software (ArcSoft's, EZWap's, Pixar's...) and Second, check your operator's service timeout policy, e.g. when you don't pickup MMS for a while your operator may disable this service for you and you will need to re-activate it again
I have a problem
I have XDA II and I've install this application, and saved the configuration now when i try to send mms say:
Error
mmsd.exe
ArgumentOutOfRange Exception
String::. ctor+0x25
String::. Substring+0x19
MMS:: ReadMMSSetting+0x106
MMS::.Main+0x90
Why?? please help me
a new problem
Hi, i have solved simply to unistall and intall again, now a new problem i try to receive an mms but when I push ok to donwnload now say:
establishing modem connections...
Connection Error
Port opening error, disconnect from other GPRS connections first.
But why? i only set in settings ----> connection the same parameters like in winndows 2003 with apn...... Please help me thanks
Facing some wierd error ...
Could u please help on this... I've succesfully installed your application and have also applied all the required settings. Now whenever I plan to sent a file, it starts sending alomst 6% to 12% of the msg, but then fails and gives me an error claiming that the msg has failed...
Could u plz tell me what I'm doing wrong ...
Profile Name: Fastlink
Setup Name: Fastlink
MMSC address (http): http://mms.fastlink.jo
Gateway: 192.168.55.10 ( This looks like a local ip ???) I checked with my tel company, they told me that's the correct proxy server ip address.
Proxy Server Port: 80 (No place to put that in settings)
Phone Number: +962799753678 (Ticked)
Could u please tell what I'm doing wrong ???
Hey XDA, this is my first guide and first proper contribution to the community!
I’m writing this because I've seen many people ask a variation of the question: “How can my app get information from a database?”
This guide is intended for those who have created their first app – it is assumed you have a working development environment and are reasonable comfortable with the Android SDK and Java. I'm also assuming little to no knowledge of PHP and MYSQL
This guide walks you through:
Setting up a database and a PHP script
Testing the server
Accessing it from Android.
To make it relevant, we're going to use data that we might see in an actual app: First & Last Name, Age and Points.
Requirements:
Android Device*
Computer*
Apache/PHP/MySQL Server – I use WAMP (for Windows) (PHP v 5.4)
Postman Rest Client for Google Chrome
(*Both must be connected to the same network!)
This guide will help you setup a local server. If you want to host your script and database online, you will have to purchase paid hosting.
Let's get started!
First off, what is a RESTful service?
According to Wikipedia: A RESTful web API (also called a RESTful web service) is a web API implemented using HTTP and REST principles.
How it works:
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
A breakdown of the steps:
The client makes a request using a HTTP POST to a server
The PHP script queries the MYSQL server
The PHP script gets the SQL data
The PHP script puts the data into an array and assigns keys for the values. The script then outputs the data as a JSON array. JSON (JavaScript Object Notation) is a standard for data exchange, and formats the data in a way both humans and computers can easily read.
The app parses the JSON and displays the data.
Code!
Part 1: The Server
We’re going to start by setting up the server!
Install WAMP server. Leave the settings at the default values.
Start WAMP server and let it come online.
Try and open http://localhost/phpmyadmin/ - if you installed it correctly, you should be greeted by the phpMyAdmin welcome screen. We're going to be using phpMyAdmin to create our database.
Creating the Database:
Create a database called ‘mytestdatabase’. Now click the SQL tab, paste in the following SQL Code and hit run. This will create a test table called ‘users’ and fill it with data.
The table contains 5 columns: id, FirstName, LastName, Age, Points. It has 6 rows of sample data.
SQL Code:
Code:
-- phpMyAdmin SQL Dump
-- version 3.5.1
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Jun 15, 2013 at 10:07 PM
-- Server version: 5.5.24-log
-- PHP Version: 5.3.13
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET [user=714032]@old_[/user][email protected]@CHARACTER_SET_CLIENT */;
/*!40101 SET [user=714032]@old_[/user][email protected]@CHARACTER_SET_RESULTS */;
/*!40101 SET [user=714032]@old_[/user][email protected]@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- Database: `MyTestDatabase`
--
-- --------------------------------------------------------
--
-- Table structure for table `users`
--
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`FirstName` text NOT NULL,
`LastName` text NOT NULL,
`Age` int(11) NOT NULL,
`Points` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
--
-- Dumping data for table `users`
--
INSERT INTO `users` (`id`, `FirstName`, `LastName`, `Age`, `Points`) VALUES
(1, 'John', 'Doe', 25, 61),
(2, 'Glen', 'Willis', 55, 3145),
(3, 'Helen', 'Cook', 35, 1232),
(4, 'Karen', 'Johnson', 20, 6456),
(5, 'Bill', 'Cooper', 60, 3856),
(6, 'Mary', 'Gomez', 30, 5422);
/*!40101 SET CHARACTER_SET_CLIENT [user=714032]@old_[/user]CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS [user=714032]@old_[/user]CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION [user=714032]@old_[/user]COLLATION_CONNECTION */;
Your database should now look like this:
We’re now ready to move on to the PHP!
Open up your WWW directory (C:\wamp\www) and create a new folder called ‘clientservertest’. In this folder, create a file called ‘login.php’.
Paste the following code into the file. (The PHP code is commented so you can follow what is going on)
PHP:
<?php
#Ensure that the client has provided a value for "FirstNameToSearch"
if (isset($_POST["FirstNameToSearch"]) && $_POST["FirstNameToSearch"] != ""){
#Setup variables
$firstname = $_POST["FirstNameToSearch"];
#Connect to Database
$con = mysqli_connect("localhost","root","", "mytestdatabase");
#Check connection
if (mysqli_connect_errno()) {
echo 'Database connection error: ' . mysqli_connect_error();
exit();
}
#Escape special characters to avoid SQL injection attacks
$firstname = mysqli_real_escape_string($con, $firstname);
#Query the database to get the user details.
$userdetails = mysqli_query($con, "SELECT * FROM users WHERE FirstName = '$firstname'");
#If no data was returned, check for any SQL errors
if (!$userdetails) {
echo 'Could not run query: ' . mysqli_error($con);
exit;
}
#Get the first row of the results
$row = mysqli_fetch_row($userdetails);
#Build the result array (Assign keys to the values)
$result_data = array(
'FirstName' => $row[1],
'LastName' => $row[2],
'Age' => $row[3],
'Points' => $row[4],
);
#Output the JSON data
echo json_encode($result_data);
}else{
echo "Could not complete query. Missing parameter";
}
?>
Testing the Script:
Try accessing http://localhost/clientservertest/login.php from your browser. Do you get this message:
"Could not complete query. Missing parameter"
Then it’s working! The script is looking for a POST variable called “FirstNameToSearch” – we didn't provide any, so it did't work!
To finish testing the script, open the Postman-REST client.
Set it up like so:
Request URL: http://localhost/clientservertest/login.php
Type: POST
Key: FirstNameToSearch
Value: John
Hit send, and you should see this:
Code:
{"FirstName":"John","LastName":"Doe","Age":"25","Points":"61"}
Congrats – your server just returned a result! Try some of the other names in the database (Glen, Helen, Karen, Bill, Mary) and see how their data is returned.
Note: Before we move on to the Android section, we’re going to have to put our WAMP server online. Click the WAMP icon in the taskbar and select 'Put Online'.
Find your computers local network IP address and insert it into the URL like so: http://192.168.1.112/clientservertest/login.php
You should be able to access the script. If this doesn't work, try turning off your firewall - it could be blocking the server.
Part 2: Android
We’re now going to use our Android device to access the web server instead of the Postman client.
I'm not going to go into detail with the boilerplate UI code - I've attached the source code to this post so you can download the project files and browse through them.
Note: Android 3.x+ cannot perform Network operations on the main thread. To solve this, we have to multithread our program. To keep this as simple as possible, we’re going to use an AsyncTask. Again, the code for this can be found in the project download.
Inside of the AsyncTask, we have the most important code - where we create and execute a HTTP POST in Java.
Creating and Executing a HTTP POST in Java:
We have to first setup the name-value pairs for our POST variables. In this case, we use "FirstNameToSearch" as our Key.
Code:
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("FirstNameToSearch", strNameToSearch));
The following code sets up connection timeouts (15 seconds) and creates a HttpClient and HttpPost pointing to our url (http://192.168.1.112/clientservertest/login.php)
Code:
//Create the HTTP request
HttpParams httpParameters = new BasicHttpParams();
//Setup timeouts
HttpConnectionParams.setConnectionTimeout(httpParameters, 15000);
HttpConnectionParams.setSoTimeout(httpParameters, 15000);
HttpClient httpclient = new DefaultHttpClient(httpParameters);
HttpPost httppost = new HttpPost("http://192.168.1.112/clientservertest/login.php");
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
The following code executes the POST, gets the result and converts it to a string:
Code:
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
String result = EntityUtils.toString(entity);
Finally, the following code creates a JSON object from the result string and extracts our data:
Code:
// Create a JSON object from the request response
JSONObject jsonObject = new JSONObject(result);
//Retrieve the data from the JSON object
strFirstName = jsonObject.getString("FirstName");
strLastName = jsonObject.getString("LastName");
intAge = jsonObject.getInt("Age");
intPoints = jsonObject.getInt("Points");
That's it. It's so simple!
Where do we take it from here?
This combination of PHP/MYSQL is quite powerful. I'd recommend that you learn more about these technologies and build upon the demo in this guide. PHP Tutorials & MySQL Tutorials
Ideas for practice apps:
Online notes application - Sync your notes to the cloud
Build an Activation Server - Users can activate an app with a key
Feedback
Please feel free to leave any followup questions, comments or suggestions! I'll try my best to respond!
You can find the source code over at GitHub. Have fun! (If you fix a bug, please send a pull request)
Additional Information
Changelog
November 3, 2013
Added a link to the GitHub repository.
June 26, 2013
Updated PHP Code. It's more reliable and uses the newer MySQL APIs. Thanks to @dbarrera & @vijai2011
July 7, 2013
Updated the Android project and added Internet permissions (ClientServerRESTDemo v2.zip)
Thanks for this amazing guide but I have a issue.I have my own table and columns.So I changed your php code according to that and when I do a post query in rest,I get all null.But if I do the same in phpmyadmin,I have results.
This is what I get in postman:
Code:
{"pid":null,"name":null,"UID":null,"mobile":null,"description":null,"created_at":null,"updated_at":null}
attached the output of phpmyadmin.
And my phpcode:
Code:
<?php
#Setup variables
$firstname = $_POST["FirstNameToSearch"];
#Avoid SQL injection attacks
$firstname = mysql_real_escape_string($firstname);
#Connect to Database
$con = mysql_connect("localhost","user","pass");
if (!$con)
{
die('Could not connect');
}
#Select the test database
mysql_select_db("mydb", $con);
#Get the user details from the database
$userdetails = mysql_query("SELECT * FROM mytable WHERE name = '$firstname'");
#Catch any errors
if (!$userdetails) {
echo 'It seems the server is down.Please try later';
exit;
}
#Get the first row of the results
$row = mysql_fetch_row($userdetails);
#Build the result array (Assign keys to the values)
$result_data = array(
'pid' => $row[1],
'name' => $row[2],
'UID' => $row[3],
'mobile' => $row[4],
'description' => $row[5],
'created_at' => $row[6],
'updated_at' => $row[7],
);
#Output the JSON data
echo json_encode($result_data);
?>
Thanks for help.
Edit: just found that your app is missing internet permission in manifest
Code:
<uses-permission android:name="android.permission.INTERNET" />
:thumbup:
Thanks so much for this. I will try it out soon.
Sent from my HTC Explorer A310e using xda app-developers app
vijai2011 said:
Thanks for this amazing guide but I have a issue.I have my own table and columns.So I changed your php code according to that and when I do a post query in rest,I get all null.But if I do the same in phpmyadmin,I have results.
This is what I get in postman:
Code:
{"pid":null,"name":null,"UID":null,"mobile":null,"description":null,"created_at":null,"updated_at":null}
attached the output of phpmyadmin.
Thanks for help.
Click to expand...
Click to collapse
I was able to reproduce the null result - it means that the result was not available in the database. You'll want to double check the value you are passing to the script in Postman. (When I used 'FirstNameToSearch' and 'test' - I got a correct result. However, when I used 'testa', I got a null result.)
You can try adding this into the PHP script to catch this problem:
Code:
#Get the first row of the results
$row = mysql_fetch_row($userdetails);
[B]#Check to see if a result was returned.
if(!$row){
echo 'User does not exist';
exit;
}[/B]
I also noticed a few things in your PHP script:
In your screenshot, your table name appears to be 'Myapp', however in your PHP script, it looks like you are using 'mytable'
When you build the result array at the end, you are trying to access a column that doesn't exist:
This code tries to access an 8th column/index:
Code:
'pid' => $row[1],
'name' => $row[2],
'UID' => $row[3],
'mobile' => $row[4],
'description' => $row[5],
'created_at' => $row[6],
'updated_at' => $row[7],
You only have seven columns, so it should be:
Code:
'pid' => $row[0],
'name' => $row[1],
'UID' => $row[2],
'mobile' => $row[3],
'description' => $row[4],
'created_at' => $row[5],
'updated_at' => $row[6],
vijai2011 said:
Edit: just found that your app is missing internet permission in manifest
Code:
<uses-permission android:name="android.permission.INTERNET" />
Click to expand...
Click to collapse
Good catch - Thanks! I'll update the project asap.
Alkonic said:
I was able to reproduce the null result - it means that the result was not available in the database. You'll want to double check the value you are passing to the script in Postman. (When I used 'FirstNameToSearch' and 'test' - I got a correct result. However, when I used 'testa', I got a null result.)
:snip:
Good catch - Thanks! I'll update the project asap.
Click to expand...
Click to collapse
That is not a error in table name because I just wanted to hide it out here but actually it got revealed in the screenshot .No issues will try your php code and correct my json array too.thanks
Sent from my GT-N7000 using xda app-developers app
For some reason,the problem was caused by the mysql_real_escape_string.I commented that line and it is working now.
vijai2011 said:
For some reason,the problem was caused by the mysql_real_escape_string.I commented that line and it is working now.
Click to expand...
Click to collapse
Now that's interesting.. I've never experienced a problem with that before.
I took a look at the PHP docs and found that mysql_real_escape_string() is depreciated - that could be contributing to the problem. I'll investigate this further and adjust the guide as necessary.
Thanks for sharing your solution!.
Alkonic said:
Now that's interesting.. I've never experienced a problem with that before.
I took a look at the PHP docs and found that mysql_real_escape_string() is depreciated - that could be contributing to the problem. I'll investigate this further and adjust the guide as necessary.
Thanks for sharing your solution!.
Click to expand...
Click to collapse
Maybe you are using ancient php module .BTW Can I also put data into tables using your php and slightly modifying "mysql_query" and using post?Or should I use put along with mysql_query?If later is the solution,could give me the snippet of how a put variable looks?because I dono php and I was waiting for someone to write this guide because before I was connecting to db with JDBS which isnt safe.Thanks and sorry for the trouble.
Edit: I got it to work like I said.But only issue is the created at and updated at time stamp which is not the part of php nor the app.I will correct it from mysql.Thanks once again.Will be happy to trouble you soon lol...No dont take it serious BTW
vijai2011 said:
Maybe you are using ancient php module .BTW Can I also put data into tables using your php and slightly modifying "mysql_query" and using post?Or should I use put along with mysql_query?If later is the solution,could give me the snippet of how a put variable looks?because I dono php and I was waiting for someone to write this guide because before I was connecting to db with JDBS which isnt safe.Thanks and sorry for the trouble.
Edit: I got it to work like I said.But only issue is the created at and updated at time stamp which is not the part of php nor the app.I will correct it from mysql.Thanks once again.Will be happy to trouble you soon lol...No dont take it serious BTW
Click to expand...
Click to collapse
Ha you beat me to it! I'll definitely try and add a section into the guide about updating tables. I appreciate your feedback on the guide, and I'm glad it helped you. Feel free to trouble me
Perfect! Just what i needed for my next week exam!
Sent from my GT-S5830M using Tapatalk 2
Super, thx!
But please tell me what I'm doing wrong.
Code:
HttpResponse response = httpclient.execute(httppost); //throw...
i save errors in log (attached)
pls help ;(
objaa said:
Super, thx!
But please tell me what I'm doing wrong.
Code:
HttpResponse response = httpclient.execute(httppost); //throw...
i save errors in log (attached)
pls help ;(
Click to expand...
Click to collapse
You are doing something on the main thread which actually has to be done in a different thread.I suspect its at line #119.If you show the entire code,somebody might point it out easily for you
Sent from my GT-N7000 using xda app-developers app
vijai2011 said:
You are doing something on the main thread which actually has to be done in a different thread.I suspect its at line #119.If you show the entire code,somebody might point it out easily for you
Sent from my GT-N7000 using xda app-developers app
Click to expand...
Click to collapse
ok, all code:
package com.nsp.obja;
import java.util.ArrayList;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.apache.http.util.EntityUtils;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.widget.Toast;
public class MainActivity extends Activity {
@override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.myscreen);
post();
}
@override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
void post()
{
try
{
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("FirstNameToSearch", "wow"));
//Create the HTTP request
HttpParams httpParameters = new BasicHttpParams();
//Setup timeouts
HttpConnectionParams.setConnectionTimeout(httpParameters, 15000);
HttpConnectionParams.setSoTimeout(httpParameters, 15000);
HttpClient httpclient = new DefaultHttpClient(httpParameters);
HttpPost httppost = new HttpPost("http://www.xda-developers.com/");
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
String result = EntityUtils.toString(entity);
Toast.makeText(this, result.length(), Toast.LENGTH_LONG).show();
}
catch(Exception e)
{
Log.e("ClientServerDemoX", "Error: ", e);
Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
}
}
}
objaa said:
ok, all code:
<!----Snip!---->
Click to expand...
Click to collapse
Do post() in async because it has to do http request which needs to be done in another thread.
vijai2011 said:
You are doing something on the main thread which actually has to be done in a different thread.I suspect its at line #119.If you show the entire code,somebody might point it out easily for you
Sent from my GT-N7000 using xda app-developers app
Click to expand...
Click to collapse
vijai2011 said:
Do post() in async because it has to do http request which needs to be done in another thread.
Click to expand...
Click to collapse
hoooww :crying::crying:
Thanks, I figured out and got the code page of our glorious forum
I'm having an issue while testing the Query... I'm using Firefox and using RESTClient for debugging... and testing whatever value, db always responds null (See attachment)...
dbarrera said:
I'm having an issue while testing the Query... I'm using Firefox and using RESTClient for debugging... and testing whatever value, db always responds null (See attachment)...
Click to expand...
Click to collapse
Exactly what I experienced first time.Try after commenting the line which prevents mysql injection and see if it works.If you run latest mysql,the chances are probably that its the issue
vijai2011 said:
Exactly what I experienced first time.Try after commenting the line which prevents mysql injection and see if it works.If you run latest mysql,the chances are probably that its the issue
Click to expand...
Click to collapse
Already tried that... No go... Had to write the whole thing using w3schools example code as base... Just resolved a couple minutes ago and completed the project (it can be viewed @ Github:CardManager (App) and cardmanager_json (Web Service, only principal.php is the one handling the whole thing))...
Maybe a good add to the tutorial would be to have a config.php file with the user, passwd, database and table data calling it through require_once()... The DBConexion and DBGestion files (in my github) are supposed to do that, but didn't work either (hence doing the principal.php code all over again)...
dbarrera said:
Already tried that... No go... Had to write the whole thing using w3schools example code as base... Just resolved a couple minutes ago and completed the project (it can be viewed @ Github:CardManager (App) and cardmanager_json (Web Service, only principal.php is the one handling the whole thing))...
Maybe a good add to the tutorial would be to have a config.php file with the user, passwd, database and table data calling it through require_once()... The DBConexion and DBGestion files (in my github) are supposed to do that, but didn't work either (hence doing the principal.php code all over again)...
Click to expand...
Click to collapse
Interesting.. I'll take a look at at your script, revisit the W3 tutorials, and then re-write mine. It's really rudimentary and tends to fail easily. I wanted to write about the config.php, however, I also wanted to keep this guide as simple as possible for newer users. Maybe I'll add in an advanced section.
I'll update the guide in a few days, as I'm right in the middle of exams :/
Thanks for the feedback!