Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>I did something similar to this for displaying as well as appending/deleting records. The method I used was to loop through all the post vars in the PHP script, and searching for all information based on the first part of the key (if it matches something, use the number after that as an object id). Then loop through the produced array of the data that will be appended, what is deleted, what is edited and what is ignored.</p> <p>If the object already exists as is and the checkbox isnt set, ignore If the object already exists and data is different and the checkbox isn't set, update If the object already exists and the checkbox is set, delete If the object doesn't exist and the checkbox isn't set, create new row If the object doesn't exist and the checkbox is set, ignore</p> <p>Hope that helps</p> <p>Have some code</p> <p>PHP Block:</p> <pre><code>$mysqlData = array(); // Items to Update $mysqlNewData = array(); // Items to Create $Data = $_POST; unset($Data['stuff']); foreach($Data as $k =&gt; $v) { $type = substr($k, 0, 2); if ($type == "nw") { $type = substr($k, 2, 2); $ID = substr($k, 4); $mysqlSubData = $mysqlNewData[$ID]; if (gettype($mysqlSubData) != "array") $mysqlSubData = array(); if ($type == "sd") $mysqlSubData['startdate'] = $v; if ($type == "ed") $mysqlSubData['enddate'] = $v; if ($type == "dl") if ($v == "on") $mysqlSubData['delete'] = true; $mysqlNewData[$ID] = $mysqlSubData; } else { $ID = substr($k, 2); $mysqlSubData = $mysqlData[$ID]; if (gettype($mysqlSubData) != "array") $mysqlSubData = array(); if ($type == "sd") $mysqlSubData['startdate'] = $v; if ($type == "ed") $mysqlSubData['enddate'] = $v; if ($type == "dl") if ($v == "on") $mysqlSubData['delete'] = true; $mysqlData[$ID] = $mysqlSubData; } } </code></pre> <p>Table Block:</p> <pre><code>&lt;? $occurences = $mysql-&gt;getEntries("occurences", "`TargetID`='{$Target['ID']}'"); ?&gt; &lt;table cellpadding="0" cellspacing="5" border="0" width="900" id="timetable"&gt; &lt;tr&gt; &lt;td&gt;Delete&lt;/td&gt; &lt;td&gt;Start Date&lt;/td&gt; &lt;td&gt;End Date&lt;/td&gt; &lt;/tr&gt; &lt;? foreach($occurences as $occurence) { ?&gt; &lt;? $ID = $occurence['ID']; ?&gt; &lt;tr&gt; &lt;td&gt; &lt;input type="checkbox" name="dl&lt;?=$ID?&gt;" value="on" /&gt; &lt;/td&gt; &lt;td&gt; &lt;input type="text" name="sd&lt;?=$ID?&gt;" id="sd&lt;?=$ID?&gt;" value="&lt;?=$occurence['startdate']?&gt;" style="width: 100px" /&gt; &lt;a href="javascript:;" onclick="javascript:NewCssCal('sd&lt;?=$ID?&gt;','yyyyMMdd','arrow')"&gt;&lt;img src="/scripts/cal.gif" width="16" height="16" border="0" alt="Pick a date"&gt;&lt;/a&gt; &lt;/td&gt; &lt;td&gt; &lt;input type="text" name="ed&lt;?=$ID?&gt;" id="ed&lt;?=$ID?&gt;" value="&lt;?=$occurence['enddate']?&gt;" style="width: 100px" /&gt; &lt;a href="javascript:;" onclick="javascript:NewCssCal('ed&lt;?=$ID?&gt;','yyyyMMdd','arrow')"&gt;&lt;img src="/scripts/cal.gif" width="16" height="16" border="0" alt="Pick a date"&gt;&lt;/a&gt; &lt;/td&gt; &lt;td&gt; &lt;/td&gt; &lt;/tr&gt; &lt;? } ?&gt; &lt;/table&gt; &lt;a href="javascript:;" onclick="AddOccurence();"&gt;Add Another&lt;/a&gt; &lt;div style="text-align: center"&gt; &lt;input type="image" src="/images/button_save.png" value="Save" border="0" /&gt; &lt;a href="/"&gt;&lt;img src="/images/button_cancel.png" alt="Cancel" border="0" /&gt;&lt;/a&gt; &lt;/div&gt; &lt;/form&gt; &lt;script type="text/javascript"&gt; var TableRowExtras = 0; function AddOccurence() { TableRowExtras++; var da = new Date(); var t = document.getElementById('timetable'); var row = t.insertRow(t.rows.length); var cell = row.insertCell(0); var element = document.createElement('input'); element.name = 'nwdl' + TableRowExtras; element.type = 'checkbox'; element.value = 'on'; cell.appendChild(element); cell = row.insertCell(1); element = document.createElement('input'); element.type = 'text'; element.name = 'nwsd' + TableRowExtras; element.id = 'nwsd' + TableRowExtras; element.value = da.getFullYear() + '-' + (da.getMonth() + 1) + '-' + da.getDate(); element.style.width = '100px'; cell.appendChild(element); cell.innerHTML = cell.innerHTML + " "; element = document.createElement('a'); element.href = "javascript:NewCssCal('nwsd" + TableRowExtras + "','yyyyMMdd','arrow')"; var element2 = document.createElement('img'); element2.src = '/scripts/cal.gif'; element2.width = '16'; element2.height = '16'; element2.border = '0'; element2.alt = 'Pick a date'; element.appendChild(element2); cell.appendChild(element); cell = row.insertCell(2); element = document.createElement('input'); element.type = 'text'; element.name = 'nwed' + TableRowExtras; element.id = 'nwed' + TableRowExtras; element.style.width = '100px'; cell.appendChild(element); cell.innerHTML = cell.innerHTML + " "; element = document.createElement('a'); element.href = "javascript:NewCssCal('nwed" + TableRowExtras + "','yyyyMMdd','arrow')"; element2 = document.createElement('img'); element2.src = '/scripts/cal.gif'; element2.width = '16'; element2.height = '16'; element2.border = '0'; element2.alt = 'Pick a date'; element.appendChild(element2); cell.appendChild(element); } &lt;/script&gt; </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload