PDA

View Full Version : حرفه ای: مشکل در برقراری ارتباط با دیتا بیس در فرم ورود اطلاعات



saeedfadaoddini
سه شنبه 04 آذر 1393, 18:00 عصر
با سلام و احترام
من یک فرم ورود اطلاعات برای کارمندان دارم که اطلاعاتش در جدولی به نام karmand ذخیره میشه
بعدش من یک فرم ورود اطلاعات برای تخصص این کارمندان دارم که اطلاعاتش توی جدولی به نام grouh ذخیره میشه
من توی قسمت اول که ورود اطلاعات کارمندان هست می خوام بتونم تخصص انتخاب کنم که البته قبلش تعریف کردم

اما وقتی اینکار رو می کنم توی ذخیره اطلاعات در جدول karmand دچار مشکل میشم
لطفا راهنمایی کنید


این فرم منه که توی php نوشتم

<form method="post" action="">
<input type="hidden" name="go" value="<?php echo (isset($row_news)) ? "edit" : "add"; ?>">
<?php echo (isset($row_news)) ? '<input type="hidden" name="id" value="'.$row_news['id'].'">' : ''; ?>
<label for="username"> نام و نام خانوادگی : </label>
<input name="namek1" type="text" value="<?php echo $row_news['namek']; ?>" class="form" />
<br /><br /><br />

<label for="username"> تلفن همراه : </label>
<input name="mobailk1" type="text" value="<?php echo $row_news['mobailk']; ?>" class="form" />
<br /><br /><br />
<label for="username"> آدرس : </label>
<input name="adressk1" type="text" value="<?php echo $row_news['adressk']; ?>" class="form" />
<br /><br /><br />
<label for="username"> نوع تخصص : </label>





<?php

include "config.php";
include "pdate.php";

$Query = mysql_query ("SELECT * FROM `group` ORDER BY `id` DESC");
while ( $row_group = mysql_fetch_array($Query) ) {
?>


<input name="grouhk1" type="checkbox" value="<?php echo $row_group['grouhk']; ?>">


<?php echo $row_group['group']; ?>
<?php }

mysqli_close($Query);

?>








<br /><br /><br />
<label for="username"> مدرک تحصیلی : </label>
<input name="madrakk1" type="text" value="<?php echo $row_news['madrakk']; ?>" class="form" />
<br /><br /><br />
<label for="username"> وضعیت تاهل : </label>
<input name="vazk1" type="text" value="<?php echo $row_news['vazk']; ?>" class="form" />
<br /><br /><br />



<label for="content"> توضیحات : </label>
<br /><br /><br /><br /> <textarea name="newscontent" rows="10" cols="80" id="editor"><?php echo $row_news['content']; ?></textarea>


<input type="submit" value="ارسال " name="submit">
</form>

و این هم ارتباط با دیتابیس



<?php
if ( isset($_POST['go']) && ($_POST['go'] == "add") )
{
include "config.php";

$add = mysql_query ("INSERT INTO `karmand` VALUES ('', '".$_POST['namek1']."', '".$_POST['mobailk1']."', '".$_POST['adressk1']."', '".$_POST['grouhk1']."', '".$_POST['madrakk1']."', '".$_POST['vazk1']."', '".$_POST['group1']."', '".$_POST['newscontent']."', '".mktime()."')");
if ( $add )
{
$status = '<div class="ok">خبر جدید با موفقیت ثبت شد.</div>';
}
else { $status = '<div class="error">متاسفانه مشکلی در ثبت خبر جدید وجود دارد.</div>'; }
}
elseif ( isset($_POST['go']) && ($_POST['go'] == "edit") )
{
include "config.php";

$edit = mysql_query ("UPDATE `karmand` SET `namek` = '".$_POST['namek1']."', `mobailk` = '".$_POST['mobailk1']."', `adressk` = '".$_POST['adressk1']."', `grouhk` = '".$_POST['grouhk1']."', `madrakk` = '".$_POST['madrakk1']."', `vazk` = '".$_POST['vazk1']."', `group` = '".$_POST['group1']."', `content` = '".$_POST['newscontent']."' WHERE `id` = '".$_POST['id']."' LIMIT 1");
if ( $edit )
{
$status = '<div class="ok">تغییرات با موفقیت اعمال شدند.</div>';
}
else { $status = '<div class="error">متاسفانه مشکلی در ثبت تغییرات وجود دارد</div>'; }
}
if ( isset($_GET['edit']) && ($_GET['edit'] !== "") )
{
include "config.php";
$Query = mysql_query("SELECT * FROM `karmand` WHERE `id` = '".intval($_GET['edit'])."' LIMIT 1");
$row_news = mysql_fetch_array($Query);
}
?>

