SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Der CSS-Problemlöser

Der CSS-Problemlöser zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Entwicklung und Softwaredesign

PHP Entwicklung und Softwaredesign Hier können strukturelle (Programmier-) Konzepte diskutiert und Projekte vorgestellt werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 10.04.2008, 23:12:18
ksticker ksticker ist offline
Member
 
Registriert seit: Nov 2007
Ort: Karlsruhe, Dresden
Alter: 34
Beiträge: 596
ksticker eine Nachricht über ICQ schicken
EDITOR Klasse

Ich habe mal eine Klasse geschrieben, mit welcher man ganz Simpel eine Tabelle übergibt und das Formular automatisch erzeugt wird, natürlich kann man das ganze auch in Templates auslagern und erweitern.
So kann man innerhalb von Minuten einen neuen Tabellen-Editor schreiben.
Ist Ideal für einen Adminbereich.


Hier die Klasse:
PHP-Code:
class editor
{
    
# Deklaration der Variablen
    
public $table_cols = array();
    public 
$table_name "";
    public 
$aktionen   = array();

    function 
overview()
    {
        echo 
'<form action="" method="POST">';
        
#Variablen Deklaration und Definition
        
$primary_key reset $this->table_cols );# Erstes Element aus Array auslesen (Erstes Element muss Primärschlüssel sein (ES WIRD DER INHALT GESPEICHERT NICHT DER INDEX)
        
$primary_key_index_calc array_keys ($this->table_cols$primary_key );
        
$primary_key_index $primary_key_index_calc[0];
        
$end end ($this->table_cols);
        
$end_index_calc array_keys ($this->table_cols$end);
        
$end_index $end_index_calc[0];
        
$extend '';
        
############################# FORMULAREINGABEN VERARBEITEN ########################
        #####################VALUE VON SUBMIT-BUTTON ÄNDERN
        
if(isset($_POST['doaktion']) && isset($_POST['checkbox']) && ($_POST['aktion'] == "edit"))
        {
            
$submit_value "Speichern";
        }else{
            
$submit_value "Aktion durchführen";
        }
        
#####################/VALUE VON SUBMIT-BUTTON ÄNDERN
        ##################### LÖSCHEN EINES DATENSATZES
        
if(isset($_POST['doaktion']) && isset($_POST['checkbox']) && ($_POST['aktion'] == "delete"))
        {
            
$delete_id implode(','array_map('intval'$_POST['checkbox']));
            
MYSQL_QUERY("DELETE FROM ".$this->table_name." WHERE ".$primary_key_index." IN ($delete_id)");
        }    
        
##################### /LÖSCHEN EINES DATENSATZES
        ##################### SUCHFUNKTION
        
if(($_POST['searchword'] != "Suchbegriff" || $_POST['searchword'] == "") && isset($_POST['doaktion']))
        {
            
$extend .= " WHERE MATCH (".$_POST['search_in'].") AGAINST ('+".$_POST['searchword']."*' IN BOOLEAN MODE)";
        }
        
##################### /SUCHFUNKTION
        ##################### SQL- ORDERBY VORBEREITEN
        
if(isset($_POST['sort_by']) && isset($_POST['desc_asc']) && isset($_POST['doaktion']))
        {
            
$extend .= " ORDER BY ".$_POST['sort_by'].' '.$_POST['desc_asc'];
        }
        
##################### /SQL- ORDERBY VORBEREITEN
        ##################### BEARBEITETE DATEN SPEICHERN
        
if(($_POST['doaktion'] == "Speichern") && (isset($_POST['checkbox_saves'])))
        {
            
$i 0;
            foreach (
$this->table_cols as $realname => $alias)
            {
                if(
$alias != $primary_key)
                {
                    
$checkID 0;
                    foreach(
$_POST[$realname] as $Inhalt)
                    {
                    
MYSQL_QUERY("UPDATE ".$this->table_name." SET ".$realname." = '".$Inhalt."' WHERE ".$primary_key_index." = ".$_POST['checkbox_saves'][$checkID]."");
                    
$checkID++;
                    }
                }
            }
        }
        
##################### /BEARBEITETE DATEN SPEICHERN
        
echo '<table border="1" cellpadding="0" cellspacing="0" width="100%">';
        echo 
'<tr>';        
        foreach (
$this->table_cols as $realname => $alias
        {
                
            echo 
"<td>$alias</td>";

            
#SQL - Abfrage vorbereiten
            
if($realname != $end_index)# Wenn der Index nicht mit dem letzten Element des Arrays übereinstimmt, das Komme anhängen
            
{
                
$spaltennamen .= $realname.",";
            }else{    
                
$spaltennamen .= $realname;
            }    
        }
        echo
'</tr>';
        
$overview MYSQL_QUERY("SELECT ".$spaltennamen." FROM ".$this->table_name.$extend);# SQL- Abfrage durchführen
        
print("SELECT ".$spaltennamen." FROM ".$this->table_name.$extend);
        
        
############################# TABELLE ERZEUGEN ###################################
        
while ($overview_ausgabe MYSQL_FETCH_ASSOC($overview))#Ausgelesene in Array legen
        
{
            echo 
'<tr>';
            foreach (
$this->table_cols as $realname => $alias)#Gehe das Array durch und gebe damit die SQL-Daten aus
            
{
                if(isset(
$_POST['checkbox']) && ($_POST['aktion'] == "edit"))#Wenn die Checkbox gesetzt wurde dann
                
{
                    if((!
in_array ($overview_ausgabe[$primary_key_index], $_POST['checkbox'])) && ($_POST['aktion'] == "edit"))#Wenn der Datensatz nicht ausgewählt wurde dann
                    
{
                        if(
$alias == $primary_key)#Wenn dies gleich der Primärschlüssel ist dann Chechbox einblenden
                        
{
                            echo
'<td><input type="checkbox" name="checkbox[]" value="'.$overview_ausgabe[$realname].'[]">'.$overview_ausgabe[$realname].'</td>';
                        }else{
#Wenn dies ungleich dem Primärschlüssel ist dann keine Checkbox                    
                            
echo'<td>'.$overview_ausgabe[$realname].'</td>';
                        }
                    }else{
#Wenn der Datensatz ausgewählt wurde dann
                        
if($alias != $primary_key)#Wenn dies ungleich dem Primärschlüssel ist dann Inputfeld     
                        
{
                            echo
'<td><input type="text" value="'.$overview_ausgabe[$realname].'" name="'.$realname.'[]"></td>';
                        }else{
#Wenn dies gleich der Primärschlüssel ist dann kein Inputfeld einblenden
                            
echo'<input type="hidden" name="checkbox_saves[]" value="'.$overview_ausgabe[$primary_key_index].'">';
                            echo
'<td>'.$overview_ausgabe[$realname].'</td>';
                        }
                    }
                }else{
#wenn die Checkbox nicht gesetzt wurde, dann Standartausgabe
                    
if($alias == $primary_key)#Wenn dies gleich der Primärschlüssel ist dann Chechbox einblenden
                    
{
                        echo
'<td><input type="checkbox" name="checkbox[]" value="'.$overview_ausgabe[$realname].'">'.$overview_ausgabe[$realname].'</td>';
                    }else{
#Wenn dies ungleich dem Primärschlüssel ist dann keine Checkbox                    
                        
echo'<td>'.$overview_ausgabe[$realname].'</td>';
                    }
                }
            }    
            
#Wenn die ausgelesene ID(SQL) mit einer aus dem Array übereinstimmt dann andere Darstellung wählen
            
echo '</tr>';
        }
        echo
'<table>';
        
############################# /TABELLE ERZEUGEN ###################################
        ############################# AKTIONEN OPTION ###################################
        
echo'<select name="aktion" size="1">';
        foreach (
$this->aktionen as $value => $aktion
        {
            echo 
'<option value="'.$value.'"> '.$aktion.' </option>';    
        }
        echo
'</select>';
        
############################# /AKTIONEN OPTION ###################################
        ############################# SORTIEREN OPTION ###################################
        
echo'Sortieren: ';
        echo
'<select name="sort_by" size="1">';
        foreach (
$this->table_cols as $realname => $alias
        {
            echo 
'<option value="'.$realname.'"> '.$alias.' </option>';    
        }
        echo
'</select>';        
        
############################# /SORTIEREN OPTION ###################################
        ############################# DESC_ASC OPTION ####################### #############
        
echo'<select name="desc_asc" size="1">';
        echo
'<option value="ASC"> Aufsteigend </option>';        
        echo
'<option value="DESC"> Absteigend </option>';    
        echo
'</select>';        
        
############################# /DESC_ASC OPTION ###################################    
        ############################# SUCHFUNKTION #####################################    
        
echo'<input type="text" value="Suchbegriff" name="searchword">';
        echo
'Suche in: ';
        echo
'<select name="search_in" size="1">';
        foreach (
$this->table_cols as $realname => $alias
        {
            echo 
'<option value="'.$realname.'"> '.$alias.' </option>';    
        }
        echo
'</select>';        
        
############################# /SUCHFUNKTION #####################################        
        
echo'<input type="submit" name="doaktion" value="'.$submit_value.'">';
        echo
'</form>';
    }


Und hier eine Beispielzuweisung:
PHP-Code:
$forenedit = new editor;
#Tabellenkopf Felder festlegen
$forenedit->table_cols['SQL-Spaltenname']         = "Alias";
$forenedit->table_name                     "SQL-Tabelle";
$forenedit->aktionen['edit']                 = "Bearbeiten";
$forenedit->aktionen['delete']                 = "Loeschen";
# /Tabellenkopf Felder festlegen
$forenedit->overview();# Erstelle die Übersichtstabelle 

P.S. Ich bin für Anregungen und Tipps dankbar :-)
Dies ist der erste Prototyp

Geändert von ksticker (10.04.2008 um 23:44:23 Uhr) Grund: Bug gefixt ;-)
Mit Zitat antworten
  #2  
Alt 11.04.2008, 00:10:03
Benutzerbild von |Coding
|Coding |Coding ist offline
Administrator
 
Registriert seit: Apr 2002
Ort: Bergheim
Alter: 39
Beiträge: 5.255
|Coding eine Nachricht über Skype™ schicken
AW: EDITOR Klasse

Eine Klasse mit einer Methode? :-)
__________________
Gruß |Coding

---
Qozido® - Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler.

www.qozido.de
Mit Zitat antworten
  #3  
Alt 11.04.2008, 00:12:26
ksticker ksticker ist offline
Member
 
Registriert seit: Nov 2007
Ort: Karlsruhe, Dresden
Alter: 34
Beiträge: 596
ksticker eine Nachricht über ICQ schicken
AW: EDITOR Klasse

Wie gesagt ist ersteinmal der Prototyp.
Die Klasse wird noch erweitert, so das man wählen kann welche Spalten schreibar sind und wie schreibbare Felder dargestellt werden sollen.

Und Und Und ;-)
Mit Zitat antworten
  #4  
