0

私はPHPに基づいたデータ入力プログラムを実行していますが、すべてが問題なく機能しています(まだ作成中です)が、解決策が見つからないという問題があります。問題は、データベースに画像パスが登録されないデータがない場合です。

現在、uplodifyを使用して画像ファイルをアップロードしていると同時に、いくつかのデータも送信しています。データには、名前、連絡先の詳細、説明が含まれています。これはDBに直接挿入されます。また、画像をアップロードしてフォルダーに保存し、名前をデータベースに保存します。ただし、このプロセスは2つの異なるPHPファイルによって処理されます。1つはデータの追加を処理するAddPOIPro.PHPであり、uplodify.phpはファイルのアップロードとファイル名の更新を処理します。

私が最初に抱えていた問題は、送信されたデータと同じ行にファイル名を追加しなかったため、最後のIDを取得して1つデクリメントし、データがある場合にデータがある場合に機能する行を更新することでした。失敗するデータはありません。だから私はこれを克服するために何をすべきか。以下は私の完全なスクリプトです。お時間をいただきありがとうございます。

<?php

/**
 * @author SiNUX
 * @copyright 2013
 */

include ('lId.php');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script type="text/javascript" src="Upl/jquery.uploadify.min.js"></script>
<script type="text/javascript" src="http://malsup.github.com/jquery.form.js"></script>

<script type="text/javascript">
$(function() {
    $('#imgUpload').uploadify({
        'auto'     : false,
        'swf'      : 'Upl/uploadify.swf',
        'uploader' : 'Upl/uploadify.php',
        'height'   : 20,
        'width'    : 200,
    }
        // Put your options here
    });
});
</script>

<script type="text/javascript">
 $(document).ready(function(){
  $("#sendData").click(function(){
    var name  = document.getElementById("Name").value;
    var desc = document.getElementById("Descrip").value;
    var con = document.getElementById("ConInfo").value;
    var dataString = 'Name='+name+'&Descrip='+desc+'&ConInfo='+con;

    $.ajax({
      type:'POST',
      data:dataString,
      url:'AddPoiPro.php',
      success:function(data){
       if(data="Data inserted") {
          //alert("Data  Success");
          document.getElementById('msg').innerHTML= "<div style=\"background-color:#0F0; text-align:center; color: #060\">Data Saved</dive>";
          $('#msg').delay(1500).fadeOut();

        } else {
          //alert("Not Inserted");
          document.getElementById('msg').innerHTML= "<div style=\"background-color:#0F0; text-align:center; color: red\">Data Not Saved</div>";
        }
     } 
   });
  });
});
</script>

<link rel="stylesheet" type="text/css" href="Upl/uploadify.css" />

<title>AddPOI</title>
</head>

<body>
<form method="post" enctype="multipart/form-data" name="form1" id="form1">
  <p>
    <label for="poiid">ID :</label>
    <input type="text" name="poiid" id="poiid" readonly="readonly" style="width:70px;" value="<?php echo $tId; ?>" />
  </p>
  <p>
    <label for="Name">POI Name :</label>

    <input type="text" name="Name" id="Name" />
  </p>
  <p>
    <label for="Descrip" style="alignment-adjust:middle">POI Description :</label>
    <textarea name="Descrip" id="Descrip" cols="45" rows="5"></textarea>
  </p>
  <p>
    <label for="ConInfo">Contact Infomation :</label>
    <textarea name="ConInfo" id="ConInfo" cols="45" rows="5"></textarea>
  </p>
  <p>
    <label for="Img">POI Image</label>
    <input type="file" name="imgUpload" id="imgUpload" />
  </p>
  <p><div id="msg"></div></p>
  <p>  
  <div align="center">
    <input type="button" name="Submit" id="sendData" value="Submit" onclick="$('#imgUpload').uploadify('upload','*');" style="width:100px;" />
    <input type="reset" name="reset" id="reset" value="Rest Data" style="width:100px;" />
  </div>
  </p>
</form>
</body>
</html>

PHPを処理する

<?php

/**
 * @author SiNUX
 * @copyright 2013
 */

include ('connect.php');

$getId = mysql_query("SELECT ID FROM poiinfo");
$row = mysql_fetch_array($getId);

$poiName = $_REQUEST['Name'];
$poiDes = $_REQUEST['Descrip'];
$poiCon = $_REQUEST['ConInfo'];

if($row['ID']== 1){

    $updLn = "UPDATE `poiinfo` SET `Name`='$poiName',`Des.`='$poiDes',`Contact`='$poiCon' WHERE 1";
    $updDone = mysql_query($updLn);
    if ($updDone){
        echo "Data inserted";
    }else {
        echo "Not Done";
    }  

}else {
 $dbData = "INSERT INTO poiinfo(`Name`, `Des.`, `Contact`) VALUES ('$poiName','$poiDes','$poiCon')";

        $putData = mysql_query($dbData);
        if ($putData){
            echo "Data inserted";
        }else {
            echo "Not Done";
        }
 }       
