PDA

View Full Version : سوال: مشکل در ذخیره کردن اطلاعات بر روی پایگاه داده(کمک)



mojtaba.sln
سه شنبه 16 تیر 1394, 15:57 عصر
سلام و خسته نباشید...
من با کد زیر یه فرم ساختم که می خوام اطلاعات ارسالی توسط کاربر رو روی پایگاه داده mysql ذخیره کنم...

[LTR_INLINE][HTML]



<html>
<body>
<?php
$dbname="mojidb";
$conn=mysqli_connect("localhost","mojtaba","546453156312",$dbname);
$name=$email=$cm=$gen="";
$nameer=$emailer=$cmer=$gener="";

//tabe'e filter:
function filter($data)
{
$data=trim($data);
$data=stripslashes($data);
$data=htmlspecialchars($data);
return $data;
}

//barresiye ersal:
if($_SERVER['REQUEST_METHOD']=="POST")
{
//barresi in ke khali nabashe name :
if(!empty($_POST['name']))
{
$name=filter($_POST["name"]);
if(!preg_match("/^[a-zA-Z ]*$/",$name)) $nameer= "Only letters and whitespaces allowed !";
else
{
/*$query="INSERT INTO comment (name) VALUES ('$name') ";
mysqli_query($conn,$query); */
}
}
else $nameer="Name is required!";

//barresi khali naboodane email va paksaziye email:
if(!empty($_POST["email"]))
{
$email=filter($_POST["email"]);
if(!filter_var($email,FILTER_VALIDATE_EMAIL)) $emailer="This is invalid E-mail";
else
{
/*$query="INSERT INTO comment (email) VALUES('$email')";
mysqli_query($conn,$query);*/
}
}
else $emailer="E-mail is required!";

//barresiye comment:
if(!empty($_POST["cm"]))
{
$cm=filter($_POST["cm"]);
/*$query="INSERT INTO comment (cm) VALUES('$cm')";
mysqli_query($conn,$query);*/
}
else $cm="";

//barresiye gender:
if(!empty($_POST["gen"]))
{
$gen=filter($_POST["gen"]);
/*$query="INSERT INTO comment (gen) VALUES ('$gen')";
mysqli_query($conn,$query);*/
}
else $gener="Gender is required!";
if(empty($_POST['name']) || empty($_POST['email']) || empty($_POST['gen']) ) mysqli_close($conn);
else
{

$query="INSERT INTO comment (name) VALUES ('$name');";
$query .= "INSERT INTO comment (email) VALUES('$email') ;";
$query .= "INSERT INTO comment (cm) VALUES('$cm') ;";
$query .="INSERT INTO comment (gen) VALUES ('$gen') ;";
mysqli_multi_query($conn,$query);

}
}

?>


<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
Name:<input type="text" name="name" value="<?php echo $name;?>"><?php echo $nameer;?><br>
E-mail:<input type="text" name="email" value="<?php echo $email; ?>"><?php echo $emailer ;?><br>
Comment:<textarea row="5" col="40" name="cm"></textarea><br>
Gender:<input type="radio" name="gen" <?php if(isset($gen) &&$gen=="female") echo "checked";?>value="female">Female
<input type="radio" name="gen" <?php if(isset($gen) && $gen=="male") echo "checked";?> value="male">Male
<br><?php echo $gener ;?><br>
<input type="submit" value="send!"></form>

</body>
</html>


</html>




اما یه مشکلی پیش میاد اونم این که وقتی ذخیره می شه هر کدوم از مقادیری که کاربر وارد کرده توی یه سطر جدید ذخیره می شه...
مثل شکل زیر
132991

اگه می شه راهنماییم کنید چیکار کنم که همشو در یه سطرِ جدول ذخیره کنه...ممنون

H:Shojaei
سه شنبه 16 تیر 1394, 16:15 عصر
باید توی بخش php مطرح میکردین...
بخش کوئری رو به این صورت تغییر بدین:


$query="INSERT INTO comment (name,email,cm,gen) VALUES ('$name','$email'.'$cm','$gen');";
mysqli_query($conn,$query);

mojtaba.sln
سه شنبه 16 تیر 1394, 21:07 عصر
باید توی بخش php مطرح میکردین...
بخش کوئری رو به این صورت تغییر بدین:


$query="INSERT INTO comment (name,email,cm,gen) VALUES ('$name','$email'.'$cm','$gen');";
mysqli_query($conn,$query);



سلام...ممنون از کمکتون...مشکل ذخیره برطرف شد اما یه میشکل دیگه پیش اومد اونم این که چون اجرای کوئری ها رو خارج از شرط ها گذاشتم...
فیلتر هایی که برای فیلد ها گذاشتم دیگه کار نمی کنه...
من در کدی که نوشتم برای فیلد name کاراکتر هایی مثل ^و _ رو فیلتر کردم اما چون اجرای کوئری زیر این شرط نیومده فیلتر کار نمی کنه و در نتیجه هر داده ای کاربر بفرسته ذخیره می شه...مثل شکل زیر:
133000

همونطور که می بینید کاراکتر های ^__^ بعد از اسم اومده و ذخیره شده!
برای این مشکل چیکار کنم؟
ممنون از کمکتون

H:Shojaei
سه شنبه 16 تیر 1394, 22:23 عصر
با str_replace کاراکتر هایی رو که میخواید از نام حذف کنید قبل از کوئری تا مشکلی نداشته باشه...