PDA

View Full Version : مشکل ارتباط ناقص php با mysql



khnjli
جمعه 04 مرداد 1398, 21:56 عصر
سلام دوستان عزیز
کیهان هستم

من 3 تا صفحه درست کردم که در دوصفحه اول از کاربر اطلاعات دریافت میکنه(صفحه اول select - صفحه دوم update) و در صفحه سوم نشون میده
برای بار اول که دیتا بیس خالی هست تمام اطلاعاتو درست میگیره
بار دوم فقط اطلاعات صفحه اول و بار سوم کلا اطلاعات رو در بانک ذخیره نمیکنه
ممنون میشم مثل همیشه لطف کنید و راهنمایی بفرمایید
صفحه اول


<form action="std2.php"; method="post"; onSubmit="return check()";> <div id="form1"> <div > <span id="onvan" >شماره دانش آموزی :<b id="onvan" style="color:red;">*</b></span><input style="direction:rtl;" type="text" name="std-id1"></div> <div class="container" style="width: 400px !important;float: left !important;margin-top: -37px;"> <div class="row"> <div class="col-sm-6"> <div class="input-group"> <div class="input-group-prepend"> <span class="input-group-text cursor-pointer" id="date4" style="cursor: pointer;width: 100px; height: 25px !important;">تاریخ تولد :</span> </div> <input type="text" id="inputDate4" class="form-control" placeholder="From Date" aria-label="date4" aria-describedby="date4" name="std-tt" style="width:150px !important; height:21px !important;"> </div> </div></div></div> <br> <div style="float: right !important;"> <span id="onvan" >نام :<b id="onvan" style="color:red;">*</b></span><input style="direction:rtl;" type="text" name="std-name"></div><br> <div style="float: right !important;"> <span id="onvan" >نام خانوادگی :<b id="onvan" style="color:red;">*</b></span><input style="direction:rtl;" type="text" name="std-lname"></div><br> <div style="float: right !important;"> <span id="onvan" >نام پدر :<b id="onvan" style="color:red;">*</b></span><input style="direction:rtl;" type="text" name="std-fname"></div><br> <div style="float: right !important;"> <span id="onvan" >شماره ملی :<b id="onvan" style="color:red;">*</b></span><input style="direction:rtl;" type="text" name="std-id2"></div><br> <div style="width: 400px; height: 80px;margin: 0 auto;margin-top: 55px;"> <a style="margin-left: 20px;"><img src="icons8-forward-button-802.png"></a> <input type="submit" value=" " style="margin-left: 20px; cursor: pointer; border: hidden; width: 80px; height: 80px; background : url(icons8-forward-button-80.png);"> <a style="margin-left: 20px;"><img src="icons8-forward-button-801.png"></a> </div> </div> </form>

صفحه دوم


<?php$name=$_POST['std-name'];$lname=$_POST['std-lname'];$fname=$_POST['std-fname'];$stdid1=$_POST['std-id1'];$stdid2=$_POST['std-id2'];$stdtt=$_POST['std-tt'];
$db=new PDO("mysql:host=localhost;dbname=fazilat","root",""); $db->exec( "SET CHARACTER SET utf8" );


$sql="INSERT INTO student (`STD-ID`, `NAME`, `L-NAME`, `F-NAME`, `T.T.`, `ID`) VALUES (?,?,?,?,?,?)";$stmt=$db->prepare($sql);$stmt->execute(array($stdid1, $name , $lname , $fname , $stdtt , $stdid2));?><form action="std3.php"; enctype="multipart/form-data"; method="post"; onSubmit="return check()";> <div id="etelaat"> <div> <span id="onvan" >مدرسه سال گذشته :<b id="onvan" style="color:red;">*</b></span><input style="direction:rtl;" type="text" name="std-pschool"></div> <div> <span id="onvan" >معدل سال گذشته :<b id="onvan" style="color:red;">*</b></span><input style="direction:rtl;" type="text" name="std-pavg"></div> <div> <span id="onvan" >فعالیتهای فوق برنامه :</span><input style="direction:rtl;" type="text" name="std-ex"></div> <div> <span id="onvan" >شماره کلاس :<b id="onvan" style="color:red;">*</b></span><input style="direction:rtl;" type="text" name="std-classid"></div> <div> <span id="onvan" >نام و نام خانوادگی مادر :<b id="onvan" style="color:red;">*</b></span><input style="direction:rtl;" type="text" name="std-mname"></div> <div> <span id="onvan" >تلفن تماس :<b id="onvan" style="color:red;">*</b></span><input style="direction:rtl;" type="text" name="std-phone"></div> <div> <span id="onvan" >تلفن تماس پدر :</span><input style="direction:rtl;" type="text" name="std-fphone"></div> <div> <span id="onvan" >تلفن تماس مادر :</b></span><input style="direction:rtl;" type="text" name="std-mphone"></div> <div> <span id="onvan" >تصویر :</span><input type="file" id="std-img" name="std-img" style="direction:rtl;float: right;" > </div>
صفحه سوم