?>

phpをuplodify

<?php
/*
Uploadify
Copyright (c) 2012 Reactive Apps, Ronnie Garcia
Released under the MIT License <http://www.opensource.org/licenses/mit-license.php> 
*/

include ('../../POIWeb/connect.php');
include ('../../POIWeb/lId.php');


// Define a destination
$path = 'POIWeb/img/';
$targetPath = $_SERVER['DOCUMENT_ROOT'] . $path ; // Relative to the root

/*$verifyToken = md5('unique_salt' . $_POST['timestamp']);

if (!empty($_FILES) && $_POST['token'] == $verifyToken) {
    $tempFile = $_FILES['Filedata']['tmp_name'];
    $targetPath = $_SERVER['DOCUMENT_ROOT'] . $targetFolder;
    $targetFile = rtrim($targetPath,'/') . '/' . $_FILES['Filedata']['name'];

    // Validate the file type
    $fileTypes = array('jpg','jpeg','gif','png'); // File extensions
    $fileParts = pathinfo($_FILES['Filedata']['name']);

    if (in_array($fileParts['extension'],$fileTypes)) {
        move_uploaded_file($tempFile,$targetFile);

        echo $fName;
        echo '1';
    } else {
        echo 'Invalid file type.';
    }
}*/

//if (!empty($_FILES)) {
    $tempFile = $_FILES['Filedata']['tmp_name'];
    $targetFile = $targetPath . $_FILES['Filedata']['name'];

    // Validate the file type
    $fileTypes = array('jpg','jpeg','gif','png'); // File extensions
    $fileParts = pathinfo($_FILES['Filedata']['name']);    
    $tId = $tId--;


    if (in_array($fileParts['extension'],$fileTypes)) {
        move_uploaded_file($tempFile,$targetFile);

        $fName = $_FILES['Filedata']['name'];
        $imgPath = "UPDATE poiinfo SET Img = '$fName' WHERE ID = '$tId'";
        mysql_query($imgPath);  

     echo '1';       

    } else {
        echo 'Invalid file type.';
    }
?>

助けてください。

4

3 に答える 3

0

私の問題の解決策には、StackOverflowのメンバーからの助けがあったことがわかりました。以下は私の完全なコードです。私と同じ問題が発生している場合は、このコードを使用できます。そしてそれがあなたのために働くならば、plsは私に投票してくれてありがとう。

マイデータ入力フォーム

<?php

/**
 * @author SiNUX
 * @copyright 2013
 */

include ('lId.php');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script type="text/javascript" src="Upl/jquery.uploadify.min.js"></script>

<script type="text/javascript">
$(function() {
    $(function() {
        $('#imgUpload').uploadify({
            'auto'     : false,
            'swf'      : 'Upl/uploadify.swf',
            'uploader' : 'Upl/uploadify.php',
            'height'   : 20,
            'width'    : 200,
            'fileTypeDesc' : 'Image Files',
            'fileTypeExts' : '*.gif; *.jpg; *.png'
    });
        // Put your options here
    });
});
</script>

<script type="text/javascript">
 $(document).ready(function(){
  $("#save_data").click(function(){
    var name  = document.getElementById("Name").value;
    var desc = document.getElementById("Descrip").value;
    var con = document.getElementById("ConInfo").value;

    var dataString = 'Name='+name+'&Descrip='+desc+'&ConInfo='+con;

    $.ajax({
      type:'POST',
      data:dataString,
      url:'AddPoiPro.php',
      success:function(data){
       if(data="Data inserted") {
          //alert("Data  Success");
          document.getElementById('msg').innerHTML= "<div style=\"background-color:#0F0; text-align:center; color: #060\">Data Saved</dive>";
          $('#msg').delay(1500).fadeOut();
        } else {
          //alert("Not Inserted");
          document.getElementById('msg').innerHTML= "<div style=\"background-color:#0F0; text-align:center; color: red\">Data Not Saved</div>";
          $('#msg').delay(1500).fadeOut();
        }
     } 
   });
  });
});
</script>

<link rel="stylesheet" type="text/css" href="Upl/uploadify.css" />

<title>AddPOI</title>
</head>

<body>
<form method="post" enctype="multipart/form-data" name="form1" id="form1">
  <p>
    <label for="poiid">ID :</label>
    <input type="text" name="poiid" id="poiid" readonly="readonly" style="width:70px;" value="<?php echo $tId; ?>" />
  </p>
  <p>
    <label for="Name">POI Name :</label>

    <input type="text" name="Name" id="Name" />
  </p>
  <p>
    <label for="Descrip" style="alignment-adjust:middle">POI Description :</label>
    <textarea name="Descrip" id="Descrip" cols="45" rows="5"></textarea>
  </p>
  <p>
    <label for="ConInfo">Contact Infomation :</label>
    <textarea name="ConInfo" id="ConInfo" cols="45" rows="5"></textarea>
  </p>
  <p>
    <label for="Img">POI Image</label>
    <input type="file" name="imgUpload" id="imgUpload" />
  </p>
  <p><div id="msg"></div></p>
  <p>  
  <div align="center">
    <input type="button" name="Submit" id="save_data" value="Submit" onclick="$('#imgUpload').uploadify('upload','*');" style="width:100px;" />
    <input type="reset" name="reset" id="reset" value="Rest Data" style="width:100px;" />
  </div>
  </p>