saeedfadaoddini
چهارشنبه 05 آذر 1393, 08:52 صبح
گویا کسی منظور منو نگرفته
من می خوام بعد از اینکه اطلاعات فرم مورد نظر در قسمت انتخاب چک باکس ها توسط foreach فراخوانی شد کل موارد رو بریزه داخل یه متغیر و من اونو به عنوان یک رشته به دیتابیس بدم نه آرایه آیا کسی می تونه کمکم کنه تا اینجا رو می دونم






<label for="username"> نوع تخصص : </label>


<br /><br />

<?php

include "config.php";
include "pdate.php";

$Query = mysql_query ("SELECT * FROM `group` ORDER BY `id` DESC");
while ( $row_group = mysql_fetch_array($Query) ) {
?>




<input name="grouhk1[]" type="checkbox" value="<?php echo $row_group['group']; ?>">

<?php echo $row_group['group']; ?><br />
<?php }



if(!empty($_POST['grouhk1'])) {
foreach($_POST['grouhk1'] as $check) {
echo $check ." -- ";


//در اینجا من کلیه انتخاب ها رو چاپ می کنم حالا می خوام اینا رو به عنوان یه رشته توی دیتابیس ذخیره کنم همین .
}
}






mysqli_close($Query);

?>







<br /><br /><br />

blue.web9
چهارشنبه 05 آذر 1393, 09:37 صبح
اگه درست متوجه شده باشم شما از تابع implode میتونید استفاده کنید ، که اولین پارامتر کاراکتری که میخواهید مقدارها از هم جدا بشن ( مثل - یا / یا , ) و پارامتر دوم آرایه مورد نظر وارد میکنید و نیازی به حلقه ندارید.


$string = implode( '-' , $_POST['grouhk1'] );
echo $string;
// value1-value2-value3

bagherok
چهارشنبه 05 آذر 1393, 09:38 صبح
$array = array('php', 'html', 'css');
$comma_separated = implode(",", $array);
echo $comma_separated; // php,html,css


خب وقتی اطلاعات فرم ارسال شد با implode آرایه رو به رشته تبدیل کنید.
مشکل همینه دیگه!!!

saeedfadaoddini
چهارشنبه 05 آذر 1393, 10:01 صبح
ممنونم از راهنمایتون دقیقا همینو می خواستم بدونم
اما من نمیدونم این رشته رو چه جوری توسط همین فرم به دیتابیس انتقال بدم
می دونم باید insert into استفاده کنم ولی من دارم از یک فرم این اطلاعات رو جمع آوری می کنم باید این رشته بره سر جای '".$_POST['grouhk1']."' بشینه
اگر دوباره راهنماییم کنید ممنون میشم

bagherok
چهارشنبه 05 آذر 1393, 10:11 صبح
قبل اینکه insert کنی اینو قبلش بذار.
همین.

$_POST['grouhk1']=implode( '-' , $_POST['grouhk1'] );

blue.web9
چهارشنبه 05 آذر 1393, 10:14 صبح
فقط جای string با متغیر شما عوض کردم


$_POST['grouhk1'] = implode( '-' , $_POST['grouhk1'] );
echo $_POST['grouhk1'];
// value1-value2-value3

saeedfadaoddini
چهارشنبه 05 آذر 1393, 10:18 صبح
من می خوام توسط همون فرم ارسال بشه ولی چون نام تبدیل به ارایه شده توی ارسال دچار مشکل میشه منظورم
اینه

<input name="grouhk1[]" type="checkbox" value="<?php echo $row_group['group']; ?>">


