2013-06-07 3 views
0

내가하는 일은 양식 데이터가 제출 될 때 마지막으로 삽입 된 데이터를 표시하는 것입니다. 양식은 multipart/form-data입니다. jquery를 사용하여이 폼 데이터를 얻고 있습니다. 여기 에이 잭스 POST.In을 사용하여 PHP 파일에이 데이터를 보내고 있습니다. db 테이블에 데이터를 삽입하고 있습니다 .. 어디에서 삽입 된 데이터의 ID를 얻고 있습니까? 성공했습니다.마지막으로 삽입 된 ID를 사용하여 마지막으로 삽입 된 데이터베이스 내용 표시

<form method="post" enctype="multipart/form-data" name="upload_form" id="data"> 
<select id="sel"> 
<option>Select the Project Stream</option> 
<option value="1">Computer Science</option> 
<option value="2">Mechanical</option> 
<option value="3">IT</option> 
<option value="4">Web Development</option> 
<option value="5">MCA</option> 
<option value="6">Civil</option> 

</select><br /> 
    <input type="text" id="title" placeholder="Project Title"/><br /> 
    <input type="text" id="vurl" placeholder="If You have any video about project write your video url path here" style="width:435px;"/><br /> 
<textarea id="prjdesc" name="prjdesc" rows="20" cols="80" style="border-style:groove;box-shadow: 10px 10px 10px 10px #888888;"placeholder="Please describe Your Project"></textarea> 
    <label for="file">Filename:</label> 
<input type="file" name="file" id="file"/><br /> 
<button>Submit</button> 
</form> 

내 JS 파일 :

$("form#data").submit(function() { 
     alert("update"); 

     var sid=$("#sel").val(); 
     alert(sid); 
     var ttle = $("#title").val(); 
     alert(ttle); 
     var text = $("#prjdesc").val(); 
     var vurl = $("#vurl").val(); 

     /*var dataString = 'param='+text+'&param1='+vurl+'&param2='+ttle+'&param3='+id;*/ 
     var formData = new FormData($(this)[0]); 

    formData.append('param',text); 
    formData.append('param1',vurl); 
    formData.append('param2',ttle); 
formData.append('param3',sid); 

     $.ajax({ 
     type:'POST', 
     data:formData, 
     url:'insert.php', 
     success:function(id) { 
      alert(id); 
      window.location ="another.php?id="+id; 
     }, 
     cache: false, 
     contentType: false, 
     processData: false 
     }); 
     return false; 
    }); 
내가 다른 PHP에 해당 ID를 보내고 Ajax 호출은

나의 양식은 ... 내가 마지막으로 삽입 된 데이터를 표시하고 그 ID를 사용하여 file..where

insert.php :

,210
<?php 
print_r($_FILES); 
$desc = $_POST['param']; 
echo $desc; 
$video = $_POST['param1']; 
echo $video ; 
$title = $_POST['param2']; 
echo $title; 
$tech_id=$_POST['param3']; 
echo $tech_id; 

$host="localhost"; 
$username="root"; 
$password=""; 
$db_name="geny"; 
$tbl_name="project_details"; 


mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB"); 

$allowedExts = array("gif", "jpeg", "jpg", "png"); 
$extension = end(explode(".", $_FILES["file"]["name"])); 
$url_dir = "C:/wamp/www/WebsiteTemplate4/upload/"; 
    if ((($_FILES["file"]["type"] == "image/gif") 
    || ($_FILES["file"]["type"] == "image/jpeg") 
    || ($_FILES["file"]["type"] == "image/jpg") 
    || ($_FILES["file"]["type"] == "image/pjpeg") 
    || ($_FILES["file"]["type"] == "image/x-png") 
    || ($_FILES["file"]["type"] == "image/png")) 
    && ($_FILES["file"]["size"] < 50000) 
    && in_array($extension, $allowedExts)) 
    { 
     if ($_FILES["file"]["error"] > 0) 
{ 
    echo "Return Code: " . $_FILES["file"]["error"] . "<br>"; 
} 
else 
{ 

    if (file_exists($url_dir . $_FILES["file"]["name"])) 
    { 
     echo $_FILES["file"]["name"] . " already exists. "; 
    } 
    else 
    { 
     move_uploaded_file($_FILES["file"]["tmp_name"],$url_dir. $_FILES["file"]["name"]); 
     // echo "Stored in: " . "upload/" . $_FILES["file"]["name"]; 
     $tmp = "C:/wamp/www/WebsiteTemplate4/upload/" . $_FILES["file"]["name"]; 
     $sql="INSERT INTO $tbl_name (title, content, img_path, video_url, project_tech_Id) VALUES ('$title','$desc','$tmp','$video','$tech_id')"; 

     if(mysql_query($sql)) { 
      echo mysql_insert_id(); 

     } else { 
      echo "Cannot Insert"; 
     } 

    } 
} 
    } 
     else 
     { 
      echo "Invalid file"; 
     } 

