| Index
» Projects
» phpMyEdit
» Forum
» Can I allow editing of only recent entries? |
 |
trister
Joined: 01 Dec 2010
Posts: 15
Posted: 2011-11-17 10:19
Back to top
Reply with quote
|
I want to allow editing of the last 100 entries in my table.
I think this might be a trigger-related problem.
Anyone has any ideas (and maybe post a sample trigger code) on how I can do this neatly?
I could do it with php but phpMyEdit always amazes me :)
|
doug
Joined: 10 Feb 2003
Posts: 1013
Location: Denver, Colorado (USA)
Posted: 2011-11-17 17:34
Back to top
Reply with quote
|
Assuming the unique record identifier is a numeric auto-increment field, query for the MAX value, subtract 100 from the result, and then create a filter for phpMyEdit.
http://opensource.platon.sk/projects/doc.php/phpMyEdit/html/configuration.filters.html
Possibly something like:
| Code: |
$qry = 'SELECT MAX(id) FROM `table`';
if(!$row = @mysql_fetch_row(@mysql_query($qry))){
die('Query failed: '.$qry);
}
$x = $row[0] - 100;
$opts['filters'] = 'id > "'.$x.'"'; |
|
trister
Joined: 01 Dec 2010
Posts: 15
Posted: 2011-11-21 07:42
Back to top
Reply with quote
|
Thanks for the quick reply.
I think this code just displays the last 100 entries.
My request (that I think it wasn't so clear :P ) is that I want to view everything but allow editing of only the last 100 entries.
Thanks again :)
|
trister
Joined: 01 Dec 2010
Posts: 15
Posted: 2012-01-20 12:17
Back to top
Reply with quote
|
To answer to my question :P :
You must create a trigger.
--------------
The fields that you'll use (read or write) inside the trigger MUST BE NOT Read Only (so do not use input='R')
--------------
A counter measure (that I found in these forums) for not being able to use input='R' is this :
| Code: |
//Reset New values to Old values (This userlevel can't change number & year
if($newvals['number'] != $oldvals['number']) $newvals['number'] = $oldvals['number'];
if($newvals['year'] != $oldvals['year']) $newvals['year'] = $oldvals['year']; |
--------------
Add the line to your main phpmyedit file :
| Code: |
$opts['triggers']['update']['before'] = './trigger_last_entries.php'; // ['pre'] doesn't work
|
---------------
trigger_last_entries.php:
| Code: |
<?php
$query2 = "SELECT MAX(number) as maxnum FROM entries;
if($data=$this->MyQuery($query2)){
$result = mysql_fetch_array($data);
$last_number = $result[0];
$trigger_error_message="<h2><font color=red>You can't change old values </font></h2>";
$this_number =$oldvals['number'];
if($this_number>($last_number-100)){ //allow editing of only the last 100 entries
return true;
} else {
echo $trigger_error_message;
return false; // Don't allow the update
}
}else{
print "<h2><font color=red> There was an connection error </font></h2>";
echo "\n".'<p>'.mysql_error().'</p>';
}
echo $trigger_error_message."<br>Maybe SQL error";
return false; // Do not allow edit on SQL error
?>
|
The above code is based on some older posts with minor changes
[/code]
Last edited by trister on 2012-01-24 00:49, edited 1 time in total
|
|
Post new topic
Reply to topic
|
|
|
|