</form>
</body>
</html>

私のDataProcessPHP

<?php

/**
 * @author SiNUX
 * @copyright 2013
 */

include ('connect.php');

$getId = mysql_query("SELECT ID FROM dbname");
$row = mysql_fetch_array($getId);

$poiName = $_REQUEST['Name'];
$poiDes = $_REQUEST['Descrip'];
$poiCon = $_REQUEST['ConInfo'];

if($row['ID']== 1){

    $updLn = "UPDATE `poiinfo` SET `Name`='$poiName',`Des.`='$poiDes',`Contact`='$poiCon' WHERE 1";
    $updDone = mysql_query($updLn);

    if ($updDone){
        echo "Data inserted";
    }else {
        echo "Not Done";
    }  

}else {
    $dbData = "INSERT INTO poiinfo(`Name`, `Des.`, `Contact`) VALUES ('$poiName','$poiDes','$poiCon')";        
    $putData = mysql_query($dbData);

    if ($putData){
        echo "Data inserted";
    }else {
        echo "Not Done";
    }
 }       
?>

これはuploadifyPHPを本当にトリッキーにしましたが、私が望むように動作させることができました。

PHPのUplodify(私のバージョン)

<?php
/*
Uploadify
Copyright (c) 2012 Reactive Apps, Ronnie Garcia
Released under the MIT License <http://www.opensource.org/licenses/mit-license.php> 
*/

include ('../../POIWeb/connect.php');
include ('../../POIWeb/lId.php');


// Define a destination
$path = 'POIWeb/img/';
$targetPath = $_SERVER['DOCUMENT_ROOT'] . $path ; // Relative to the root

/*$verifyToken = md5('unique_salt' . $_POST['timestamp']);

if (!empty($_FILES) && $_POST['token'] == $verifyToken) {
    $tempFile = $_FILES['Filedata']['tmp_name'];
    $targetPath = $_SERVER['DOCUMENT_ROOT'] . $targetFolder;
    $targetFile = rtrim($targetPath,'/') . '/' . $_FILES['Filedata']['name'];

    // Validate the file type
    $fileTypes = array('jpg','jpeg','gif','png'); // File extensions
    $fileParts = pathinfo($_FILES['Filedata']['name']);

    if (in_array($fileParts['extension'],$fileTypes)) {
        move_uploaded_file($tempFile,$targetFile);

        echo $fName;
        echo '1';
    } else {
        echo 'Invalid file type.';
    }
}*/

//if (!empty($_FILES)) {
    $tempFile = $_FILES['Filedata']['tmp_name'];
    $targetFile = $targetPath . $_FILES['Filedata']['name'];

    // Validate the file type
    $fileTypes = array('jpg','jpeg','gif','png'); // File extensions
    $fileParts = pathinfo($_FILES['Filedata']['name']);    
    $tId = $tId--;


    if (in_array($fileParts['extension'],$fileTypes)) {
        move_uploaded_file($tempFile,$targetFile);

        $fName = $_FILES['Filedata']['name'];
        $imgPath = "UPDATE poiinfo SET Img = '$fName' WHERE ID = '$tId'";
        mysql_query($imgPath);  

     echo '1';       

    } else {
        echo 'Invalid file type.';
    }
?>

このスクリプトは、私が直面したのと同じ状況に直面している場合に問題なく機能します。これを使用して、それが機能するかどうかを確認し、変更を加えることもできます。

ありがとうございました。

于 2013-01-29T06:42:32.307 に答える
0

これはより良いアプローチだと思います

 $("#sendData").click(function(){
    //upload the file programatically (Method Call'upload')[http://www.uploadify.com/documentation/uploadify/upload/]
    // echo the name of the uploaded file (make sure to rename the file for uniquiness)
    // create a hidden element with the filename as the value inside the form
    // call the ajax submit and submit the form. You can use (onuploadsuccess)[http://www.uploadify.com/documentation/uploadify/onuploadsuccess/] to trigger the element creation and ajax submit functions
 });

現在の実装では、問題が発生する可能性があります。
リクエスト1:ID 10
アップロード1:ID 10
リクエスト2:ID 11
リクエスト3:ID 12
アップロード2:ID 12
アップロード3:ID 12

于 2013-01-24T09:41:26.373 に答える
0

最後のIDを取得するには、次のようにクエリを実行できます

SELECT `ID`
FROM `poiinfo`
ORDER BY `ID` DESC
LIMIT 0 , 1

あなたがそれ以上の問題に直面した場合、あなたは私をノックすることができます。

于 2013-01-24T09:18:43.560 に答える