SteviesWebsite

Aktionen & Checkbox Tabellenansicht (CMS)

Code & Blog Logo

Code & Blog Logo

Die Tabellenansicht unseres CMS wird heute nochmal optimiert. Es geht ob die Checkboxen und neue Aktionen. Außerdem gibt es heute eine kleine Premiere bei der Aktion – Wir setzten zum ersten Mal JavaScript ein (soweit ich noch weiß^^). Der ganze Tag dreht sich um die Datei /admin/include/table-show.php

Fangen wir mal mit den Aktionen an. Hier wir das Löschen und Bearbeiten von Einträgen ermöglicht. An dieser Stelle gibt es erstmal nur die Links + Icons (Im unteren Code hat sich noch ein bisschen mehr geändert, worauf ich erst später eingehe):

<?PHP
      $res = mysql_query("SELECT * FROM ".mysql_real_escape_string($_GET['table'])." LIMIT 0,30");
      $pos = 0;
      while($row = mysql_fetch_assoc($res)){
        ?>
        <tr onClick="check(<?PHP echo $pos; ?>)">
          <td>
            <input type="checkbox" id="check-<?php echo $pos; ?>" name="entries" value="<?PHP echo $pos; ?>" />
          </td>
          <td>
            <a title="Bearbeiten"
               href="index.php?page=tableitem-edit&table=<?PHP echo $_GET['table']."&position=".$pos; ?>">

              <img src="/system/images/icons/page_edit.png" />

            </a>
            <a title="L&ouml;schen"
               href="index.php?page=tableitem-delete&table=<?PHP echo $_GET['table']."&position=".$pos; ?>">
              <img src="/system/images/icons/cross.png" />

            </a>
          </td>
      <?PHP
        foreach($columns as $column){
          echo "<td>".substr(htmlentities($row[$column['Field']]),0,30)."</td>";
        }
        echo "</tr>";
        $pos++;
      }
    ?>

Weiter oben kommt dann noch die Spalte Aktionen hinzu:

<table class="dbtable">
  <thead>
    <tr>
       <td><input id="checkall" type="checkbox" onClick="checkAll()" /></td>
       <td>Aktionen</td>

Damit sind die Aktionen soweit erstmal fertig. Kommen wir nun zum schwierigeren Teil: Die Checkboxen. Hier soll es zum einen möglich sein, auf eine Zeile zu klicken und sie dadurch auszuwählen, oder eben nicht mehr auswählen. Zum anderen soll die Checkbox im Header alle Zeilen (de)selektieren. Da es wegen Array schwierig ist in JS Elemente mit Klammern anzusteuern, habe ich aus unseren entries[] entries gemacht (siehe oben).

Mit dem onClick auf dem tr wird die JavaScript Funktion check ausgeführt, als Parameter wird die Position übergeben. Bei der Checkbox, die alle Einträge auswählen soll(checkall), wird die Funktion checkAll aufgerufen.

Die Funktion check setzt einfach den Checked-Wert genau anders als er vorher war(mit dem ‘!’ den Wert einfach umdrehen). Die Funktion checkAll geht alle Elemente des neuen Formulars table durch und setzt dort den Status genau so, wie den von der Checkbox checkall.

Hier ist der komplette Code, dank technischer (WordPress) Probleme mal ganz hässlich in schwarz-weiß und ohne Eitnrückungen:

<h1>Tabelle <?PHP echo $_GET['table']; ?></h1>
<?PHP
$columns = MySQL::getColumns($_GET['table']);
if($columns){
?>
<script language=”JavaScript”>
function check(pos){
document.getElementById(‘check-’ + pos).checked = !document.getElementById(‘check-’ + pos).checked;
}
function checkAll(){
for (i = 0; i < document.table.entries.length; i++){
document.table.entries[i].checked = document.getElementById(‘checkall’).checked;
}
}
</script>
<form name=”table”>
<table>
<thead>
<tr>
<td><input id=”checkall” type=”checkbox” onClick=”checkAll()” /></td>
<td>Aktionen</td>
<?PHP
foreach($columns as $column){
echo “<td>”.htmlentities($column['Field']).”</td>”;
}
?>
</tr>
</thead>
<tbody>
<?PHP
$res = mysql_query(“SELECT * FROM “.mysql_real_escape_string($_GET['table']).” LIMIT 0,30″);
$pos = 0;
while($row = mysql_fetch_assoc($res)){
?>
<tr onClick=”check(<?PHP echo $pos; ?>)”>
<td>
<input type=”checkbox” id=”check-<?php echo $pos; ?>” name=”entries” value=”<?PHP echo $pos; ?>” />
</td>
<td>
<a title=”Bearbeiten”
href=”index.php?page=tableitem-edit&table=<?PHP echo $_GET['table'].”&position=”.$pos; ?>”>

<img src=”/system/images/icons/page_edit.png” />

</a>
<a title=”L&ouml;schen”
href=”index.php?page=tableitem-delete&table=<?PHP echo $_GET['table'].”&position=”.$pos; ?>”>
<img src=”/system/images/icons/cross.png” />

</a>
</td>
<?PHP
foreach($columns as $column){
echo “<td>”.substr(htmlentities($row[$column['Field']]),0,30).”</td>”;
}
echo “</tr>”;
$pos++;
}
?>
</tbody>
</table>
</form>
<?PHP
}
else{
echo “<p>Tabelle wurde nicht gefunden</p>”;
}
?>

