PDA

View Full Version : مشکل در ذخیره و بازیابی اطلاعات فرم



lord_1033
دوشنبه 28 آذر 1390, 23:19 عصر
سلام دوستان خسته نباشید
من با برنامه دریم ویور یه فرم درست کردم که اطلاعات یه شخصی رو میگیره و اطلاعات رو به یه دیتابیس مجازی میفرسته حالا میخوام مثلا یکی تو یه فرم اسمشو وارد کنه اطلاعاتش رو از دیتابیس بگیره ویرایش کنه و دوباره به دیتابیس بفرسته
من اینو واسه دانشگاه میخوام دیتابیس مجازی رو با برنامه AppServ درست کردم
من خودم یه چیزایی نوشتم ولی مشکل داره اگه میشه کمکم کنین

من تو دو صفحه نوشتم
این صفحه اول من هستش
<body>
<form action="7.php" method="post">
name
<input type="text" name="name" value="<?php echo $row[0]?> " />
family
<input type="text" name="family" value="<?php echo $row[1]?>" />
<input type="submit" value="send" />
</form>
</body>
</html>

این صفحه دومه منه که اسمش 7 هستش

<body>
<?php

$name=$_POST[name];
$family=$_POST[family];

mysql_connect();
mysql_select_db(test);
$x=mysql_query( "select * from iman where name="$name" and family="$family" limited=1");
$num=mysql_num_rows($x);
for($i=0 ; $i<$num ; $i++)
{
$row=mysql_fetch_row($x);
echo $row[0];
echo "<br>";
echo $row[1];
echo "<br>";
echo $row[2];
echo "<br>";
echo $row[3];
echo "<br>";
echo "<br>";
}
mysql_connect();
mysql_select_db(test);
$x=mysql_query("UPDATE `iman` SET `name` = 'iman',`family` = 'dehghani' WHERE CONVERT( `name` USING utf8 ) = 'ali' AND CONVERT( `family` USING utf8 ) = 'hasani' AND CONVERT( `father` USING utf8 ) = 'mohamad' AND CONVERT( `number` USING utf8 ) = '09353428336' LIMIT 1 ;");

$num=mysql_num_rows($x);
for($i=0 ; $i<$num ; $i++)
{
$row=mysql_fetch_row($x);
echo $row[0];
echo "<br>";
echo $row[1];
echo "<br>";
echo $row[2];
echo "<br>";
echo $row[3];
echo "<br>";
echo "<br>";
}
?>
</body>
</html>

narsic
سه شنبه 29 آذر 1390, 00:18 صبح
مشکل کجاست ؟؟
شما نیاز نیست هر بار به بانک اطلاعاتی متصل بشید و بانک رو انتخاب کردید یک بار که اتصال رو برقرار کردید تا انتهای برنامه با همون اتصال کار کنید (البته تا زمانی که حرفه ایی میشید در آینده باید مدیریت بیشتری روی ارتباطتون داشته باشید)
کد شما هم تا جایی که من دیدم به جز اینکه از اطلاعات فرم ارسالی استفاده نمیکنه در Query اول انتهای دستورات به جای limited=1 از limit 1 استفاده کنید تا تنها یک رکورد رو برگردونه اگه هم به تمام رکوردها نیاز دارید این تیکه رو حذف کنید.
دوست عزیز عنوان تاپیک رو درست کنید
موفق باشید

lord_1033
سه شنبه 29 آذر 1390, 00:39 صبح
میشه بیشتر توضیح بدین آخه من الان این برنامه رو اجرا میکنم ولی ارور میده
چیزی کم نداره این کد؟
من تو فرم اولیه 4 چیزو گرفتم فرستادم به دیتابیس حالا میخوام تو این فرم جدید اسم و فامیل رو وارد کنه اطلاعات اونو از دیتابیس بیرون بیاره ویرایش کنه بعد برگردونه

narsic
سه شنبه 29 آذر 1390, 02:54 صبح
متن خطا رو بزار تا از روی متن خطا کمکت کنم (من کد رو اجرا نکردم فقط مقداریش رو خوندم مشکل نداشت)
دوست عزیز اینی که میگی یه برنامه است شروع کن انجامش بده جایی ازش مشکل داشتی بپرس راهنمایی میکنیم

lord_1033
سه شنبه 29 آذر 1390, 10:44 صبح
صفحه دوم این خطا رو میده:

Parse error: syntax error, unexpected T_VARIABLE in C:\AppServ\www\iman\7.php on line 40

