2016-05-23 4 views
1

Ich habe Probleme beim Versuch, Daten in eine MySQL-Datenbank mit InnoDB-Tabellen einzufügen. Das Problem ist folgendes: Wenn gamescreen.php ausgeführt wird, wird nach der ersten eingefügten Zeile ein anderer mit einer anderen zufällig ausgewählten Zeile aus questions_de eingefügt, wobei $id0 ist, wobei die ersten 5 haben. Warum wird ein anderer erschaffen?Insert-Abfrage wird zweimal instad von einem ausgeführt

Tabelle questions_de:

id int

Frage varchar

answer_m float

$.ajax({ url: 'gamescreen.php', 
data: {id: '5'}, 
type: 'GET', 
cache: false, 
async: false, 
success: function() { 
     window.location.href='gamescreen.php';  
      } 
}); 

gamescreen.php

if (isset($_GET['id'])) { 
$id = $_GET['id']; 
echo $id; 
} 
    $new = 0; 
     try { 
           $dbh = new PDO("mysql:host=$hostname;dbname=max_com_db_socgame",$user,$password); 

           $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // <== add this line 
           $sql = "SELECT * 
     FROM user WHERE id = '$id' 
     LIMIT 1"; // 
      if ($res = $dbh->query($sql)) {// need to add this line in your code 
       // then after fetchColumn 
      $user2name = $res->fetchAll(); 

      } 

      if($user2name > 0) { 
       //do something 
      } 
      else { 

       echo "Sorry something happen wrong with our servers."; 
      } 
     } 
     catch(PDOException $e) { 


     } 

     try { 
           $dbh = new PDO("mysql:host=$hostname;dbname=max_com_db_socgame",$user,$password); 

           $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // <== add this line 
           $sql = "SELECT * 
     FROM questions_de 
     ORDER BY RAND() 
     LIMIT 1"; // 
      if ($res = $dbh->query($sql)) {// need to add this line in your code 
       // then after fetchColumn 
      $question = $res->fetchAll(); 

      } 

      if($question > 0) { 
       //do something 
      } 
      else { 

       echo "Sorry something happen wrong with our servers."; 
      } 
     } 

     catch(PDOException $e) { 


     } 


         try { 
           $dbh = new PDO("mysql:host=$hostname;dbname=max_com_db_socgame",$user,$password); 

           $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // <== add this line 
           $sql = "INSERT INTO game_create (user1, user2, user1name, user2name, question, questionid, answer) 
           VALUES ('".$_COOKIE["userid"]."', '".$id."', '".$_COOKIE["username"]."', '".$user2name[0]["username"]."', '".$question[0]['question']."', '".$question[0]['id']."', '".$question[0]['answer_m']."')"; 

           if ($dbh->query($sql)) { 
             //echo "New Record Inserted Successfully"; 
           } 
           else{ 
             // echo "Data not successfully Inserted."; 
           } 
           $new = $dbh->lastInsertId(); 
           $dbh = null; 
         } 
         catch(PDOException $e) 
         { 
           echo $e->getMessage(); 
         } 

         if ($new > 0) { 

         } else { 
         echo 'Sorry something went wrong.';  
         } 
+3

Kann zum zweiten Mal aufgrund dieser 'window.location.href = 'gamescreen.php'; ' – Saty

+0

Haben Sie überprüft, ob Ihr Javascript vielleicht zweimal ausgeführt wird? –

+0

@Saty Warum ist das der Fehler und wie kann ich das beheben? – Maxxopu

Antwort

0

das Problem sieht aus wie sein mit dieser Zeile:

Erfolg: function() {window.location.href = 'gamescreen.php';}

Wenn Ihr AJAX läuft erfolgreich Umleiten zu gamescreen.php, die wiederum den PHP-Code löst wieder gibt Ihnen zwei Läufe des Codes

entweder einfach den AJAX entfernen und direkt mit gamescreen.php verlinken, wenn das die Seite ist, auf der Sie landen möchten oder stattdessen ein neues erstellen Seite, um Benutzer auf Erfolg umzuleiten - zB success.php

+0

Oh man danke ich habe versucht es zu lösen 36h: D. Ich habe es jetzt mit einem Link-Button gemacht. – Maxxopu

Verwandte Themen