?> 

another.php :

<?php 

    $temp=$_GET['id']; 
    echo $temp; 

    $host="localhost"; 
    $username="root"; 
    $password=""; 
    $db_name="geny"; 
    $tbl_name="project_details"; 


    mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
    mysql_select_db("$db_name")or die("cannot select DB"); 
    $query = mysql_query("SELECT content FROM project_details WHERE id=". $temp); 
    if (!$query) 
     { 
     echo 'Could not run query: ' . mysql_error(); 
     exit; 
     } 
    $row = mysql_fetch_row($query); 
     echo "<div id='uprjct' style='background:#336699;'> 
     <p>$row[0]</p> 
      </div>"; 

    ?> 

하지만 난 요소의 배열을 containg insert.php에 반환하고 어떤 ID가 ... 난 그나마 내가 (숫자 인)에만 ID를 원하는 모든 일을 할 수 있습니다. . 는 당신이 insert.php 파일에서 ... 내 코드에 어떤 문제가 있는지

답변

0

을 말해주십시오

<?php 
    print_r($_FILES); 
    $desc = $_POST['param']; 
    echo $desc; 
    .... 
    echo $video; 
    .... 
    echo mysql_insert_id(); 

당신은 많은 '에코'스크립트에있는 $ 내림차순 및 $의 값을 인쇄 vi deo와 print_r 함수는 삽입 된 id 앞에 $ _FILES라는 전체 배열을 출력합니다.

제외 귀하의 모든 echo 문을 삭제하십시오. 그런데 mysqli_ * 메서드를 사용하려고하면 mysql_ 메서드가 사용되지 않습니다.

편집 :

그렇게 만 ID가 인쇄 될 것입니다, 당신의 insert.php에서 쓸모없는 인쇄를 제거하려면 print_r($_FILES); 문을 제거합니다.

이미지를 표시하려면, 당신은 단지 쿼리에서 검색 한 IMG_PATH를 사용하여 만들 수 있습니다

<?php 
    $temp=$_GET['id']; 

    $host="localhost"; 
    $username="root"; 
    $password=""; 
    $db_name="geny"; 
    $tbl_name="project_details"; 
    mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
    mysql_select_db("$db_name")or die("cannot select DB"); 

    $query = mysql_query("SELECT content, img_path FROM project_details WHERE id=". $temp); 
    if (!$query) 
     { 
     echo 'Could not run query: ' . mysql_error(); 
     exit; 
     } 
    $row = mysql_fetch_row($query); 
    echo "<div id='uprjct' style='background:#336699;'>". 
      "<img src='".$row['img_path']."' alt='myimg' />". 
      "<p>".$row['content']."</p></div>"; 
    ?> 
+0

어레이 ([파일] => 배열 ([이름] => dc.jpg [형태] => 이미지/JPEG [tmp_name] => C : \ WAMP \ TMP \ phpA693.tmp [오류] => 0 [크기] => 9656)) 33 쿼리를 실행할 수 없습니다 : SQL 구문에 오류가 있습니다. 올바른 구문이 '[file] => Array ([name] => dc.jpg [type] => image /') 근처에서 사용하도록 MySQL 서버 버전에 해당하는 매뉴얼을 확인하십시오. another.php – user2330772

+0

$ temp는 anthoer.php에 어떤 값을 포함합니까? 그 안에 매우 나쁜 데이터가 있다고 가정합니다 ... – luk2302

+0

위의 내 코멘트는 $ temp의 데이터입니다 ... – user2330772

1

mysql_로 * 사용되지 않으며, 대신 사용 mysqli_ * 또는 PDO를.

(mysqli_ *)은 mysqli_insert_id($link);을 통해 ID를받습니다. $database->lastInsertId(); 통해 mysqli_insert_id PDO에

pdo lastInsertId

+0

예 .. PDO 명령문을 사용합니다 .ill 변화 – user2330772

관련 문제