narsic
سه شنبه 29 آذر 1390, 10:58 صبح
به من خطای خط 9 رو میده (فک کنم کد اینجا کامل نیست) که اونم به خاطر جمع زدن رشته و متغیر به صورت نادرست بود
کد صحیح

<body>
<?php

$name=$_POST[name];
$family=$_POST[family];

mysql_connect();
mysql_select_db(test);
$x=mysql_query( "select * from iman where name=".$name." and family=".$family." limit 1");
$num=mysql_num_rows($x);
for($i=0 ; $i<$num ; $i++)
{
$row=mysql_fetch_row($x);
echo $row[0];
echo "<br>";
echo $row[1];
echo "<br>";
echo $row[2];
echo "<br>";
echo $row[3];
echo "<br>";
echo "<br>";
}
mysql_connect();
mysql_select_db(test);
$x=mysql_query("UPDATE `iman` SET `name` = 'iman',`family` = 'dehghani' WHERE CONVERT( `name` USING utf8 ) = 'ali' AND CONVERT( `family` USING utf8 ) = 'hasani' AND CONVERT( `father` USING utf8 ) = 'mohamad' AND CONVERT( `number` USING utf8 ) = '09353428336' LIMIT 1 ;");

$num=mysql_num_rows($x);
for($i=0 ; $i<$num ; $i++)
{
$row=mysql_fetch_row($x);
echo $row[0];
echo "<br>";
echo $row[1];
echo "<br>";
echo $row[2];
echo "<br>";
echo $row[3];
echo "<br>";
echo "<br>";
}
?>
</body>
</html>
و مشکل هم در خط 9 بود که شما به این شکل نوشته بودی


$x=mysql_query( "select * from iman where name="$name" and family="$family" limited=1");
موفق باشید

mtchabok
سه شنبه 29 آذر 1390, 11:11 صبح
سلام

$x=mysql_query("UPDATE `iman` SET `name` = 'iman',`family` = 'dehghani' WHERE CONVERT( `name` USING utf8 ) = 'ali' AND CONVERT( `family` USING utf8 ) = 'hasani' AND CONVERT( `father` USING utf8 ) = 'mohamad' AND CONVERT( `number` USING utf8 ) = '09353428336' LIMIT 1 ;");

در کد بالا متغیر $x دارای رکوردی نیس . چونکه بازگشت update به صورت عددی هس .



<body>
<?php

$name=$_POST[name];
$family=$_POST[family];

mysql_connect();
mysql_select_db(test);

$x=mysql_query( "select * from iman where name="$name" and family="$family" limit 1");
$num=mysql_num_rows($x);
for($i=0 ; $i<$num ; $i++)
{
$row=mysql_fetch_row($x);
echo $row[0];
echo "<br>";
echo $row[1];
echo "<br>";
echo $row[2];
echo "<br>";
echo $row[3];
echo "<br>";
echo "<br>";
}

$x=mysql_query("UPDATE `iman` SET `name` = 'iman',`family` = 'dehghani' WHERE CONVERT( `name` USING utf8 ) = 'ali' AND CONVERT( `family` USING utf8 ) = 'hasani' AND CONVERT( `father` USING utf8 ) = 'mohamad' AND CONVERT( `number` USING utf8 ) = '09353428336' LIMIT 1 ;");
if($x==1) echo 'success';
else echo 'failed';


?>
</body>
</html>

lord_1033
سه شنبه 29 آذر 1390, 11:12 صبح
باز این ارور رو میده:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\iman\8.php on line 38

lord_1033
سه شنبه 29 آذر 1390, 11:16 صبح
الان تغیر دادم این ارور رو داد:

Parse error: syntax error, unexpected T_VARIABLE in C:\AppServ\www\iman\7.php on line 47

lord_1033
سه شنبه 29 آذر 1390, 11:31 صبح
فرم اولیه من اینه که اطلاعاتو به دیتابیس میفرسته ببینی چیزی کم نداره اینجا:



<body>

<?php session_start(); ?>

<form action="3.php" method="post">
<p>
<input type="text" name="Name" />
نام
<p>
<input type="text" name="family" />
نام خانوادگی
<p>
<input type="text" name="father" />
نام پدر
<p>
<input type="text" name="number" />
تلفن
<p>
<input type="submit" value="ارسال" />
<?php echo $_SESSION["R"];$_SESSION["R"]="";?>

</form>
</body>
</html>

mtchabok
سه شنبه 29 آذر 1390, 11:32 صبح
یه بار دیگه کل کدهای این فایلت رو بزار با تمام ویرایشی که انجام دادی .
تا مشکلت رو برطرف کنیم .

