PDA

View Full Version : ثبت نشدن اطلاعات در دیتابایس



speeed
جمعه 28 بهمن 1390, 11:38 صبح
سلام
ببخشید دوستان من نمیدونم این کدم درسته چرا اطلاعات رو ثبت نمیکنه :ناراحت:

<?php
include('../config.php');
mysql_connect($hostname,$user,$password) or die(mysql_error());
mysql_select_db($dbname) or die(mysql_error());
$name = $_POST['name'];
$famliy = $_POST['family'];
$code = $_POST['code'];
$father = $_POST['fathername'];
$codemeli = $_POST['codemeli'];
$databirt = $_POST['databirt'];
$birt = $_POST['birt'];
$salso = $_POST['salso'];
$mahal = $_POST['mahal'];
$tell = $_POST['tell'];
$mob = $_POST['mob'];
$email = $_POST['email'];
$adres = $_POST['adres'];
$codeposti= $_POST['codeposti'];
$result = mysql_query("INSERT INTO `haghighi` (`name`,`family`,`code`,`fathername`,`databrit`,`c odemeli` ,`placebrit`,`salso`,`mahal`,`tell`,`mob`,`email`, `addres`,`codeposti`)
VALUES ('$name','$famliy','$code','$father','$databirt',' $codemeli','$birt','$salso','$mahal,$tell,$mob,$em ail,$adres,$codeposti')");
if($result){
//HEADER('location:haghi.php');
echo "Not sendedddddd ...<br>".mysql_error();
}
else{
echo "Not sended ...<br>".mysql_error();
}
?>

masoud_tamizy
جمعه 28 بهمن 1390, 14:58 عصر
خوب چه خطایی می ده ؟ یا واضح تر بگم چه خروجی ای داری ؟
اول همون کوئری که نوشتی تو پایگاه داده مقدار بذار تستش کن ببین جواب می ده ؟!

MMSHFE
جمعه 28 بهمن 1390, 15:34 عصر
تا جایی که از کدها مشخصه، هم اشتباه تایپی در اسامی فیلدها و پارامترها دارین و هم اینکه توی کوئری، در قسمت VALUES چندتا از مقادیر رو با هم توی یک کوتیشن گذاشتین که باعث میشه یک مقدار درنظر گرفته بشن. کد زیر رو برای نمونه ببینید:


include('../config.php');
mysql_connect($hostname, $user, $password) or die('Connection error');
mysql_select_db($dbname) or die('Database error');
mysql_query('SET NAMES \'utf8\'');
$name = isset($_POST['name']) ? mysql_real_escape_string($_POST['name']) : '';
$family = isset($_POST['family']) ? mysql_real_escape_string($_POST['family']) : '';
$code = isset($_POST['code']) ? mysql_real_escape_string($_POST['code']) : '';
$fathername = isset($_POST['fathername']) ? mysql_real_escape_string($_POST['fathername']) : '';
$codemeli = isset($_POST['codemeli']) ? mysql_real_escape_string($_POST['codemeli']) : '';
$datebirt = isset($_POST['datebirt']) ? mysql_real_escape_string($_POST['datebirt']) : '';
$placebirt = isset($_POST['placebirt']) ? mysql_real_escape_string($_POST['placebirt']) : '';
$salso = isset($_POST['salso']) ? mysql_real_escape_string($_POST['salso']) : '';
$mahal = isset($_POST['mahal']) ? mysql_real_escape_string($_POST['mahal']) : '';
$tell = isset($_POST['tell']) ? mysql_real_escape_string($_POST['tell']) : '';
$mob = isset($_POST['mob']) ? mysql_real_escape_string($_POST['mob']) : '';
$email = isset($_POST['email']) ? mysql_real_escape_string($_POST['email']) : '';
$adres = isset($_POST['adres']) ? mysql_real_escape_string($_POST['adres']) : '';
$codeposti = isset($_POST['codeposti']) ? mysql_real_escape_string($_POST['codeposti']) : '';
mysql_query(<<<EOT
INSERT INTO `haghighi`
(`name`,`family`,`code`,`fathername`,`datebirt`,`c odemeli`,`placebirt`,`salso`,`mahal`,`tell`,`mob`, `email`,`addres`,`codeposti`)
VALUES ('$name','$family','$code','$father','$datebirt',' $codemeli','$placebirt','$salso','$mahal','$tell', '$mob','$email','$adres','$codeposti');
EOT;
if(mysql_affected_rows() > 0) {
header('location: haghi.php');
exit();
}
else {
echo '<p>Not sent...</p>'.mysql_error();
}

البته توی کد بالا یکم کنترلهای امنیتی رو هم درنظر گرفتم. موفق باشید.

mahmod2000
جمعه 28 بهمن 1390, 16:18 عصر
سلام خدمت استاد عزیز

ببخشید یک سوال داشتم

میشه بگید این کد :

$mahal = isset($_POST['mahal']) ? mysql_real_escape_string($_POST['mahal']) : '';

چه کاری انجام میده؟

یعنی علامت ؟ وسطش چیه؟ چه کاری انجام میده؟

Reza1607
جمعه 28 بهمن 1390, 16:24 عصر
دستور شرطي يك خطي هست به اين صورت
cond?ture:false;

speeed
جمعه 28 بهمن 1390, 17:23 عصر
بازم ثبت نمیکنه
خیلی عجیبه واسه من

Reza1607
جمعه 28 بهمن 1390, 17:31 عصر
بعد از دستور mysql_query اين دستور mysql_error رو بزار ببين چيزي چاپ مي كنه يا نه

speeed
جمعه 28 بهمن 1390, 18:05 عصر
همین عجیبه هیچ اروری نمیده ولی بازم ثبت نمیشه

mahmod2000
جمعه 28 بهمن 1390, 18:05 عصر
فکر میکنم از اینجا باشه مشکل

(`name`,`family`,`code`,`fathername`,`datebirt`,`c odemeli`,`placebirt`,`salso`,`mahal`,`tell`,`mob`, `email`,`addres`,`codeposti`) VALUES ('$name','$family','$code','$father','$datebirt',' $codemeli','$placebirt','$salso','$mahal','$tell', '$mob','$email','$adres','$codeposti');EOT;
</div>
یعنی این کلمه : c odemeli از هم فاصله داره

نباید اینجوری باشه

بعد اینکه query رو تو phpmyadmin توی table مورد نظر خودتون از طریق sql بزنید اونجا error رو میزنه از چیه

speeed
جمعه 28 بهمن 1390, 18:10 عصر
چرا رو line 24 ارور داد فکر کنم بازم پرانتز بسته نشده
واقعا زبان دقیقی هست ایول:قلب:

speeed
جمعه 28 بهمن 1390, 20:31 عصر
به به ارورها روز به روز بیشتر میشود :قلب:

Not sent...
Unknown column 'datebirt' in 'field list'

buggen
جمعه 28 بهمن 1390, 22:21 عصر
مشکل باید از اسم column باشه "datebirt" که احتمالا "datebirth" بوده کد و دیتابیس رو چک کنید

MMSHFE
جمعه 28 بهمن 1390, 23:15 عصر
اسم فیلدهای دیتابیستون رو اگه میشه دقیق (بدون غلط املایی و فاصله و...) اینجا بگذارین تا دستور مربوطه رو بنویسیم. همچنین اگه میشه کد فرمتون رو هم بگذارین.
موفق باشید.

speeed
جمعه 28 بهمن 1390, 23:38 عصر
این اسم جداولش

mysql_query("CREATE TABLE haghighi(
`name` varchar(32) NOT NULL default '',
`family` varchar(32) NOT NULL default '',
`code` varchar(32) NOT NULL default '',
`tell` varchar(32) NOT NULL default '',
`mob` varchar(32) NOT NULL default '',
`email` varchar(32) NOT NULL default '',
`addres` varchar(32) NOT NULL default '',
`codeposti` varchar(32) NOT NULL default '',
`fathername` varchar(32) NOT NULL default '',
`codemeli` varchar(32) NOT NULL default '',
`databrit` varchar(32) NOT NULL default '',
`placebrit` varchar(32) NOT NULL default '',
`salso` varchar(32) NOT NULL default '',
`mahal` varchar(32) NOT NULL default '',
PRIMARY KEY (`codemeli`))");

این کد اکشن:

<?php
include('../../config.php');
mysql_connect($hostname, $user, $password) or die('Connection error');
mysql_select_db($dbname) or die('Database error');
mysql_query('SET NAMES \'utf8\'');
$name = isset($_POST['name']) ? mysql_real_escape_string($_POST['name']) : '';
$family = isset($_POST['family']) ? mysql_real_escape_string($_POST['family']) : '';
$code = isset($_POST['code']) ? mysql_real_escape_string($_POST['code']) : '';
$fathername = isset($_POST['fathername']) ? mysql_real_escape_string($_POST['fathername']) : '';
$codemeli = isset($_POST['codemeli']) ? mysql_real_escape_string($_POST['codemeli']) : '';
$datebirt = isset($_POST['datebirt']) ? mysql_real_escape_string($_POST['datebirt']) : '';
$placebirt = isset($_POST['placebirt']) ? mysql_real_escape_string($_POST['placebirt']) : '';
$salso = isset($_POST['salso']) ? mysql_real_escape_string($_POST['salso']) : '';
$mahal = isset($_POST['mahal']) ? mysql_real_escape_string($_POST['mahal']) : '';
$tell = isset($_POST['tell']) ? mysql_real_escape_string($_POST['tell']) : '';
$mob = isset($_POST['mob']) ? mysql_real_escape_string($_POST['mob']) : '';
$email = isset($_POST['email']) ? mysql_real_escape_string($_POST['email']) : '';
$adres = isset($_POST['adres']) ? mysql_real_escape_string($_POST['adres']) : '';
$codeposti = isset($_POST['codeposti']) ? mysql_real_escape_string($_POST['codeposti']) : '';
mysql_query("INSERT INTO `haghighi`
(`name`,`family`,`code`,`fathername`,`datebirt`,`c odemeli`,`placebirt`,`salso`,`mahal`,`tell`,`mob`, `email`,`addres`,`codeposti`)
VALUES ('$name','$family','$code','$fathername','$datebir t','$codemeli','$placebirt','$salso','$mahal','$te ll','$mob','$email','$adres','$codeposti')
");
if(mysql_affected_rows() > 0) {
header('location: haghi.php');
exit();
}
else {
echo '<p>Not sent...</p>'.mysql_error();
}


?>

و اینم فرم:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>مدیریت مشتری حقیقی</title>
</head>
<style>
#header{
background-image:url(../images/haghighi.png);
width:500px;
height:119px;
margin:auto;
}
</style>
<body>
<div id="header"></div>
<form action="ac-haghi.php" method="post">
<fieldset>
<table cellPadding="10" width="28%" border="0" align="center" >
<tr>
<td vAlign="top" width="5%" align="right">
<input name="name" type="text" />
<td>نام</td>
</tr>
<tr>
<td vAlign="top" width="5%" align="right">
<input name="family" type="text" />
<td>نام خانوادگی</td>
</tr>
<tr>
<td vAlign="top" width="5%" align="right">
<input name="code" type="text" />
<td>شماره شناسنامه</td>
</tr>
<tr>
<td vAlign="top" width="5%" align="right">
<input name="fathername" type="text" />
<td>نام پدر</td>
</tr>
<tr>
<td vAlign="top" width="5%" align="right">
<input name="codemeli" type="text" />
<td>کد ملی</td>
</tr>
<tr>
<td vAlign="top" width="5%" align="right">
<input name="databirt" type="text" />
<td>تاریخ تولد</td>
</tr>
<tr>
<td vAlign="top" width="5%" align="right">
<input name="birt" type="text" />
<td>محل تولد</td>
</tr>
<tr>
<td vAlign="top" width="5%" align="right">
<input name="salso" type="text" />
<td>سال صدور</td>
</tr>
<tr>
<td vAlign="top" width="5%" align="right">
<input name="mahal" type="text" />
<td>محل صدور</td>
</tr>
</tr>
<tr>
<td vAlign="top" width="5%" align="right">
<input name="tell" type="text" />
<td>تلفن ثابت</td>
</tr>
</tr>
<tr>
<td vAlign="top" width="5%" align="right">
<input name="mob" type="text" />
<td>تلفن همراه</td>
</tr>
</tr>
<tr>
<td vAlign="top" width="5%" align="right">
<input name="email" type="text" />
<td>ایمیل</td>
</tr>
</tr>
<tr>
<td vAlign="top" width="5%" align="right">
<input name="adres" type="text" />
<td>نشانی</td>
</tr>
</tr>
<tr>
<td vAlign="top" width="5%" align="right">
<input name="codeposti" type="text" />
<td>کد پستی</td>
</tr>
</table>
<input name="action" type="submit" value="افزودن" />

</fieldset>
</form>
</div>

speeed
شنبه 29 بهمن 1390, 08:16 صبح
مشکل حل شد داداش ممنون

MMSHFE
شنبه 29 بهمن 1390, 08:21 صبح
شرمنده یک مقدار توی ساختار دیتابیس هم دست بردم چون حقیقتش از اینکه اسامی نادرست و یا با اشتباهات املایی باشه، عصبی میشم.
ساختار دیتابیس رو اینطوری بگذارین:

CREATE TABLE haghighi(
`name` varchar(32) NOT NULL default '',
`family` varchar(32) NOT NULL default '',
`idno` varchar(32) NOT NULL default '',
`phone` varchar(32) NOT NULL default '',
`mobile` varchar(32) NOT NULL default '',
`email` varchar(32) NOT NULL default '',
`address` varchar(32) NOT NULL default '',
`postcode` varchar(32) NOT NULL default '',
`fathername` varchar(32) NOT NULL default '',
`nationalcode` varchar(32) NOT NULL default '',
`birthdate` varchar(32) NOT NULL default '',
`birthplace` varchar(32) NOT NULL default '',
`issueyear` varchar(32) NOT NULL default '',
`issueplace` varchar(32) NOT NULL default '',
PRIMARY KEY (`nationalcode`));

کد فرم:


<!doctype html>
<html dir="rtl">
<head>
<title>مديريت مشتري حقيقي</title>
<meta charset="utf-8"/>
<style type="text/css">
* {
font-family: Tahoma;
font-size: small;
}
#header {
background-image: url(../images/haghighi.png);
height: 119px;
margin: auto;
width: 500px;
}
</style>
</head>
<body>
<div id="header"></div>
<form action="ac-haghi.php" method="post">
<fieldset>
<table align="center" border="0px" cellpadding="10px" width="28%">
<?php
$fields = array(
'name' => 'نام',
'family' => 'نام خانوادگي',
'idno' => 'شماره شناسنامه',
'fathername' => 'نام پدر',
'nationalcode' => 'کد ملي',
'birthdate' => 'تاريخ تولد',
'birthplace' => 'محل تولد',
'issueyear' => 'سال صدور',
'issueplace' => 'محل صدور',
'phone' => 'تلفن ثابت',
'mobile' => 'تلفن همراه',
'email' => 'پست الکترونيک',
'address' => 'نشاني',
'postcode' => 'کد پستي'
);
foreach($fields as $key => $value) {
echo '<tr align="right" valign="top">';
echo '<td width="40%">';
echo '<label for="'.$key.'">'.$value.'</label>';
echo '</td>';
echo '<td width="60%">';
echo '<input id="'.$key.'" name="'.$key.'" style="width: 100%;" type="text"/>';
echo '</td>';
echo '</tr>'.PHP_EOL;
}
?>
<tr align="center" valign="middle"><td colspan="2"><input type="submit" value="افزودن"/></td></tr>
</table>
</fieldset>
</form>
</body>
</html>
کد صفحه پردازش فرم:


<?php
$fields = array(
'name',
'family',
'idno',
'phone',
'mobile',
'email',
'address',
'postcode',
'fathername',
'nationalcode',
'birthdate',
'birthplace',
'issueyear',
'issueplace'
);
$flag = true;
foreach($fields as $field) {
if(!isset($_POST[$field]) || $_POST[$field] == '') {
$flag = false;
}
}
if($flag) {
require_once '../../config.php';
mysql_connect($hostname, $user, $password) or die('Connection error');
mysql_select_db($dbname) or die('Database error');
mysql_query('SET NAMES \'utf8\'');
$sql = 'INSERT INTO `haghighi` (';
foreach($fields as $field) {
$sql .= '`'.$field.'`,';
}
// Remove the last ,
$sql = substr($sql, 0, -1);
$sql .= ') VALUES (';
foreach($fields as $field) {
$$field = mysql_real_escape_string($_POST[$field]);
$sql .= '\''.$$field.'\',';
}
// Remove the last ,
$sql = substr($sql, 0, -1);
$sql .= ')';
mysql_query($sql);
echo '<p>'.(mysql_affected_rows() > 0 ? 'اطلاعات با موفقيت ثبت شد.' : 'اطلاعات ثبت نشد. <a href="javascript:history.go(-1);">سعي مجدد</a>').'</p>'.PHP_EOL;
}
else {
echo '<p>اطلاعات ناقص است. <a href="javascript:history.go(-1);">سعي مجدد</a></p>'.PHP_EOL;
}
?>

البته اگه دوست ندارین اسامی فیلدهاتون رو تغییر بدین، برحسب اسامی فیلدهای خودتون، کدهایی که گذاشتم رو اصلاح کنید. موفق باشید.