我正拼命地朝着OOP方向發展,但我無法將自己的頭包裹在何時使用它。我得到的機制,但何時使用它們只是不點擊。我很好奇,如果我目前的方案已經成熟的OOP方法。PHP OOP vs Inline
我有3頁。 Details.php顯示了兩個並排的div。用戶可以在其中添加一個筆記,另一個用戶可以在其中查看存儲在MySQL中的以前的筆記。他們可以通過Details.php中的AJAX函數添加筆記並提取筆記。 javascript函數調用add_notes.php來向數據庫添加註釋,並調用load_notes.php通過Jquery .load()加載頁面上的註釋,以及當提交新註釋刷新div時。
我是一個新手,但我覺得在我的骨頭裏有一個更好的方法來組織這段代碼。我會研究一個框架,但是我對這個項目深感不安,所以尋找OOP的想法來更好地解決這個問題,或者驗證我正在以儘可能精簡的方式進行操作。所有評論都很有幫助!
DETAILS.PHP
<script type="text/javascript">
$(document).ready(function(){
//When loading page load notes/messages tables and then reload when ajax is done
$('#note_holder').load('load_notes.php?subcat=<? echo $subcat;?>');
//onclick handler send message btn
$("#notes_submit").click(function(){
$(this).closest('form').submit(function(){
return false;
});
var frm = $(this).closest('form');
var data = $(frm).serialize();
if($(frm).valid()){
$.post(
"../php/add_notes_ajax.php",
data,
function(data){
$('#note_holder').load('load_notes.php?subcat=<? echo $subcat;?>');
}
);
}
});
});
</script>
<div style="float:left; margin-left:15px;">
<form name="messages1" class="form" id="myforma" method="post" action="#" enctype="multipart/form-data">
<fieldset style="width:500px; height:400px; overflow:auto; font-size:11px;">
<legend>Click to View Previous Notes/Messages</legend>
<div style="height:350px; overflow:auto;" class="note_holder" id="note_holder">
<!--This div is being called from the ajax script to load add_notes_ajax.php-->
</div>
</fieldset>
<div style="margin-top:20px;"></div>
</form>
</div>
<div style=" float:right;">
<form name="notes" class="notes" id="notes" method="post" action="#" enctype="multipart/form-data">
<fieldset style="width:300px; height:400px;">
<legend>Enter a Note</legend>
<div style="margin-top:00px;"></div>
<div>
<textarea rows="20" cols="20" style="height:300px; width:290px;" name="notes"></textarea>
<input type="submit" name="notes_submit" id="notes_submit" value="Submit Note" class="button" />
<input type="hidden" name="subcat" value= "<?php echo $subcat; ?>" />
</div>
</fieldset>
<div style="margin-top:20px;"></div>
</form>
</div>
筆錄AJAX.PHP
<?php
include_once('../bootstrap.php');
include_once('../site_globals/common_functions.php');
include_once('../site_globals/common_queries.php');
include_once('../php/gump.class.php');
page_protect();
error_reporting(0);
$firstname = filter($_SESSION['user_name']);
$myid = filter($_SESSION['user_id']);
// All the variables from the submission form
$notes = filter($_POST['notes']);
$subcat = filter($_POST['subcat']);
//Insert Notes into the database
$stmt = $dbh->prepare('
INSERT INTO `notes`
(date , sub_cat_id , notes)
VALUES
(:date , :subcat , :notes)
');
$stmt->bindValue('subcat', $subcat);
$stmt->bindValue('date', date('Y-m-d H:i:s'));
$stmt->bindValue('notes', $notes);
$stmt->execute();
echo "This note was added successfully";
exit;
?>
。 LOAD NOTES.PHP
<table width="100%">
<thead style="text-align:left; ">
<tr style="font-size:14px; font-weight:bold;">
<!-- <th><input class="check-all" type="checkbox" /></th>-->
<th>Date</th>
<th >Contents</th>
<th>Preview/Print</th>
</tr>
</thead>
<?php while ($messages_row = mysql_fetch_object($messages_res)):?>
<tr>
<td><a target="_blank" href="../site_hospital_files/thread.php?question_id=<?php echo $messages_row->question_id;?>"><?php echo substr($messages_row->reply, 0, 20) . '...';?></a></td>
<td><?php echo date('Y-m-d', strtotime($messages_row->date_added));?></td>
<td><a href="../site_hospital_files/pdf_messages_notes.php?msg_id=<?php echo $messages_row->question_id;?>&var1=<?php echo $subcat;?>">Create PDF</a></td>
</tr>
<?php endwhile;?>
<?php while($notes_row = $notes_res->fetch(PDO::FETCH_ASSOC)):?>
<tr>
<td><?php echo $notes_row[date]; ?></td>
<td><?php echo substr($notes_row[notes], 0, 50).'...';?></td>
<td><a href="pdf_messages_notes.php?note_id=<?php echo $notes_row->sub_cat_id; ?>&var1=<?php echo $subcat;?>">View</a></td>
</tr>
<?php endwhile;?>
</table>
在這一點上我不會太在意。總是有改進的方法,但你所做的並不差。很高興看到您使用PDO! –
...但爲什麼隨機'mysql_fetch_object'? – deceze
這個問題更適合於http://codereview.stackexchange.com,而不是在這裏。 – deceze