mtchabok
سه شنبه 29 آذر 1390, 11:41 صبح
نه این فایل فرمت ظاهرا اشکالی نداره .

lord_1033
سه شنبه 29 آذر 1390, 11:41 صبح
خب این اولیش:

<body>

<?php session_start(); ?>

<form action="3.php" method="post">
<p>
<input type="text" name="Name" />
نام
<p>
<input type="text" name="family" />
نام خانوادگی
<p>
<input type="text" name="father" />
نام پدر
<p>
<input type="text" name="number" />
تلفن
<p>
<input type="submit" value="ارسال" />
<?php echo $_SESSION["R"];$_SESSION["R"]="";?>

</form>
</body>
</html>

lord_1033
سه شنبه 29 آذر 1390, 11:42 صبح
اینم صفحه بعدی:

<body>
<?php
session_start();

$name=$_POST[Name];
$family=$_POST[family];
$father=$_POST[father];
$number=$_POST[number];


mysql_connect();
mysql_select_db(test);
mysql_query( "INSERT INTO `iman` ( `name` , `family` , `father` , `number` )
VALUES (
'$name', '$family', '$father', '$number')");

{
$_SESSION["R"]="مشخصات شما ثبت شد";
header("location:2");
}

?>

</body>

lord_1033
سه شنبه 29 آذر 1390, 11:43 صبح
اینم صفحه سوم:


<body>
<form action="7.php" method="post">
name
<input type="text" name="name" value="<?php echo $row[0]?> " />
family
<input type="text" name="family" value="<?php echo $row[1]?>" />
<input type="submit" value="send" />
</form>
</body>
</html>

lord_1033
سه شنبه 29 آذر 1390, 11:43 صبح
اینم آخرین صفحه:


<body>
<?php

$name=$_POST[name];

$family=$_POST[family];



mysql_connect();

mysql_select_db(test);



$x=mysql_query( "select * from iman where name="$name" and family="$family" limit 1");

$num=mysql_num_rows($x);

for($i=0 ; $i<$num ; $i++)

{

$row=mysql_fetch_row($x);

echo $row[0];

echo "<br>";

echo $row[1];

echo "<br>";

echo $row[2];

echo "<br>";

echo $row[3];

echo "<br>";

echo "<br>";
}

$x=mysql_query("UPDATE `iman` SET `name` = 'iman',`family` = 'dehghani' WHERE CONVERT( `name` USING utf8 ) = 'ali' AND CONVERT( `family` USING utf8 ) = 'hasani' AND CONVERT( `father` USING utf8 ) = 'mohamad' AND CONVERT( `number` USING utf8 ) = '09353428336' LIMIT 1 ;");

if($x==1) echo 'success';

else echo 'failed';

?>
</body>
</html>

mtchabok
سه شنبه 29 آذر 1390, 11:53 صبح
در صفحه آخر می خواستی چیکار کنی ؟ ( درست متوجه نشدم )
اومدی از فرم صفحه سوم نام و فامیلی رو گرفتی و در صفحه آخر select شون کردی و بعد اومدی یه نام و فامیلی دیگه رو در حالتی که ربطی به نام و فامیلی گرفته شده نداره تغییر دادی . میشه یه توضیحی بدی که می خواستی چیکار کنی ؟

lord_1033
سه شنبه 29 آذر 1390, 12:00 عصر
کلن من میخوام اطلاعات دیتابیسم رو ویرایش کنم خب واسه همین می خوام کاربر مثلا نام و فامیلش رو تو یه صفحه وارد کنه اطلاعاتشو نشون بده و بتونه اونارو ویرایش کنه

mtchabok
سه شنبه 29 آذر 1390, 12:06 عصر
این صفحه 3.php که ویرایش شد :

<?php
session_start();

$link = mysql_connect();
mysql_select_db('test',$link);
$name = mysql_real_escape_string($_POST['Name'],$link);
$family = mysql_real_escape_string($_POST['family'],$link);
$father = mysql_real_escape_string($_POST['father'],$link);
$number = mysql_real_escape_string($_POST['number'],$link);

$result=mysql_query( "INSERT INTO `iman` ( `name` , `family` , `father` , `number` )
VALUES (
'$name', '$family', '$father', '$number')");
if($result==1)
$_SESSION["R"]="مشخصات شما ثبت شد";
else
$_SESSION["R"]="مشخصات شما ثبت نشد";
header("location: ./2.php");
?>

mtchabok
سه شنبه 29 آذر 1390, 12:10 عصر
اینم همون صفحه سوم که اسم صفحه رو نمی دونم : (البته نیازی هم نیس )


<body>
<form action="7.php" method="post">
name
<input type="text" name="name" value="" />
family
<input type="text" name="family" value="" />
<input type="submit" value="send" />
</form>
</body>
</html>

در این صفحه متغیر $row رو تعریف نکرده بودی و می خواستی اطلاعاتش رو در فرمت قرار بدی .

hamed-php
سه شنبه 29 آذر 1390, 12:15 عصر
الان تغیر دادم این ارور رو داد:

Parse error: syntax error, unexpected T_VARIABLE in C:\AppServ\www\iman\7.php on line 47

ایراد در فایل 7 هست . در ارسال دیتا از فرم که مشکلی نیست

mtchabok
سه شنبه 29 آذر 1390, 12:19 عصر
آره مشکلی نبود ولی دارم یکی یکی میرم جلو تا مشکل رو کامل حل کنیم و هم اینکه چند چیز دیگه رو بهشون اضافه کنم .
مثلا در همون صفحه سوم میتونی عمل ویرایش رو انجام بدی که دارم کدش رو مینویسم .
که در فایل 7.php فقط عمل ثبت تغییرات انجام بشه .

mtchabok
سه شنبه 29 آذر 1390, 12:59 عصر
خب تموم شد :
اسم این فایل رو من 6.php گذاشتم که خودت گفته بودی که صفحه سوم هس .

<?php
$doEdit = 0;
$name = '';
$family = '';
$data=array();
$link = mysql_connect();
mysql_select_db('test',$link);
if(isset($_GET['name'],$_GET['family'])){
$name = trim($_GET['name']);
$family = trim($_GET['family']);
$result = mysql_query('select * from `iman` where `name`="'.
mysql_real_escape_string($name, $link).'" and `family`="'.
mysql_real_escape_string($family, $link).'" limit 1', $link);
if(mysql_num_rows($result)>==1){
$doEdit = 1;
$data = (array) $result;
}else $doEdit = -1;
}
?>
<body>
<form action="" method="get">
name
<input type="text" name="name" value="<?php echo $name; ?>" />
family
<input type="text" name="family" value="<?php echo $family; ?>" />
<input type="submit" value="send" />
</form>
<?php if($doEdit===1){ ?>
<form action="7.php" method="post">
<input type="hidden" name="name" value="<?php echo $data['name']; ?>" />
<input type="hidden" name="family" value="<?php echo $data['family']; ?>" />
name
<input type="text" name="nameEdit" value="<?php echo $data['name']; ?>" />
family
<input type="text" name="familyEdit" value="<?php echo $data['family']; ?>" />
father
<input type="text" name="fatherEdit" value="<?php echo $data['father']; ?>" />
number
<input type="text" name="numberEdit" value="<?php echo $data['number']; ?>" />
<input type="submit" value="send" />
</form>
<?php }elseif($doEdit===-1){ ?>
چنین نام و فامیلی وجود ندارد
<?php } ?>
</body>
</html>


صفحه 7.php :

<?php
$name = empty($_POST['name'])?'':trim($_POST['name']);
$family = empty($_POST['name'])?'':trim($_POST['name']);
if(!$name || !$family) header("Location: ./6.php?name=$name&family=$family");
$link = mysql_connect();
mysql_select_db('test',$link);
$result = mysql_query('select * from `iman` where `name`="'.
mysql_real_escape_string($name, $link).'" and `family`="'.
mysql_real_escape_string($family, $link).'" limit 1', $link);

if(mysql_num_rows($result)!==1) header("Location: ./6.php?name=$name&family=$family");

$data = array(
'name' => empty($_POST['nameEdit'])?$name:trim($_POST['nameEdit']),
'family' => empty($_POST['familyEdit'])?$family:trim($_POST['familyEdit']),
'father' => empty($_POST['fatherEdit'])?'':trim($_POST['fatherEdit']),
'number' => empty($_POST['numberEdit'])?'':trim($_POST['numberEdit'])
);
mysql_query('update `iman` set'.
' `name`="'.mysql_real_escape_string($data['name'],$link).'"'.
' `family`="'.mysql_real_escape_string($data['family'],$link).'"'.
' `father`="'.mysql_real_escape_string($data['father'],$link).'"'.
' `number`="'.mysql_real_escape_string($data['number'],$link).'"'.
,$link);
header("Location: ./6.php?name=".$data['name']."&family=".$data['family']);
?>

اگه خطایی داد خطا رو بنویس تا حلش کنیم .