RSS Feed für Kommentare zu diesem Artikel. TrackBack URL

10 Kommentare »

  1. Naja, beim tinymce hatten wir schon mal JS ;-)

    Kommentar von Daniel Busch — 27. September 2009 @ 17:50

  2. Hast Recht^^

    Kommentar von Stefan Wienströer — 27. September 2009 @ 17:56

  3. Im Plaintextteil (sch… Wort). Also in dem Teil der durch technische (WordPress) Probleme unformatiert im Blog steht, hat der table-tag kein class-Atribut mehr. Ergo die style-Angaben fruchten nicht mehr. Da wird sich aber jeder Copyundpaster (noch sone Wortschöpfung) ärgern.

    schönes Restwochenende

    Daniel

    Kommentar von Daniel Busch — 27. September 2009 @ 18:11

  4. Ich weiß nicht wie es bei euch ist aber ich habe jetzt das Problem, das wenn ich eine Zeile anklicke dann wird die checkbox markiert, doch wenn ich die Checkbox direkt anklicke wird es durch das js für die row direkt wieder invertiert.

    Kommentar von Tobi — 29. September 2009 @ 10:48

  5. Werd ich mir mal ansehen, hab danach auch nichtmehr das direkte anklicken getestet, aber es kann gut sein. Ich werd dann wahrscheinlich nen Bugfix-Beitrag drüber veröffentlichen

    Kommentar von Stefan Wienströer — 29. September 2009 @ 18:54

  6. Ok ich versuch es hier mal mit meinem kommentar weil iwie kann ich keine schreiben oder ich seh sie selber nicht.

    ich würde bei den ganzen icons wo du einfügst noch ein border=”0″ anfügen damit der hässliche blaue rahmen weg ist! ;)

    Kommentar von Renner — 10. Oktober 2009 @ 21:34

  7. Hmm ich hab keine Border, aber ich denke der IE wird sie haben. Am besten lässt sich das glaub ich über CSS lösen, dann müssen wir nicht jedes einzelne Icon bearbeiten.

    Kommentar von Stefan Wienströer — 11. Oktober 2009 @ 12:42

  8. Ich hab jetzt rausgefunden, warum du keine Kommentare schreiben konntest: Mein Anti-Spam filter hat angeschlagen, weil Du so oft hintereinander Kommentare geschrieben hast^^ Werd die Kommentare mal durchsehen, und die die keine Testkommentare sind / die, die du nicht schon wo anders genannt hast freischalten.

    Kommentar von Stefan Wienströer — 11. Oktober 2009 @ 13:04

  9. irgendwie kann ich nach dem einbau des JS die kästchen nicht mehr auf checked setzen nur die checkbox welche alle invertiert funktioniert noch 1A… woran könnte das liegen ?

    Kommentar von erxxlu — 6. April 2010 @ 11:52

  10. Und hier ist der Bugfix dazu:

    Bugfix Tabellenansicht: Checkbox nicht Checkbar

    Kommentar von erxxlu — 6. April 2010 @ 11:57

Hinterlasse einen Kommentar

Trackbacks/Pingbacks

Code & Blog LogoErstelle dein eigenes CMS mit PHP. Dieses Tutorial wird dir zeigen wie das geht. Also lies dir es durch und frische deine PHP Kenntnisse auf. [mehr...]

WebanalyseFür die Verbesserung Deiner Seite solltest Du wissen, wie sich die Besucher verhalten. Diese Artikel zeigen Dir wie man das am geschicktesten macht. [mehr...]

Facebook LogoErstelle deinen eigenen virtuellen PC. Das ist bereits mit leichten Mitteln möglich, welche Du in diesem Tutorial lernst.[mehr...]

Blog Tutorials... helfen dir deinen Blog zu verbessern. Nebenbei gibt es noch nützliche Blog-Tools. [mehr...]

Diskussion starten
  • RSS
  • Blogverzeichnis - Blog Verzeichnis bloggerei.de
Ich biete mich als Lektor für deine Blog-Artikel an.
Sende mir einfach deinen Artikel und ich korrigiere ihn.
© SteviesWebsite.de - Kontakt | Impressum