این قسمت ارتباط با دیتابیس منه که وقتی فرم ارسال میشه اطلاعات از این طریق به دیتابیس منتقل میشه

<?php
if ( isset($_POST['go']) && ($_POST['go'] == "add") )
{
include "config.php";

$add = mysql_query ("INSERT INTO `karmand` VALUES ('', '".$_POST['namek1']."', '".$_POST['mobailk1']."', '".$_POST['adressk1']."', '".$_POST['grouhk1']."', '".$_POST['madrakk1']."', '".$_POST['vazk1']."', '".$_POST['group1']."', '".$_POST['newscontent']."', '".mktime()."')");
if ( $add )
{
$status = '<div class="ok">خبر جدید با موفقیت ثبت شد.</div>';
}
else { $status = '<div class="error">متاسفانه مشکلی در ثبت خبر جدید وجود دارد.</div>'; }
}
elseif ( isset($_POST['go']) && ($_POST['go'] == "edit") )
{
include "config.php";

$edit = mysql_query ("UPDATE `karmand` SET `namek` = '".$_POST['namek1']."', `mobailk` = '".$_POST['mobailk1']."', `adressk` = '".$_POST['adressk1']."', `grouhk` = '".$_POST['grouhk1']."', `madrakk` = '".$_POST['madrakk1']."', `vazk` = '".$_POST['vazk1']."', `group` = '".$_POST['group1']."', `content` = '".$_POST['newscontent']."' WHERE `id` = '".$_POST['id']."' LIMIT 1");
if ( $edit )
{
$status = '<div class="ok">تغییرات با موفقیت اعمال شدند.</div>';
}
else { $status = '<div class="error">متاسفانه مشکلی در ثبت تغییرات وجود دارد</div>'; }
}
if ( isset($_GET['edit']) && ($_GET['edit'] !== "") )
{
include "config.php";
$Query = mysql_query("SELECT * FROM `karmand` WHERE `id` = '".intval($_GET['edit'])."' LIMIT 1");
$row_news = mysql_fetch_array($Query);
}
?>

bagherok
چهارشنبه 05 آذر 1393, 10:27 صبح
من می خوام توسط همون فرم ارسال بشه ولی چون نام تبدیل به ارایه شده توی ارسال دچار مشکل میشه منظورم
اینه.....


چه دلیلی داره که توسط همون فرم ارسال بشه!!!
میشه توضیح بدید.

saeedfadaoddini
چهارشنبه 05 آذر 1393, 10:31 صبح
آخه من یه شرط برای اون فرم تعریف کردم که برای edit ازش استفاده می کنم یعنی برای update اگر از اون خارج بشه مشکلی ایجاد نمیشه به نظر شما؟
یعنی هیچ راهی وجود نداره بشه توسط یه فرم این کار ها رو انجام داد الان مشکل فقط name در input که چون آرایه است در ارسال به دیتابیس دچار مشکل میشه نمیشه کاری کرد این input در فرم دخالتی نداشته باشه بعد از این input یکی بنویسم که type=hidden باشه بعد از اون طریق اطلاعاتی که از کاربر تو قسمت قبل گرفته رو بعد از تبدیل به یک رشته بریزه تو دیتا بیس

bagherok
چهارشنبه 05 آذر 1393, 10:42 صبح
چه شرطی؟
درهرصورت شما باید آرایه رو تبدیل به رشته کنید.

saeedfadaoddini
چهارشنبه 05 آذر 1393, 10:49 صبح
آخه الان من تا دکمه ارسال رو میزنم خطا میده اونم به خاطر اینکه این input دقیقا وسط فرم منه

saeedfadaoddini
چهارشنبه 05 آذر 1393, 10:56 صبح
هر کی تا آخر این پروژه بتونه کمکم کنه از خجالتش درمیام

blue.web9
چهارشنبه 05 آذر 1393, 13:48 عصر
شما اون کد تبدیل آرایه به رشته که با implode چند پست بالا گذاشته شده رو تو فایل ارتباط با دیتابیس بعد از 'include 'config.php بزارید مشکلتون فکر میکنم حل بشه.در ضمن شما داخل هر 3 شرط 'include 'config.php نوشتید و چون تو هر 3 حالت اجرا میشه بهتره یک بار قبل از اولین if بزارید.

