This code works for php and returns the json Data, tested on my browser and postman
<?php
$host = 'localhost';
$db_user = 'id15131779_root';
$db_pass = '_8gJ{58#)Jgdh^{';
$db = 'id15131779_announcements';
$con = mysqli_connect($host, $db_user, $db_pass, $db) or die ('cannot connect, Reason : '.mysqli_error());
$AccountNum = mysqli_real_escape_string($con,$_GET['AccountNum']);
$sql = "select * from bankDetails where AccountNum = '$AccountNum'";
$result = mysqli_query($con,$sql);
$check = mysqli_num_rows($result);
if($check > 0)
{
$row = mysqli_fetch_assoc($result);
$Fullname = $row['Fullname'];
$AccountNum = $row['AccountNum'];
$email = $row['email'];
$Telephone = $row['Telephone'];
$balance = $row['balance'];
}
else
{
$Fullname = "";
$AccountNum = "";
$email = "";
$Telephone = "";
$balance = "";
}
$response[] = array("Fullname"=>$Fullname,"AccountNum"=>$AccountNum, "email"=>$email, "Telephone"=>$Telephone, "balance"=>$balance);
echo json_encode($response);
?>
i get this back as Data when i make a GET Request for instance to the Rest API
https://uncoiled-crust.000webhostapp.com/api/searchData.php?AccountNum=0023736621
[{"Fullname":"Princewill Dickson","AccountNum":"0023736621","email":"[email protected]","Telephone":"08125527192","balance":"700000.00"}]
Dummy data , this data is not real, just fed into the system.
Now I have this Code which is supposed to get the username from the Login form (The Login form being the Account number for instance ) and then use the same Data in Page 2 to query the API to return the data to be used.
Now Here is my Login page in React native it is supposed to search from
/* eslint-disable prettier/prettier */
import React, { Component } from 'react';
import { Platform, StyleSheet, Text, View , Image, TextInput, TouchableOpacity, Alert, Linking} from 'react-native';
import Icon from 'react-native-vector-icons/SimpleLineIcons';
class Login extends Component {
constructor(props) {
super(props);
this.state = {
user: '',
password: ''
};
DummyLogin = () =>
{
alert('I am a Dummy Login!');
this.props.navigation.navigate('Home',{user: this.state.user});
}
FunctionLogin = () =>
{
const {user} = this.state;
const {password} = this.state;
fetch('https://uncoiled-crust.000webhostapp.com/rest/login.php',{
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
user: user,
password: password
})
}).then((response) =>response.json())
.then((responseJson) => {
if(responseJson === 'OK')
{
this.props.navigation.navigate('Announcements');
}
else
{
Alert.alert(responseJson);
}
}).catch((error) =>{
console.error(error);
});
}
}
render()
{
return (
<View style={styles.container}>
<Image source={{uri:'asset:/logo/436146d3-d290-459b-ae8a-bc5b07eacea1_200x200.png'}}
style={styles.logo} />
<Text style={{textAlign:'left',fontSize:40,fontWeight:'bold' ,color: '#030303'}}> Sign In</Text>
<TextInput
placeholder = " Account Number"
onChangeText={user => this.setState({user})}
style={styles.input}
keyboardType='numeric'
value={this.state.myNumber}
maxLength={15}
/>
<TextInput
placeholder = " Passcode"
onChangeText={password => this.setState({password})}
style={styles.input}
secureTextEntry={true}
keyboardType='numeric'
value={this.state.myNumber}
maxLength={6}
/>
<Text style={{color: '#030303', textAlign: 'center', alignSelf:'stretch'}}
onPress={() => Linking.openURL('http://google.com')}>
Forgot Password? Reset
</Text>
<View style={styles.space} />
<TouchableOpacity onPress={() => {DummyLogin();}} style={styles.button}>
<Text style={styles.loginbtn}> Login </Text>
</TouchableOpacity>
<View style={styles.space} />
<TouchableOpacity onPress={() => {DummyLogin();}} style={styles.Regbutton}>
<Text style={styles.loginbtn2}> Register </Text>
</TouchableOpacity>
</View>
);
}
}
const styles = StyleSheet.create({
container:{
flex: 1,
justifyContent :"center",
alignItems:"center"
},
input:{
width:300,
height:55,
margin:10,
fontSize : 15,
fontWeight : 'bold',
borderBottomColor:'#030303',
borderBottomWidth: 1,
marginBottom: 30,
},
button:{
width:300,
height: 52,
padding:10,
borderRadius:10,
backgroundColor:'#030303',
alignItems: 'center'
},
Regbutton:{
width:300,
height:52,
padding:10,
borderRadius:10,
backgroundColor:'#ffffff',
alignItems: 'center',
borderWidth : 2,
borderColor: '#030303'
},
loginbtn:{
color:'#ffff',
fontSize : 20,
fontWeight : 'bold'
},
loginbtn2:{
color:'#030303',
fontSize : 20,
fontWeight : 'bold'
},
logo:{
width:150,
height:150
},
space: {
width: 10,
height: 10,
},
imageStyle: {
flexDirection:'row',
justifyContent:'center',
padding: 5,
margin: 2,
height: 15,
width: 15,
resizeMode: 'stretch',
marginBottom: 8,
marginTop : 8,
alignItems: 'center',
},
});
export default Login;
Now the page its supposed to fetch information from the API and populate has tags on it, it just returns nothing to them. My code Looks something like this :
import React, { Component } from 'react';
import { Platform, StyleSheet,Text, View , Image, TextInput, TouchableOpacity, Alert, Linking, Dimensions, FlatList} from 'react-native';
export default class Home extends Component {
constructor(props) {
super(props);
this.state = {
AccountNum : '',
Fullname : '',
email : '',
Telephone : '',
balance : ''
};
}
onclick_item(key)
{
switch(key)
{
case "BVN":
this.props.navigation.navigate('bvn');
// const {navigation} = this.props;
// const username = navigation.getParam('user','NO-User');
// alert('Hello '+username);
break;
case "Transfers":
this.props.navigation.navigate('Transfers');
break;
case "Bill Payments":
this.props.navigation.navigate('BillPayments');
break;
case "Checkbook Requests":
this.props.navigation.navigate('CheckBookRequest');
break;
case "Airtime Purchase":
this.props.navigation.navigate('AirtimePurchase');
break;
case "Contact Us":
this.props.navigation.navigate('Contact');
break;
}
}
componentDidMount()
{
this.getAccountDetails();
}
getAccountDetails = () =>
{
const {navigation} = this.props;
const AccountNum = navigation.getParam('user','NO-User');
var searchAPIURL = 'https://uncoiled-crust.000webhostapp.com/api/searchData.php?AccountNum='+AccountNum;
var header = {
'Accept': 'application/json',
'Content-Type': 'application/json'
};
fetch(
searchAPIURL,
{
method : 'GET',
headers : header
}
).then((response) => response.json())
.then((responseJson)=> {
this.setState({Fullname : responseJson.Fullname});
this.setState({balance: responseJson.balance});
})
}
render() {
//const {navigation} = this.props;
//const username = navigation.getParam('user','NO-User');
return (
<View>
<Text style={styles.welcomeText}> Welcome , {this.state.Fullname}! - 2080440475 </Text>
<Text style={styles.balanceText}> ? {this.state.balance} </Text>
<View
style={{
borderBottomColor: '#696b69',
borderBottomWidth: 1,
}}
/>
<View>
<Text style={styles.MenuText}> Menu </Text>
<View style={styles.space} />
<FlatList
const data = {[
{key : 'BVN'},
{key: 'Transfers'},
{key: 'Bill Payments'},
{key: 'Checkbook Requests'},
{key: 'Airtime Purchase'},
{key: 'Contact Us'},
]}
renderItem={({ item }) => (
<TouchableOpacity onPress={() =>this.onclick_item(item.key)} style={styles.button}>
<View style ={styles.item}>
<Text style = {styles.itemText} >{item.key}</Text>
</View>
</TouchableOpacity>
)}
numColumns = '2'
/>
</View>
<View style={styles.space} />
</View>
);
}
}
const styles = StyleSheet.create({
MenuText :{
margin : 10,
fontSize : 27,
fontFamily : 'Verdana',
fontWeight : 'bold',
flexDirection : 'row'
},
welcomeText :{
margin : 10,
fontSize : 15,
fontFamily : 'Verdana',
fontWeight : 'bold',
flexDirection : 'row'
},
space: {
width: 10,
height: 10,
},
balanceText:{
margin : 10,
fontSize : 25,
fontFamily : 'Verdana',
fontWeight : 'bold'
},
accountNumText :{
margin : 10,
fontSize : 13,
textAlign : 'right',
fontFamily : 'Verdana',
fontWeight : 'bold'
},
container:{
flex :1,
marginVertical :20
},
item : {
backgroundColor : '#030303',
borderRadius : 10,
alignItems: 'center',
justifyContent : 'center',
flex : 1,
margin : 1,
height : Dimensions.get('window').width / 3
},
itemText:{
color: '#fff'
},
button:{
backgroundColor : '#030303',
borderRadius : 35,
alignItems: 'center',
justifyContent : 'center',
flex : 1,
margin : 1,
height : Dimensions.get('window').width / 3
}
});
I need a guide as to what i am doing wrong