<?php $stdpschool=$_POST['std-pschool']; $stdpavg=$_POST['std-pavg']; $stdphone=$_POST['std-phone']; $stdmname=$_POST['std-mname']; $stdclassid=$_POST['std-classid']; $stdex=$_POST['std-ex']; $stdfphone=$_POST['std-fphone']; $stdmphone=$_POST['std-mphone']; $stdid1=$_POST['stdid']; $filename=$_FILES["std-img"]["name"]; $filename_array = explode('.', $filename); $tmp=end($filename_array); $stdimg = $stdid1 . '.' . $tmp; move_uploaded_file($_FILES["std-img"]["tmp_name"],"upload/" . $stdimg); $img="upload/" . $stdimg; $db=new PDO("mysql:host=localhost;dbname=fazilat","root",""); $db->exec( "SET CHARACTER SET utf8" );


$sql="UPDATE `student` SET `PRE-SCHOOL`=? ,`PRE-AVG`=? ,`EX-ACTIVITIES`=? ,`CLASS-ID`=? ,`M-NAME`=? ,`IMG`=? ,`PHONE`=? ,`FATHER-PHONE`=? ,`MOTHER-PHONE`=? WHERE `STD-ID`='$stdid1'"; $stmt=$db->prepare($sql); $stmt->execute(array($stdpschool , $stdpavg , $stdex , $stdclassid , $stdmname , $img , $stdphone , $stdfphone , $stdmphone)); ?>

ali_sed
یک شنبه 06 مرداد 1398, 17:42 عصر
سلام

یه شرط بزارید تا متوجه خطای موجود در کوئری خود شوید:



$result = $stmt->execute(...

if ( false===$result ) {
die('execute() failed: ' . htmlspecialchars($stmt->error));
}


مواردی که مشهود است اینه که شما در صفحه سوم در دستور آپدیت شرطی گذاشتید که مقدار مربوطه bind نشده است به دستور execute و تعداد عناصر آرایه دقت کنید. از طرفی این مقدار که برابر با $_POST['stdid'] می باشد در فرم صفحه دوم قرار ندارد در نتیجه مقدار آن خالی است.

ساختار جدول هم قرار دهید کل دستور create table ...

khnjli
یک شنبه 13 مرداد 1398, 17:37 عصر
سلام مجدد دوستان
سه صفحه رو در دو صفحه خلاصه کردم و از کدی که علی آقا لطف کردند استفاده کردم
ولی متاسفانه باز هم فقط و فقط یک مرتبه اونهم وقتی جدول خالی باشه
کدهای اصلاحی رو میزارم ممنون میشم کمکم کنید


<?php $name=$_POST['std-name'];
$lname=$_POST['std-lname'];
$fname=$_POST['std-fname'];
$stdid1=$_POST['std-id1'];
$stdid2=$_POST['std-id2'];
$stdtt=$_POST['std-tt'];
$stdpschool=$_POST['std-pschool'];
$stdpavg=$_POST['std-pavg'];
$stdphone=$_POST['std-phone'];
$stdmname=$_POST['std-mname'];
$stdclassid=$_POST['std-classid'];
$stdex=$_POST['std-ex'];
$stdfphone=$_POST['std-fphone'];
$stdmphone=$_POST['std-mphone'];
$filename=$_FILES["std-img"]["name"];
$filename_array = explode('.', $filename);$tmp=end($filename_array);
$stdimg = $stdid1 . '.' . $tmp;move_uploaded_file($_FILES["std-img"]["tmp_name"],"upload/" . $stdimg);
$img="upload/" . $stdimg;
$db=new PDO("mysql:host=localhost;dbname=fazilat","root","");
$db->exec( "SET CHARACTER SET utf8" );
$select="SELECT * FROM student WHERE `STD-ID`='$stdid1'";$stmt1=$db->prepare($select);$stmt1->execute();$num1=$stmt1->rowCount();
if($num1>0){echo 'دانش آموز با این شماره دانش آموزی قبلا ثبت شده است';} else{ $sql="INSERT INTO student (`STD-ID`, `NAME`, `L-NAME`, `F-NAME`, `T.T.`, `ID` , `PRE-SCHOOL` , `PRE-AVG` ,`EX-ACTIVITIES` ,`CLASS-ID` ,`M-NAME` ,`IMG` ,`PHONE` ,`FATHER-PHONE` ,`MOTHER-PHONE`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
$stmt=$db->prepare($sql);

$result = $stmt->execute(array($stdid1, $name , $lname , $fname , $stdtt , $stdid2 , $stdpschool , $stdpavg , $stdex , $stdclassid , $stdmname , $img , $stdphone , $stdfphone , $stdmphone));

if ( false===$result ) { die('execute() failed: ' . htmlspecialchars($stmt->error));
print $result->errorCode(); } }?>
توضیح : درصفحه اول تو تگ فرم مقادیر رو میگیره و به این صفحه ارسال میکنه
بعد در این صفحه خطای زیر رو برای خط
die('execute() failed: ' . htmlspecialchars($stmt->error));
میده و هیچ چیز در جدول ثبت نمیکنه

ali_sed
دوشنبه 14 مرداد 1398, 16:08 عصر
سلام لطفا خطای دریافتی هم درج کنید.

ساختار جدول student هم قرار دهید. آیا جدول دارای کلید پرایمری می باشد؟ ایا فیلد از نوع auto increment است؟

در ضمن متغیر $result دارای متد errorCode نمی باشد بلکه مربوط به $stmt می باشد. در ضمن بعد از دستور die برنامه پایان می یابند و دستور بعد از آن اجرا نمی شود می توانید دستورات خود را بصورت زیر تغییر دهید:


if ( false===$result ) {
print_r($db->errorInfo());
exit();
}