saeedfadaoddini
چهارشنبه 05 آذر 1393, 18:32 عصر
این تغییراتی است که دادم


<?php
if ( isset($_POST['go']) && ($_POST['go'] == "add") )
{
include "config.php";
$_POST['grouhk1']=implode( '-' , $_POST['grouhk1'] );

$add = mysql_query ("INSERT INTO `karmand` VALUES ('', '".$_POST['namek1']."', '".$_POST['mobailk1']."', '".$_POST['adressk1']."', '".$_POST['grouhk1']."', '".$_POST['madrakk1']."', '".$_POST['vazk1']."', '".$_POST['group1']."', '".$_POST['newscontent']."', '".mktime()."')");
if ( $add )
{
$status = '<div class="ok">خبر جدید با موفقیت ثبت شد.</div>';
}
else { $status = '<div class="error">متاسفانه مشکلی در ثبت خبر جدید وجود دارد.</div>'; }
}
elseif ( isset($_POST['go']) && ($_POST['go'] == "edit") )
{
include "config.php";
$_POST['grouhk1']=implode( '-' , $_POST['grouhk1'] );

$edit = mysql_query ("UPDATE `karmand` SET `namek` = '".$_POST['namek1']."', `mobailk` = '".$_POST['mobailk1']."', `adressk` = '".$_POST['adressk1']."', `grouhk` = '".$_POST['grouhk1']."', `madrakk` = '".$_POST['madrakk1']."', `vazk` = '".$_POST['vazk1']."', `group` = '".$_POST['group1']."', `content` = '".$_POST['newscontent']."' WHERE `id` = '".$_POST['id']."' LIMIT 1");
if ( $edit )
{
$status = '<div class="ok">تغییرات با موفقیت اعمال شدند.</div>';
}
else { $status = '<div class="error">متاسفانه مشکلی در ثبت تغییرات وجود دارد</div>'; }
}
if ( isset($_GET['edit']) && ($_GET['edit'] !== "") )
{
include "config.php";
$_POST['grouhk1']=implode( '-' , $_POST['grouhk1'] );

$Query = mysql_query("SELECT * FROM `karmand` WHERE `id` = '".intval($_GET['edit'])."' LIMIT 1");
$row_news = mysql_fetch_array($Query);
}
?>



الان نکته جالب اینه که موقع insert کردن مشکل داره اما موقع update کردن مشکلی نداره

HaZeM+
چهارشنبه 05 آذر 1393, 19:29 عصر
$newVal = '';
foreach ($_POST['grouhk1'] as $grouhk)
$newVal .= $grouhk.",";
rtrim($newVal,',');

موفق باشید

