2017-10-20 32 views
0

Mise à jour: -Php - Code de comparaison de la valeur de base de données à la valeur envoyer par Android app

Il sauvegarder les données à table si même id n'existe pas dans le tableau.

est ici la réponse que je reçois l'aide dans ma réponse

Log.i ("réponse", "réponse:" + réponse);

Response: response: <br /> 
                    <b>Notice</b>: Undefined variable: id in <b>/storage/ssd2/319/3199319/public_html/leaderboard.php</b> on line <b>31</b><br /> 
                    <br /> 
                    <b>Notice</b>: Undefined variable: connect in <b>/storage/ssd2/319/3199319/public_html/leaderboard.php</b> on line <b>32</b><br /> 
                    <br /> 
                    <b>Warning</b>: mysqli_query() expects parameter 1 to be mysqli, null given in <b>/storage/ssd2/319/3199319/public_html/leaderboard.php</b> on line <b>32</b><br /> 
                    <br /> 
                    <b>Warning</b>: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, null given in <b>/storage/ssd2/319/3199319/public_html/leaderboard.php</b> on line <b>32</b><br /> 
                    <br /> 
                    <b>Notice</b>: Undefined variable: time in <b>/storage/ssd2/319/3199319/public_html/leaderboard.php</b> on line <b>33</b><br /> 
                    {"success":false} 

J'ai créé un code php pour vérifier si la base de données a id existe déjà ou non. Si elle existe alors j'ai comparé la valeur de temps avec la valeur que je lui ai envoyée sinon sauvegardez la valeur dans la table. Si la valeur envoyée par moi est inférieure à celle de la valeur dans la base de données puis mettre à jour la table sinon, la requête est annulée. Mais je reçois une erreur. S'il vous plaît aider.

Mon Php Code: -

<?php 
$connect = mysqli_connect("localhost", "id3199319_s", "pass", "id3199319_k"); 
$name = $_POST["name"]; 
$time = $_POST["time"]; 
$id = $_POST["id"]; 

function registerUser() { 
    global $connect, $name, $time, $id; 
    $statement = mysqli_prepare($connect, "INSERT INTO leaderboard (name, time, id) VALUES (?, ?, ?)"); 
    mysqli_stmt_bind_param($statement, "sis", $name, $time, $id); 
    mysqli_stmt_execute($statement); 
    mysqli_stmt_close($statement);  
} 

function nameAvailable() { 
    global $connect, $id; 
    $statement = mysqli_prepare($connect, "SELECT * FROM leaderboard WHERE id = ?"); 
    mysqli_stmt_bind_param($statement, "s", $id); 
    mysqli_stmt_execute($statement); 
    mysqli_stmt_store_result($statement); 
    $count = mysqli_stmt_num_rows($statement); 
    mysqli_stmt_close($statement); 
    if ($count < 1){ 
     return true; 
    }else {   
     return false; 
    } 
} 

function updateTime(){ 
    $sql = "SELECT time from leaderboard WHERE id = $id;"; 
    $res = mysqli_fetch_assoc(mysqli_query($connect, $sql)); 
    if($time < $res['time']){ 
     $sql = "UPDATE table leaderboard SET time = $time where id=$id"; 
     $res = mysqli_query($connect, $sql); 
     if(!$res){ 
      die("Query not executed " . mysqli_error($connect)); 
      $response["success"] = false; 
      } else { 
        $response["success"] = true; 
     } 
    } 
} 

$response = array(); 
$response["success"] = false; 

if (nameAvailable()){ 
    registerUser(); 
    $response["success"] = true; 
     } else { 
     updateTime(); 
     } 

echo json_encode($response); 
?> 

Volley Demande

