2016-05-18 7 views
0

Ich habe dieses Formular form image. Nach dem Absenden des Formulars werden persönliche Daten in persönliche Tabelle und Buchdetails in Buch-Tabelle gespeichert. Es gibt eine Verbindung zwischen zwei Tabellen über ID.Formular absenden und in die Homepage posten

$user_query = "INSERT INTO personaldetails(FirstName ,MiddleName,LastName, 
     Gender,Location,Email,Mobile) VALUES ('$users_firstname', 
     '$users_middlename', '$users_lastname', '$users_gender','$users_location','$users_email','$users_mobile');"; 


     $result = mysqli_query($mysqli, $user_query); 

     $user_id = mysqli_insert_id($mysqli); 


     foreach($_POST['booktitle'] as $key => $bookTitle) { 
      $bookTitle = mysqli_real_escape_string($mysqli, $bookTitle); 
      $bookGenre = mysqli_real_escape_string($mysqli, $_POST['bookgenre'][$key]); 
      $bookWriter = mysqli_real_escape_string($mysqli, $_POST['bookwriter'][$key]); 
      $bookDescription = mysqli_real_escape_string($mysqli, $_POST['bookdescription'][$key]); 

      $book_query = "INSERT INTO bookdetails(BookTitle ,BookGenre,BookWriter, 
       BookDescription, UserId) VALUES('$bookTitle', 
      '$bookGenre', '$bookWriter', '$bookDescription', '$user_id');"; 

meine Forderung ist der Moment i Post Taste auf die Daten, die ich in persönlicher Einlage und Buch Details sollten auf der Startseite (gleiches Facebook-Status-Update)

i echo versuchen geschrieben werden die Daten beider Tabellen als jason, aber es werden die gesamten Zeilen der Tabellen abgerufen.

$sql1 = mysql_query("select * from personaldetails"); 

    $sql2 = mysql_query(" select BookTitle,BookGenre,BookWriter,BookDescription from bookdetails INNER JOIN personaldetails ON (bookdetails.UserId = personaldetails.Id)"); 

echo '{"personaldetails": ['; 
     while($row=mysql_fetch_array($sql1)) 
     { 
      $id=$row['Id']; 
      $fname=$row['FirstName']; 
      $mname=$row['MiddleName']; 
      $lname=$row['LastName']; 
      $gender=$row['Gender']; 
      $location=$row['Location']; 
      $email=$row['Email']; 
      $mobile=$row['Mobile']; 
    echo ' 
     { 
      "Id":"'.$id.'", 
      "FirstName":"'.$fname.'" 
      "MiddleName":"'.$mname.'" 
      "LastName":"'.$lname.'" 
      "Gender":"'.$gender.'" 
      "Location":"'.$location.'" 
      "Email":"'.$email.'" 
      "Mobile":"'.$mobile.'" 
     },'; 
     } 
    echo ']}'; 

    echo '{"bookdetails": ['; 
     while($row=mysql_fetch_array($sql2)) 
     { 

      $btitle=$row['BookTitle']; 
      $bgenre=$row['BookGenre']; 
      $bwriter=$row['BookWriter']; 
      $bdescription=$row['BookDescription']; 

    echo ' 
     { 

      "BookTitle":"'.$btitle.'" 
      "BookGenre":"'.$bgenre.'" 
      "BookWriter":"'.$bwriter.'" 
      "BookDescription":"'.$bdescription.'" 

     },'; 
     } 
    echo ']}'; 

?> 

ich habe eine Idee, die ich durch den Aufruf von api durch jquery oder Ajax getan werden könnte, aber nicht wissen, wie es zu tun. oder ich kann auch URL Params benötigen. bitte helfen Sie mir, wenn Sie eine Idee haben. Ich würde geschätzt.

+1

[Kleine Bobby] (http://bobby-tables.com/) sagt, [Ihr Skript in Gefahr ist für SQL-Injection-Attacken.] (Http://stackoverflow.com/questions/60174/how- can-i-prevent-sql-injection-in-php) Erfahren Sie mehr über [vorbereitete] (http://en.wikipedia.org/wiki/Prepared_statement) Anweisungen für [MySQLi] (http://php.net/manual/ de/mysqli.quickstart.prepared-statements.php). Sogar [die Zeichenfolge zu entkommen] (http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string) ist nicht sicher! –

+0

Sie verwenden immer noch 'mysql', wenn Sie stattdessen' mysqli' oder 'PDO's verwenden sollten. Nun, je nach Ihrem Problem haben Sie '*' aus der Tabelle ausgewählt, weshalb 'es die gesamten Zeilen der Tabellen abruft'. Verwenden Sie 'lastInsertId', um die gerade eingefügten Daten abzurufen. –

+1

Auch die Art, wie Sie 'JSON' ausgeben, ist urkomisch. –

Antwort

0

Wenn Sie Ihren Code betrachten, müssen Sie einige Dinge tun. Erstens ... hör auf JSON selbst zu schreiben! Weiter geht es in Ihren Anfragen.

$sql1 = mysql_query("select * from personaldetails"); 

while($row=mysql_fetch_array($sql1)) { 
    $output['personaldetails'][] = $row; 
} 

$sql2 = mysql_query(" select BookTitle,BookGenre,BookWriter,BookDescription from bookdetails INNER JOIN personaldetails ON (bookdetails.UserId = personaldetails.Id)"); 

while($row=mysql_fetch_array($sql2)) { 
    $output['bookdetails'][] = $row; 
} 

echo json_encode($output); 
?> 
Verwandte Themen