HaZeM+
چهارشنبه 05 آذر 1393, 19:36 عصر
عذر می خوام استاد ولی
INSERT INTO `karmand` VALUES ('',
اینجا فیلد اول خالیه !
آیا اصلا فیلدی وجود داره ؟
آیا اگر وجود داره NULL هست ؟

saeedfadaoddini
چهارشنبه 05 آذر 1393, 19:49 عصر
بله این قسمت برای id در نظر گرفته شده و AI در نظر گرفتم

saeedfadaoddini
چهارشنبه 05 آذر 1393, 19:50 عصر
http://nabnews.ir/saeed/s1/admin

یوزر و پس هر دو admin

http://nabnews.ir/saeed/s1/admin/addnews.php

saeedfadaoddini
چهارشنبه 05 آذر 1393, 19:52 عصر
همه چی رو رواله فقط نمیدونم چرا توی قسمت اول گیر می کنه ولی توی آپدیت یا همون مدیریت کارمندان درست عمل می کنه

HaZeM+
چهارشنبه 05 آذر 1393, 19:57 عصر
خوب اصلا اینو نباید بزارید

$add = mysql_query ("INSERT INTO `karmand` VALUES ('".$_POST['namek1']."', '".$_POST['mobailk1']."', '".$_POST['adressk1']."', '".$_POST['grouhk1']."', '".$_POST['madrakk1']."', '".$_POST['vazk1']."', '".$_POST['group1']."', '".$_POST['newscontent']."', '".mktime()."')");
به این صورت

saeedfadaoddini
چهارشنبه 05 آذر 1393, 19:59 عصر
میشه توضیح بیشتری بدید به چه صورتی باید باشه ممنون میشم راهنمایی کنید

saeedfadaoddini
چهارشنبه 05 آذر 1393, 20:00 عصر
منظورتون اینه باید اینجوری باشه



< ? php
INSERT INTO table_name ( Column 1 , Column 2 , Column 3 , ... )
VALUES ( value1 , value2 , value3 ,... ) ;
? >

saeedfadaoddini
چهارشنبه 05 آذر 1393, 20:01 عصر
اینم بگم تا قبل از قرار دادن آرایه و تبدیلش به رشته همه چی درست کار می کرد از وقتی ارایه اومد وسط این جوری شد

HaZeM+
چهارشنبه 05 آذر 1393, 20:03 عصر
واسه ID که attribute auto_increment رو ست می کنید هیچ مقداری ثبت نکنید حتی مقدار خالی
خود mysql مقدار رو تعیین می کنه

<?php
if ( isset($_POST['go']) && ($_POST['go'] == "add") )
{
include "config.php";
$_POST['grouhk1']=implode( '-' , $_POST['grouhk1'] );

$add = mysql_query ("INSERT INTO `karmand` VALUES ('".$_POST['namek1']."', '".$_POST['mobailk1']."', '".$_POST['adressk1']."', '".$_POST['grouhk1']."', '".$_POST['madrakk1']."', '".$_POST['vazk1']."', '".$_POST['group1']."', '".$_POST['newscontent']."', '".mktime()."')");
if ( $add )
{
$status = '<div class="ok">خبر جدید با موفقیت ثبت شد.</div>';
}
else { $status = '<div class="error">متاسفانه مشکلی در ثبت خبر جدید وجود دارد.</div>'; }
}
elseif ( isset($_POST['go']) && ($_POST['go'] == "edit") )
{
include "config.php";
$_POST['grouhk1']=implode( '-' , $_POST['grouhk1'] );

$edit = mysql_query ("UPDATE `karmand` SET `namek` = '".$_POST['namek1']."', `mobailk` = '".$_POST['mobailk1']."', `adressk` = '".$_POST['adressk1']."', `grouhk` = '".$_POST['grouhk1']."', `madrakk` = '".$_POST['madrakk1']."', `vazk` = '".$_POST['vazk1']."', `group` = '".$_POST['group1']."', `content` = '".$_POST['newscontent']."' WHERE `id` = '".$_POST['id']."' LIMIT 1");
if ( $edit )
{
$status = '<div class="ok">تغییرات با موفقیت اعمال شدند.</div>';
}
else { $status = '<div class="error">متاسفانه مشکلی در ثبت تغییرات وجود دارد</div>'; }
}
if ( isset($_GET['edit']) && ($_GET['edit'] !== "") )
{
include "config.php";
$_POST['grouhk1']=implode( '-' , $_POST['grouhk1'] );

$Query = mysql_query("SELECT * FROM `karmand` WHERE `id` = '".intval($_GET['edit'])."' LIMIT 1");
$row_news = mysql_fetch_array($Query);
}


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

saeedfadaoddini
چهارشنبه 05 آذر 1393, 20:06 عصر
امتحان کردم دوست عزیز ولی بازم نشد

saeedfadaoddini
چهارشنبه 05 آذر 1393, 20:08 عصر
مشکلم برطرف شد من داخل جدولم یه رکورد دیگه داشتم با قرار دادن اون همه چی درست شد ممنون از بابت همدلیتون دمتون گرم


$add = mysql_query ("INSERT INTO `karmand` VALUES ('', '".$_POST['namek1']."','شسس', '".$_POST['mobailk1']."', '".$_POST['adressk1']."', '".$_POST['grouhk1']."', '".$_POST['madrakk1']."', '".$_POST['vazk1']."', '".$_POST['group1']."', '".$_POST['newscontent']."', '".mktime()."')");