public void winner_registration(){ 

    String tm = timer_box.getText().toString(); 
    String[] tmm = tm.split(":"); 

    int hr = Integer.parseInt(tmm[0]); 
    int hr_sec = hr*60*60; 
    int minn = Integer.parseInt(tmm[1]); 
    int minn_sec = minn*60; 
    int secc = Integer.parseInt(tmm[2]); 

    int totalTime = hr_sec+minn_sec+secc; 
    String myName = Profile.getCurrentProfile().getName(); 
    String id = Profile.getCurrentProfile().getId(); 

    Response.Listener<String> response = new Response.Listener<String>() { 
     @Override 
     public void onResponse(String response) { 
      try { 
       JSONObject jsonResponse = new JSONObject(response); 
       boolean success = jsonResponse.getBoolean("success"); 
       if (success){ 
        Toast.makeText(Play.this, "Details Submitted To LeaderBoard", Toast.LENGTH_SHORT).show(); 
       } else{ 
        Toast.makeText(Play.this, "Something Went Wrong! Score not Submitted", Toast.LENGTH_SHORT).show(); 
       } 

       Handler h = new Handler(); 
       h.postDelayed(new Runnable() { 
        @Override 
        public void run() { 
         score_submit_progressdialog.dismiss(); 
         startActivity(new Intent(Play.this, Home.class)); 
         finish(); 
        } 
       }, 50); 

      } catch (JSONException e) { 
       Toast.makeText(Play.this, "Something Went Wrong :"+e, Toast.LENGTH_SHORT).show(); 
       e.printStackTrace(); 
      } 
     } 
    }; 

    RegisterWinner registerRequest = new RegisterWinner(myName,totalTime,id, response); 
    RequestQueue queue = Volley.newRequestQueue(Play.this); 
    queue.add(registerRequest); 
} 

RegisterWinner

de RegisterWinner public class étend StringRequest {

public static final String REGISTER_REQUEST_URL = "URL"; 
private Map<String, String> params; 

public RegisterWinner(String name, int totalTime, String id, Response.Listener<String> listener){ 
    super(Method.POST, REGISTER_REQUEST_URL, listener , null); 
    params = new HashMap<>(); 
    params.put("name", name); 
    params.put("time", String.valueOf(totalTime)); 
    params.put("id", id); 
} 

@Override 
public Map<String, String> getParams() { 
    return params; 
} 
} 

est ici l'erreur que je reçois lorsque la table doivent être mis à jour

enter image description here

+0

Pouvez-vous poster ce que vous obtenez comme réponse dans 'onResponse public void (réponse String)'? –

+0

Vous récupérez html de php et vous essayez de l'analyser comme json. Connectez-vous le résultat et vous verrez. – greenapps

+0

je reçois une réponse JSON ne –

Répondre

0

J'ai résolu le problème, je viens de changer le code php et cela a fonctionné parfaitement. Voici le code mis à jour: -

<?php 
$connect = mysqli_connect("localhost", "db", "pass", "host"); 
$name = $_POST["name"]; 
$time = $_POST["time"]; 
$id = $_POST["id"]; 
function registerUser() { 
global $connect, $name, $time, $id; 
$statement = mysqli_prepare($connect, "INSERT INTO leaderboard (name, time, id) VALUES (?, ?, ?)"); 
    mysqli_stmt_bind_param($statement, "sis", $name, $time, $id); 
    mysqli_stmt_execute($statement); 
    mysqli_stmt_close($statement);  
} 
function nameAvailable() { 
    global $connect, $id; 
    $statement = mysqli_prepare($connect, "SELECT * FROM leaderboard WHERE id = ?"); 
    mysqli_stmt_bind_param($statement, "s", $id); 
    mysqli_stmt_execute($statement); 
    mysqli_stmt_store_result($statement); 
    $count = mysqli_stmt_num_rows($statement); 
    mysqli_stmt_close($statement); 
    if ($count < 1){ 
     return true; 
    }else {   
     return false; 
    } 
} 
$response = array(); 
$response["success"] = false; 
if (nameAvailable()){ 
    registerUser(); 
    $response["success"] = true; 
     } else { 
     $sql = "SELECT time from leaderboard WHERE id = $id;"; 
$res = mysqli_fetch_assoc(mysqli_query($connect, $sql)); 
if($time < $res['time']){ 
     $sql = "UPDATE leaderboard SET time = $time where id=$id"; 
     $res = mysqli_query($connect, $sql); 
     if(!$res){ 
      die("Query not executed " . mysqli_error($connect)); 
      $response["success"] = false; 
      } else { 
        $response["success"] = true; 
     } 
    } 
     } 
    echo json_encode($response); 
?>