2011-10-20 16 views
0

私はこの間、ユーザーがフォームを提出した後、私の「製品」がphpMyAdminにアップロードされない理由を理解しようと数日間奮闘してきました。メンバーは自分の製品を作成する... &私が立ち往生している場所は次のとおりです:私はログインしているユーザーです。私はユーザーの管理者から "Product a List"ページにいます。私が製品情報を入力したら、それを提出するためにクリックして、製品&をphpmyadminに投稿しません。私はmove_uploaded_file関数を介してフォルダにアップロードされた画像を移動しようとしています。どんな助けでも大歓迎です。すべてのコードは以下でなければなりません(データベースが接続されており、すべてのセッションは、私は信じているなど、適切に設定):PHPはPHPmyAdminのデータベースには挿入されません

if (isset($_POST['product_name'], $_POST['product_description'])) { 
$product_name = $_POST['product_name']; 
$product_description = $_POST['product_description']; 

$errors = array(); 

if (empty($product_name) || empty($product_description)) { 
    $errors[] = "All Fields are required"; 
} else { 
    if (strlen($product_name) > 55 || strlen($product_description) > 255) { 
     $errors[] = "One or more fields contains too many characters"; 
    } 

} 

if (!empty($errors)) { 
    foreach ($errors as $error) { 
     echo $error, '<br/>'; 
     } 
    } else { 
     create_product($product_name, $product_description); 

     header("location: product.php?product_id='.$product_id.'"); 
     exit(); 
    } 
} 

<form action="" method="post" enctype="multipart/form-data"> 
     <p>Product Name:<br/><input type="text" name="product_name" maxlength="55" /></p> 
     <p>Describe this Product:<br/><textarea name="product_description" rows="6" cols="35" maxlength="255"></textarea></p> 

     <p>Upload a product profile pic:<br/><input type="file" name="fileField" id="fileField" /></p> 
     <p><input type="submit" value="Create"></p> 
    </form> 

create_product.php(ユーザーのログインページからフォームが新製品を一覧表示します(create_product.phpファイルに含まれている)私のproduct.functions.phpファイルから

機能:私は私の問題は、画像のアップロードから来ていると思われるが、私は永遠にこれで苦労してきた

function create_product($product_name, $product_description) { 
$product_name = mysql_real_escape_string(htmlentities($product_name)); 
$product_description = mysql_real_escape_string(htmlentities($product_description)); 

mysql_query("INSERT INTO `products` VALUES ('','".$_SESSION['member_id']."', UNIX_TIMESTAMP(), '$product_name', '$product_description')"); 

$bmid = mysql_insert_id(); 
// place image in the folder 
$newname = "$bmid.jpg"; 
move_uploaded_file($_FILES['fileField']['tmp_name'],'uploads/$newname'); 
} 

...ご協力いただきありがとうございます。

答えて

0

これにはいくつか問題があります。最初はinsert文です。あなたは `、MySQL固有のものであり、必須ではありません。次に、あなたのIDフィールドが何であるかの値がnullです。 (もちろん、あなたの列名を持つ)であるためにあなたのINSERT文を変更します。あなたのファイルを引き起こすwoud

INSERT INTO products (member,date_time,prod_name,prod_desc) VALUES ('".$_SESSION['member_id']."', UNIX_TIMESTAMP(), '$product_name', '$product_description') 

はアップロードしないとデータベースがない更新します。試してみることができるもう一つの問題は、文字列からphp変数を取り除いて一緒に連結することです。 newname変数は、次のように記述する必要があります。

$location = "uploads/" . $bmid . ".jpg"; 
move_uploaded_file($_FILES['fileField']['tmp_name'],$location); 

これが機能しない場合は、SQLとそれが使用しているエラーを出力する必要があります。

$SQL = "INSERT INTO products (member,date_time,prod_name,prod_desc) VALUES ('".$_SESSION['member_id']."', UNIX_TIMESTAMP(), '".$product_name."', '".$product_description".')"; 
$result = mysql_query($SQL); 
if(!$result) echo "SQL: ", $SQL, "<br />ERROR: ", mysql_error(); 
+0

どうもありがとうジェームズ(&他のレスポンダ)ので、INSERT INTOでなければなりません/ sの名前VALUES()の前に列を置くことを忘れてしまいましたVALUES()の修正がうまくいき、phpMyAdminにロードされている製品があります...イメージはアップロードフォルダに実際にロードされましたが、そのように表示されないように "product_id#.jpg"として表示されませんでした。 $ bmid = mysql_insert_id();を使用した後に$ bmidになるはずの製品IDを取得しました; – BennyB

+0

$ bmidを$ bmidから削除する必要があります。 –

+0

申し訳ありませんが - 言及するのを忘れていました...あなたも指示どおりに&まだ表示されなかったように - ちょうど "$ newname"としてフォルダに表示されました – BennyB

0

問題は、あなたのINSERTクエリである、あなたは)(それはINSERT INTO table_name (columns_name) VALUES (values);

+0

afair、これは省略することができます – k102

関連する問題