PDA

View Full Version : سوال: اشکال این کد چیه



زینب فاطمی
چهارشنبه 21 دی 1390, 23:02 عصر
با سلام
من این کد رو برای درج مطلب نوشتم ولی کارنمیکنه . در صورتی که قبل ازاین دستور echo رو گذاشتم ودیذم همه رو درست چاپ می کنه . آیا در کدزیر مشکلی هست؟



$query="INSERT INTO ask(contact , id_ask , title , text , pass , user )VALUES('$contact' , '$id_person' , '$title' , '$text' , '$password' , '$username')";
if(mysql_query($query))
{header("location:result_sendask.php ") ;}else{echo'شما در ورود اطلاعات با مشکل مواجه شده اید لطفا عملیات خود را مجددا تکرار فرمایید ';};
?>

mbf5923
چهارشنبه 21 دی 1390, 23:16 عصر
این رو چک کنید:

mysql_query("INSERT INTO ask (contact , id_ask , title , text , pass , user) values ('$contact' , '$id_person' , '$title' , '$text' , '$password' , '$username')");
در ضمن کد خودتون هم خظایی نداشت!
توی ثبت مشکل داره؟

رضا قربانی
پنج شنبه 22 دی 1390, 00:01 صبح
واسه معرفی فیلدهای جدولت از امپرسنت (`) استفاده کن

مثلا : contact` , `id_ask` , `title` , `text` , `pass` , `user`
البته شاید مشکلت این باشه

djsaeedkhan
پنج شنبه 22 دی 1390, 00:17 صبح
سلام اینو امتحان کن. اگر کد هات خطا میده با متن خطا بزار

<?php
$query="INSERT INTO ask(`contact` , `id_ask` , `title` , `text` , `pass`,`user` ) VALUES('$contact' , '$id_person' , '$title' , '$text' , '$password' , '$username')";
if(mysql_query($query))
{header("location:result_sendask.php") ;}
else{echo'شما در ورود اطلاعات با مشکل مواجه شده اید لطفا عملیات خود را مجددا تکرار فرمایید ';}

?>

زینب فاطمی
پنج شنبه 22 دی 1390, 14:04 عصر
با سلام
اینکار رو انجام دادم بازهم ثبت نمی کنه . فیلدهای جدول روهم با این فیلدها چک کردم . نمی فهمم گیرکارکجاست.

djsaeedkhan
پنج شنبه 22 دی 1390, 14:13 عصر
با سلام
شما فایل کد هارو بفرستید تا بشه اصلاح کرد و فرستاد
اینجوری نمیشه صد در صد گفت مشکل از کجاست

زینب فاطمی
پنج شنبه 22 دی 1390, 17:22 عصر
سلام
این کدها هست .

<?php
session_start();
$id_person=$_SESSION['id_person'];
$contact=$_POST['contact'];
$title=$_POST['title'];
$text=$_POST['text'];
?>
<?php $link=mysql_connect('localhost', 'root', '' );
if(!$link)
{die(' وصل نشد');};
$database="meshkat";
mysql_select_db($database) or die('به دیتابیس وصل نشد');
?>
<?php $search = "SELECT * FROM person WHERE id_person=$id_person ";
$result = mysql_query( $search,$link);
$rowc = mysql_fetch_array($result);
$username =$rowc['username'];
$password =$rowc['password'];

$query="INSERT INTO ask('contact' , 'id_ask' , 'title' , 'text' , 'pass' , 'user' )VALUES('$contact' , '$id_person' , '$title' , '$text' , '$password' , '$username')";
if(mysql_query($query))
{header("location:result_sendask.php ") ;}else{echo'شما در ورود اطلاعات با مشکل مواجه شده اید لطفا عملیات خود را مجددا تکرار فرمایید ';};
?>

<?php
mysql_close($link); ?>

djsaeedkhan
پنج شنبه 22 دی 1390, 17:55 عصر
سلام
خداییش تا حالا تا این حد سر کار نرفته بودم
لطف بفرمایید در قسمت نام فیلد های دیتابیس بجای
('contact' , 'id_ask' , 'title' , 'text' , 'pass' , 'user' )
بگذارید
(`contact`,`id_ask`,`title`,`text`,`pass`,`user`)
یعنی نباید در قسمت دیتابیس از ' استفاده کنید. یا چیزی نذارید یا اینکه از ` استفاده کنید

زینب فاطمی
پنج شنبه 22 دی 1390, 18:49 عصر
تشکر ولی باید خدمتتون بگم من چیزی نذاشته بودم بعد به پیشنهادشما گذاشتم ولی اشتباه دیدم حالام که درست کردم حل نشد وقتی هم برداشتم هم حل نشد . ببخشید .آیا این کد نحوه ی دیگه ای هم نوشته میشه ؟من درست قبل ازعمل درج دستور echo را نوشتم همه رو درست چاپ میکنه ولی عمل درج رو انجام نمیده!!!

djsaeedkhan
پنج شنبه 22 دی 1390, 19:37 عصر
با سلام
من تست کردم و درست انجام شد
حتی درج هم شد در دیتابیس

اینم کد هاش

<?php
session_start();
$id_person="id_person";//$_SESSION['id_person'];
$contact="contact";//$_POST['contact'];
$title="title";//$_POST['title'];
$text="text";//$_POST['text'];
?>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="fa">
</head>


<?php $link=mysql_connect('localhost', 'root', '' );
if(!$link)
{die('No Connection To Host');};
$database="data";
mysql_select_db($database) or die('No DB Found');
?>
<?php //$search = "SELECT * FROM person WHERE id_person=$id_person ";
// $result = mysql_query( $search,$link);
//$rowc = mysql_fetch_array($result);
$username ="username ";
$password ="password ";

$query="INSERT INTO meshkat(`contact` , `id_ask` , `title` , `text` , `pass` , `user` )VALUES('$contact' , '$id_person' , '$title' , '$text' , '$password' , '$username')";
if(mysql_query($query))
{
echo "saved";
}
else{
echo"not saved";
}
?>

<?php
mysql_close($link); ?>

فقط نام دیتابیس بجای ask گذاشتم مشکات
و مقادیری که از صفحات قفل گرفته می شد رو پیشفرض دادم

اگر مشکل حل نشد باید کل پروژه رو بگذارید تا اساسی درست شود.

با تشکر

زینب فاطمی
پنج شنبه 22 دی 1390, 20:16 عصر
سلام
خیلی ممنون . مشکل حل نشد . شاید دیتابیس ایرادی داره چون همین کد جای دیگه عمل میکنه ولی اینجا نه !!:متعجب:

mamali-mohammad
پنج شنبه 22 دی 1390, 23:19 عصر
بعد از دستور ثبت اطلاعات اینو بنویس :

echo mysql_error();

ارورش رو اینجا بگو

mtchabok
پنج شنبه 22 دی 1390, 23:42 عصر
فیلد id_ask در جدولتون اگه عددی هس باید عدد بهش بدین . یعنی به اینصورت :

$query="INSERT INTO meshkat(`contact` , `id_ask` , `title` , `text` , `pass` , `user` )VALUES('$contact' , $id_person , '$title' , '$text' , '$password' , '$username')";

djsaeedkhan
جمعه 23 دی 1390, 00:05 صبح
با سلام
این دیتابیسی هست که من برای نمونه ساختم


CREATE TABLE IF NOT EXISTS `meshkat` (
`contact` text NOT NULL,
`id_ask` text NOT NULL,
`title` text NOT NULL,
`text` text NOT NULL,
`pass` text NOT NULL,
`user` text NOT NULL,
`id` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;


اگر دوست داشتید ساختار دیتابیس رو بذارید تا ببینیم چی مشکل داره
البته اگر مشکل هم از هاست مجازی هست یا ریستارت سرویس کنید یا دوباره نصب کنید

زینب فاطمی
جمعه 23 دی 1390, 12:30 عصر
سلام
این ارور رو میده :Duplicate entry '3' for key 'PRIMARY'
در جدول id_ask ، ask کلیداصلی هست .

mbf5923
جمعه 23 دی 1390, 12:36 عصر
خوب دارین یه مقدار رو دوبار به عنوان کلید اصلی ذخیره میکنید
یعنی یکبار مثلا 100 در این فیلد ذخیره شده دوباره 100 رو ذخیره میکنید

زینب فاطمی
جمعه 23 دی 1390, 13:23 عصر
سلام
بله اشتباه من این بود که کلید اصلی رو در قسمت پرسش برابر با کلید اصلی فرد گرفتم درنتیجه وقتی یک نفر وارد میشد و 2تا سوال می پرسید ثبت نمیشد . یه فیلد id به عنوان کلیداصلی اضافه کردم درست شد . ازهمه شما ممنونم .:تشویق:

djsaeedkhan
جمعه 23 دی 1390, 13:37 عصر
با سلام
شما می تونی این فیلد آیدی که در نظر گرفتی از نوع a_i یا Auto increment در نظر بگیری که خودش یکی یکی میره جلو و مقدار دهی می کنه. اونم بصورت منحصر به فرد. من در تمام جدول هایی که دارم یه فیلد آیدی به یان صورت ایجاد می کنم و کلید اصلیش می کنم تا هیچوقت مشکل پیدا کردن یه سطر خاص رو نداشته باشم

زینب فاطمی
جمعه 23 دی 1390, 15:58 عصر
سلام
اتفاقا من هم Auto increment تعریف کرده بودم ولی وقتی شخصی وارد سایت میشد id_person شماره شناسایی این فرد بود که درقسمت پرسش به عنوان id_ask ثبت میشد درنتیجه برای یک فرد یک عدد ثابت بود وAuto increment تاثیری نداشت برای همین یک فیلد جدید تعریف کردم وکلید اصلی رو فیلد جدید قرار دادم . ممنون از راهنمایی هاتون . موفق باشید .