Alt 11.04.2008, 00:25:48
ksticker ksticker ist offline
Member
 
Registriert seit: Nov 2007
Ort: Karlsruhe, Dresden
Alter: 34
Beiträge: 596
ksticker eine Nachricht über ICQ schicken
AW: EDITOR Klasse

Was für Methoden würdest Du denn noch erwarten?
Mit Zitat antworten
  #5  
Alt 11.04.2008, 00:49:44
Benutzerbild von |Coding
|Coding |Coding ist offline
Administrator
 
Registriert seit: Apr 2002
Ort: Bergheim
Alter: 39
Beiträge: 5.255
|Coding eine Nachricht über Skype™ schicken
AW: EDITOR Klasse

Zitat:
Zitat von ksticker Beitrag anzeigen
Wie gesagt ist ersteinmal der Prototyp.
Die Klasse wird noch erweitert, so das man wählen kann welche Spalten schreibar sind und wie schreibbare Felder dargestellt werden sollen.

Und Und Und ;-)
Dann bin ich mal auf die nächste Version gespannt :-)
__________________
Gruß |Coding

---
Qozido® - Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler.

www.qozido.de
Mit Zitat antworten
  #6  
Alt 11.04.2008, 07:12:01
Benutzerbild von Area51
Area51 Area51 ist offline
Junior Member
 
Registriert seit: Mar 2008
Ort: Heidelberg
Alter: 31
Beiträge: 164
Area51 eine Nachricht über ICQ schicken Area51 eine Nachricht über AIM schicken Area51 eine Nachricht über MSN schicken
AW: EDITOR Klasse

Kleiner Tipp:
Kommentare, die immer mit einem # eingeleitet werden sind nicht so schön ;)

In meinen Augen wäre
PHP-Code:
// Comment 
oder
PHP-Code:
/* Comment
next line */ 
besser.
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:10:48 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2023, Jelsoft Enterprises Ltd.


© 2001-2023 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt