PDA

View Full Version : سوال: هنگام فرستادن فرم در PDO باید از Input چطوری استفاده می کردیم؟



ABZiko
چهارشنبه 15 بهمن 1393, 18:45 عصر
سلام، بنده می خوام با PDO یک فرم رو ثبت کنم، ولی هنگام فرستادن فرم، باید یک input از نوع hidden برای آخرین لایه PDO می فرستادیم که من اینطوری نوشتمش :


<input type="hidden" value="addUser" />

فکر کنم یک چیزی کم داره، می شه راهنمایی کنید؟ این هم آخرین لایه ام از سه لایه است :


<?php
require_once('User.php');
switch('user'){
case'addUser':{
$objUser=new user();
$objUser->addUser($_POST['firstName'],$_POST['lastName'],$_POST['mail']);
print_r($objUser->getUser(5));}

case'FetchFiled':{
$objUser=new user();
$objUser->FetchFiled($_POST['id']);
print_r($objUser->FetchFiled(5));}

case'fetchOne':{
$objUser=new user();
$objUser->FetchOne($_POST['id']);
print_r($objUser->FetchOne);}

case'fetchAll':{
$objUser=new user();
$objUser->FetchAll($_POST['firstName']);
print_r($objUser->FetchAll);}

case'delUser':{
$objUser=new user();
$objUser->addUser($_POST['firstname'],$_POST['mail']);
print_r($objUser->delUser);}

case'updateUser':{
$objUser=new user();
$objUser->updateUser($_POST['id']);
print_r($objUser->updateUser);}}
?>

peymang
چهارشنبه 15 بهمن 1393, 19:04 عصر
به input اسم بده

مثلا "name="action

داخل سوئیچ هم باید مقدار اینپوت رو بررسی کنی

$_post['action']

ABZiko
چهارشنبه 15 بهمن 1393, 21:35 عصر
ممنون آقا پیام، یک ارور های دیگه ای هم داد که درستشون کردم، حالا با این که در دیتابیس ثبت می کنه، ولی یک ارور ه می ده :
Fatal error: Call to a member function fetch() on a non-object in D:\Wamp\www\PDO\Database.php on line 49
که خط 48 هم اینجاست :



<?php
define('PDO_DSN','mysql:host=localhost;dbname=pdo' );
define('DB_User','root');
define('DB_Pass','');

class Database
{
private static $handler;

private static function getHandler(){
if(!isset(self::$handler)){
try{
self::$handler=new PDO(PDO_DSN,DB_User,DB_Pass);}

catch(PDOException $e){
trigger_error('Error: Please Call Your Admin : '.$e->getMessage(), E_USER_ERROR);}}

return self::$handler;}

private static function close(){
self::$handler=null;}

public static function Execute($query){
try{
$connection=self::gethandler();
$sqlStatement=$connection->query($query);
return true;}

catch( PDOException $pe){
self::close();
trigger_error($pe-getMessage(),E_USER_ERROR);//E_USER_ERROR
return false;}}

public static function FetchAll($query){
try{
$handler=self::getHandler();
$result=$handler->query($query);
return $result->fetchAll(PDO::FETCH_ASSOC);}

catch(PDOEception $pe){
self::close();
trigger_error($pe-getMessage());//E_USER_ERROR
return false;}}

public static function FetchOne($query){
try{
$handler=self::getHandler();
$result=$handler->query($query);
return $result->fetch(PDO::FETCH_ASSOC);}

catch(PDOEception $pe){
self::close();
trigger_error($pe->getMessage());//E_USER_ERROR
return false;}}

public static function FetchFiled($query){
$connection=self::gethandler();
$sqlstatement=$connection->query($query);
$result=$sqlstatement->fetch(PDO::FETCH_NUM) ;
return $result=$result[0];}}
?>

hamedarian2009
چهارشنبه 15 بهمن 1393, 21:59 عصر
این خطو اینجوری بنویس


$sql="UPDATE user SET id='$id',firstName='$firstName',lastName='$lastNam e',mail='$mail' WHERE id='$id'";

peymang
چهارشنبه 15 بهمن 1393, 22:17 عصر
قبل از اینکه


$result->fetch(PDO::FETCH_ASSOC);


بررسی کن برابر با false ه اگه نبود fetch کن


این خطو اینجوری بنویس


$sql="UPDATE user SET id='$id',firstName='$firstName',lastName='$lastNam e',mail='$mail' WHERE id='$id'";




این کوئری رو از کجا فهمیدی استفاده کرده :)

ABZiko
پنج شنبه 16 بهمن 1393, 09:32 صبح
قبل از اینکه


$result->fetch(PDO::FETCH_ASSOC);


بررسی کن برابر با false ه اگه نبود fetch کن



این کوئری رو از کجا فهمیدی استفاده کرده :)


از هردو عزیز ممنونم، اتفاقا آقا پیمان برای خودم هم جالب بود، فکر کنم آقا حامد علم غیب داره چون بعد از این سوال می خواستم همین سوال رو بپرسم!؟!؟!؟؟!؟!:متعجب:

ABZiko
پنج شنبه 16 بهمن 1393, 09:37 صبح
قبل از اینکه


$result->fetch(PDO::FETCH_ASSOC);


بررسی کن برابر با false ه اگه نبود fetch کن



ببخشید منظورتون رو متوجه نشدم، می شه کاملتر توضیح بدین؟
فکر کنم توی لایه دوم یک کوئری بد نوشتم که ارور می ده ولی بازم ثبت می کنه :



$sql='INSERT INTO user VALUES(null,'."'$firstName','$lastName','$mail')";

peymang
پنج شنبه 16 بهمن 1393, 10:25 صبح
اگه کوئری با موفقیت انجام بشه یه شی pdo بر می گردونه که می تونی اونو fetch کنی و اگه با شکست روبرو بشه false بر می گردونه

و اگه فیلد های جدولتون همین 4 تا هستن می تونید اینجور کوئری رو استفاده کنید و در غیر این صورت باید اسم فیلد ها رو هم بنویسید

مثلا


INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)



و در مورد کوئری، با تک کوت باز شده و و با دابل بسته شده.
کد بالا رو اینطوری بنویسید




$sql="INSERT INTO user VALUES(null,'$firstName','$lastName','$mail')";

hamedarian2009
پنج شنبه 16 بهمن 1393, 12:18 عصر
از هردو عزیز ممنونم، اتفاقا آقا پیمان برای خودم هم جالب بود، فکر کنم آقا حامد علم غیب داره چون بعد از این سوال می خواستم همین سوال رو بپرسم!؟!؟!؟؟!؟!:متعجب:

خیر من علم غیب ندارم و به این چیزها هم اعتقاد ندارم اولش این کوپری رو گزاشته بودی اما بعدش پست رو ویرایش کردی. کوپری که نوشته بودی اشتباه بود و فکر میکنم به جای آکولاد {} که بعضی جاها دور متغیر میزارن شما اشتباها براکت [] گزاشته بودین