Antworten auf deine Fragen:
Neues Thema erstellen

To-Do-List?Projekt

AlphaGen

Nicht mehr ganz neu hier

AW: php - Framework

Ok... Top gun... Schreib mal deine Anforderungen. Einfach nur eine Liste, in die man Sachen eintragen kann und wieder löschen kann?
Mit Datum? Ohne Datum? Mit Tageszeit, ohne Tageszeit? löschen wenn die Zeit abgelaufen ist? Mit einer Datenbank oder mit txt Dateien?

Ich nehme an die Seite soll nicht immer komplett neu geladen werden. Also auch mit Ajax ect...

Schreib mal bisschen was ;-)
 

Top_Gun

Aktives Mitglied

AW: php - Framework

Ok also:

Eine To-Do-Liste, in der

  • Aufgaben eingetragen werden können mit
    • Titel
    • Beschreibung
    • Einstelldatum
    • Zieldatum
    • Meilensteine ("nice to have" und kein Muss) [evtl mit Farbmarkierung]
    • Deadline ("nice to have" und kein Muss) [evtl mit Farbmarkierung]
    • Wichtigkeit [evtl im Zusammenhang mit den Meilensteinen und der Deadline und der Farbmarkierung]
    • Status der Arbeit [Offen, in Arbeit, Abgearbeitet (mit Datum), etc.]
  • Kommentare zu den Aufgaben erstellt werden können
  • Aufgaben gesucht werden können

Fürs erste fällt mir spontan nichts mehr ein... Ideen werden aber gerne auch von anderen angenommen.

Man könnte das ganze auf mehrere User bzw Bearbeitende auslegen, so dass bei den Aufgaben in Arbeit und Kommentaren noch dabei steht wer dafür zuständig ist. Wäre für meine Bedürfnisse aber nicht notwendig, aber wenn du dich dran versuchen willst und das ganze vielleicht auch anderen Usern zur Verfügung stellen magst?! Muss ja nicht nur für mich und meine Bedürfnisse sein...

Ich weiß auch, dass es solche Systeme schon gibt, hab mich damit aber noch nie auseinander gesetzt und damit keine Erfahrungen. Vielleicht kannst da ja mal schauen was die so können?
 

AlphaGen

Nicht mehr ganz neu hier

AW: php - Framework

Ich werde ich da mal ran machen. Weitere Ideen für die online-todoo-Liste sind gern gesehen.

Also ich stell mir das so vor:

Loginbereich, sonst sieht man schonmal garnix... Wenn man eingeloggt ist, werdem einem alle Termine angezeigt. Bei jedem Termin steht ein Titel, eine Beschreibung, das Einstelldatum, das Zieldatum und Status.

Das kommt auf jeden Fall rein und erstmal wenig optisch ansprechend. Funktionalität > Optik

Dann will ich evt noch machen, dass nur derjenige der den Eintrag gemacht hat diesen auch ändern kann, es sei denn man ist "Admin" bzw "Moderator".

Das ganze wird mit ner großen Datenbank laufen...

Wenn noch neue Ideen kommen, werden die auch einprogrammiert. :)
 

Top_Gun

Aktives Mitglied

AW: php - Framework

Achja hatte noch zwei Punkte vergessen:

Datenbank:
Gerne MySQL, sollte für die meisten kein Problem darstellen. Das ganze über Dateien laufen zu lassen halte ich für nicht so sinnvoll.

AJAX:
Ich persönlich habe nichts gegen den Seitenreload und verwende in eigenen Projekten bisher gar kein JS.
Wenn du möchtest, es an bestimmten Stellen passt und dich an das Motto "AJAX als Unterstützung und nicht als grundlegende Funktion" (man muss das ganze auch Bedienen können wenn JS ausgeschaltet ist) hälst, kannst du gerne AJAX mit einbauen, da habe ich kein Problem mit.


So mal schauen ob ich einen netten Mod finde, der den Thread mal splittet. Wir sind nämlich nicht mehr ganz im Topic...
 

AlphaGen

Nicht mehr ganz neu hier

AW: php - Framework

Nicht mehr ganz? *lacht*

Wir sind total abgedriftet.
Ich hasse Seitenreloads und ich liebe Ajax, JS und JSON *lacht*

Aber ich werds mal fast ausschließlich in PHP versuchen. Werden halt Sessions benutzt ;)
 

Top_Gun

Aktives Mitglied

AW: To-Do-List?Projekt

Hallo,

warum so ein Stress?

Versuch es doch einfach hiermit:



Viel Spass damit
Aus Rücksicht, da das ursprüngliche Thema aufgesplittet wurde, werde ich es hier noch einmal sagen:

Dieses "Projekt" dient zum Erlernen, Üben und Verstehen von PHP.
Es ist nicht gewünscht irgend ein vorgefertigtes Tool zu benutzen.

Trotzdem danke für dein Post.
 

AlphaGen

Nicht mehr ganz neu hier

AW: To-Do-List?Projekt

So.. ich brauch dann mal Hilfe! ^^

Es wird eine Benutzerverwaltung geben. Jeder Benutzer soll Rechte bekommen, die in einer Datenbank gespeichert sind, mit demjenigen seinem Passwort.
Sprich es gibt eine Tabelle "Benutzer" in der Datenbank mit "Name", "Passwort" und "Rechte". Das Rechtesystem wird von der Logik her dem von Linux ähnlich sein.

Das ganze wird Objektorientiert verwirklicht. Da ich das noch nie gemacht habe, brauche ich bisschen Hilfe.

Meine Frage zielt aber mehr auf SQL ab.. Also: Ich bau mir nen SQL - String zusammen mit:

PHP:
$sql = "SELECT * FROM user WHERE bn = '". $user ."' AND pw='". $pw . "'";

$user ist der Benutzername und $pw ist das Passwort.

Jetzt geb ich den String an ein mysql_query weiter...

PHP:
$ausgabe = mysql_query($sql);

Das Problem ist, dass wenn der Benutzername und das dazugehörige Passwort nicht in der Datenbank gespeichert sind (also der Benutzer nicht mit diesem Passwort existiert), dann bekomme ich "Resource id #3" im Browser angezeigt. Ist mir aber auch egal... ich will überprüfen, ob der Benutzer mit dem dazugehörigen Passwort in der Datenbank ist und wenn das nicht der Fall ist, eine Ausgabe machen.

Bitte um Hilfe. :)
 

Top_Gun

Aktives Mitglied

AW: To-Do-List?Projekt

Du kannst über mysql_num_rows($ausgabe) die Anzahl der gefundenen Datensätze abfragen.

Ich würde dir dazu raten, erst nach dem Usernamen zu suchen, und wenn der dann gefunden ist das Passwort abgleichen.
Und dann würde ich empfehlen, das eingegebenen PW als md5 mit dem in der Datenbank stehendem PW (natürlich auch md5) zu vergleichen. (Wählst du einen anderen Weg solltest du "AND pw LIKE" statt "AND pw =" verwenden)

Ach und ich hoffe die Variablen $user und $pw sind nicht 1:1 die vom User eingegebenen Werte?

EDIT: Hmm, ich lass es trotzdem mal stehen ;)
 

AlphaGen

Nicht mehr ganz neu hier

AW: To-Do-List?Projekt

Wer Interesse am Projekt hat, der kann mir ja ne PM oder ne E-Mail schreiben und ich schicke das Projekt. Ich bin mit XAMP lokal am entwickeln und kanns momentan nirgendwo hochladen. Deshalb würde ich dann das Projekt verschicken mit SQL Befehl um die Datenbank mit den Tabellen anzulegen.

Aber ich besorg mir bald mal nen Webspace.
 

AlphaGen

Nicht mehr ganz neu hier

AW: To-Do-List?Projekt

So...

Ich veröffentliche mal nen Teil:

index.php:

PHP:
<?php
require ('libs/classDatabase.php');
$eintrag = new Eintrag ();
$ausgabe = new htmlAusgabe ();
$user = new Benutzer ();
if ($_POST){
    
    $user->loginUser($_POST["user"],$_POST["pass"]);
    if ($user->user==''){
      echo "User nicht vorhanden!";
    }

    else{
      if ($user->perm >= 1)
      {
          echo $ausgabe->bodyOpen;
          echo $ausgabe->eintragErstellen;
          echo $ausgabe->overTable;
          $eintrag->getUebersichtEintrag();
          echo $ausgabe->closeTable;
          if ($user->perm >=3) {
            echo $ausgabe->buttonErstellen;
            }
          echo $ausgabe->bodyClose;
      }
      else
      {
          echo "Ihre Rechte reichen nicht aus, um die Eintraege anzusehen";
      }
    }
}

if (!$_REQUEST){
    echo $ausgabe->loginBereich;
}
else
{
    if ($user->user==''){
        echo $ausgabe->loginBereich;
    }
}

?>
classDatabase.php:

PHP:
<?php
class Database {

    private $dbserver = 'localhost';
    private $dbname = 'todo';
    private $dbuser = 'root';
    private $dbpw = '';

    public function dbLogin (){
        $db = mysql_connect($this->dbserver, $this->dbuser, $this->dbpw);
        $test = mysql_select_db($this->dbname, $db);
    }

    public function sqlQuery ($sql){
        $ausgabe = mysql_query($sql);
        return $ausgabe;
    }

    public function sqlUser ($user){
        $sql = "SELECT bn FROM user WHERE id = '". $user."'";
        $query = $this->sqlQuery($sql);
        $username=mysql_fetch_row($query);
        return $username[0];
    }

    public function sqlGetText ($id){
      $this->dbLogin();
      $abfrage = "SELECT * FROM Eintrag WHERE id = '". $id."'";
      $ausgabe = $this->sqlQuery($abfrage);
      while($row=mysql_fetch_row($ausgabe)){
          $i = 0;
          while ($i<=strlen($str)){
              return $row[$i];
          }
      }

    }
}





class Benutzer extends Database {

    public $id = '0';
    public $user = 'anonym';
    public $pass = '';
    public $perm = '00';


    public function loginUser ($user, $pw) {
        $this->dblogin();
        $sql = "SELECT * FROM user WHERE bn = '". $user ."' AND pw='". $pw . "'";
        $ausgabe = $this->sqlquery($sql);
        $row=mysql_fetch_row($ausgabe);
        $this->id=$row[0];
        $this->user=$row[1];
        $this->pass=$row[2];
        $this->perm=$row[3];
   }
}




class htmlAusgabe {
    public $loginBereich = '<form method="POST" action="index.php">
    <table>
        <tr><td style="width:40px;">Username:</td><td style="width:100px;"><input name="user" type="text" /></td></tr>
        <tr><td style="width:40px;">Passwort: </td><td style="width:100px;"><input name="pass" type="password" /></td></tr>
        <tr><td style="width:40px;"><input type="submit" value="Abschicken" /></td><td style="width:100px;"></td></tr>
    </table>
</form>';


    public $bodyOpen ='<html>
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <script src="js/my.js"></script>
    <script src="js/prototype.js"></script>
  </head>
  <body>
    <center>';

    public $bodyClose ='</center></body></html>';

    public $buttonErstellen = '<input type="button" onclick="visible(neu)" value="Erstellen" id="buttoner">';

    public $eintragErstellen ='
        <div style="position:absolute; width:600px; border:1pt solid #000000; font-family:verdana, sans-serif; font-size:smaller; height:400px; left:50%; padding:15px;  margin-left:-300px; visibility:visible; top:30px; background-color:#CCCCCC" id="neu">
            <table style="font-family:verdana, sans-serif; font-size:smaller;">
                <tr><td style="width:100px;">Ersteller:</td><td style="width:400px;"><input id="eersteller" type="text" size="30"></td></tr>
                <tr><td style="width:100px;">Bearbeiter:</td><td style="width:400px;"><input id="ebearbeiter" type="text" size="30"></td></tr>
                <tr><td style="width:100px;">Status:</td><td style="width:400px;"><input id="estatus" type="text" size="30"></td></tr>
                <tr><td style="width:100px;">Überschrift:</td><td style="width:400px;"><input id="eueber" type="text" size="60"></td></tr>
                <tr><td style="width:100px;">Beschreibung:</td><td style="width:400px;"><textarea id="etextinhalt" cols="50" rows="10" style="font-family:verdana, sans-serif; font-size:small;"></textarea></td></tr>
            </table>
            <br /><br /><br /><br />
            <input type="button" onclick="verstecken(neu)" value="Schließen">
            <input type="button" onclick="verstecken()" value="Speichern">
         </div>';

    public $overTable = '
        <div style="position:absolute; width:600px; border:1pt solid #000000; font-family:verdana, sans-serif; font-size:smaller; height:400px; left:50%; padding:15px;  margin-left:-300px; visibility:hidden; top:30px; background-color:#CCCCCC" id="info">
            <table style="font-family:verdana, sans-serif; font-size:smaller;">
                <tr><td style="width:100px;">Ersteller:</td><td style="width:400px;"><input id="ersteller" type="text" size="30"></td></tr>
                <tr><td style="width:100px;">Bearbeiter:</td><td style="width:400px;"><input id="bearbeiter" type="text" size="30"></td></tr>
                <tr><td style="width:100px;">Status:</td><td style="width:400px;"><input id="status" type="text" size="30"></td></tr>
                <tr><td style="width:100px;">Überschrift:</td><td style="width:400px;"><input id="ueber" type="text" size="60"></td></tr>
                <tr><td style="width:100px;">Beschreibung:</td><td style="width:400px;"><textarea id="textinhalt" cols="50" rows="10" style="font-family:verdana, sans-serif; font-size:small;"></textarea></td></tr>
            </table>
            <br /><br /><br /><br />
            <input type="button" onclick="verstecken(info)" value="Schließen">
            <input type="button" onclick="verstecken()" value="Status ändern">
            <input type="button" onclick="verstecken()" value="Eintrag bearbeiten">
         </div>
        <table style="border:1pt solid #000000; font-family:verdana, sans-serif; font-size:smaller;">
            <tr style="font-size:medium; font-weight:bold;">
                <td style="width:75px;">Nr.</td>
                <td style="width:400px;">Ueberschrift</td>
                <td style="width:150px;">Erstellt von</td>
                <td style="width:100px;">Status</td>
                <td style="width:170px;">Zu bearbeiten von</td>
                <td style="visibility:hidden;"></td>
            </tr>';

    public $closeTable = '</table>';
}

class Eintrag extends Database {

     public function getUebersichtEintrag () {
        $this->dblogin();
        $abfrage = "SELECT * FROM Eintrag";
        $ausgabe = $this->sqlQuery($abfrage);
        $status;

        // Schleife um die abgefragten Einträge zu zerpflücken und anzuzeigen
        while($row=mysql_fetch_row($ausgabe)){
            
                //Abfrage von wem der Eintrag ist (aus SQL - Datenbank)
                $von = $this->sqlUser($row[3]);

                 //Abfrage wer den Eintrag zu bearbeiten hat (aus SQL - Datenbank)
                $fuer = $this->sqlUser($row[5]);

                //Statuszahl einem Status zuweisen
                switch ($row[4]){
                    case 1: $status = 'offen'; break;
                    case 2: $status = 'wird bearbeitet'; break;
                    case 3: $status = 'geschlossen'; break;

                    default: $status = 'kein Status'; break;

                }
/*
               $row[2] = ereg_replace('ö', '$ouml', $row[2]);
               $row[2] = ereg_replace('ä', '$auml', $row[2]);
               $row[2] = ereg_replace('ü', '$uuml', $row[2]);
*/
                            
                //Ausgabe der Tabellenzeile
                echo '<tr id="element'.$row[0].'" onmouseover="getElementById(\'element'.$row[0].'\').style.backgroundColor=\'#99FFFF\'" onclick="anzeig(\''.$row[0].'\')" onmouseout="getElementById(\'element'.$row[0].'\').style.backgroundColor=\'#FFFFFF\'">
                            <td id="n'.$row[0].'">'.$row[0].'</td>
                            <td id="u'.$row[0].'">'.$row[1].'</td>
                            <td id="e'.$row[0].'">'.$von.'</td>
                            <td id="s'.$row[0].'">'.$status.'</td>
                            <td id="b'.$row[0].'">'.$fuer.'</td>
                            <td style="width:5px;"><div style="visibility:hidden; position:absolute" id="t'.$row[0].'">'.$row[2].'</td>
                        </tr>';
                $datensatz++;
            }
   }
}
?>
my.js:

Code:
function anzeig (id){
     
   $('ersteller').value = $('e'+id+'').innerHTML;
   $('bearbeiter').value = $('b'+id).innerHTML;
   $('status').value = $('s'+id).innerHTML;
   $('ueber').value = $('u'+id).innerHTML;
   $('textinhalt').value = $('t'+id).innerHTML;
   visible ('info');
}

function verstecken (id){
    $(id).style.visibility = "hidden";
}

function visible (id){
    $(id).style.visibility = "visible";
}
prototype.js: Prototype JavaScript framework: Download Prototype

sql-Datenbank:

-- phpMyAdmin SQL Dump
-- version 2.11.9.2
-- phpMyAdmin
--
-- Host: localhost
-- Erstellungszeit: 13. Januar 2009 um 15:38
-- Server Version: 5.0.67
-- PHP-Version: 5.2.6

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- Datenbank: `todo`
--

-- --------------------------------------------------------

--
-- Tabellenstruktur für Tabelle `eintrag`
--

CREATE TABLE IF NOT EXISTS `eintrag` (
`nr` int(20) NOT NULL auto_increment,
`ueberschrift` varchar(50) NOT NULL,
`text` varchar(300) NOT NULL,
`ersteller` int(3) NOT NULL,
`status` int(1) NOT NULL,
`aufgabefuer` varchar(50) NOT NULL,
PRIMARY KEY (`nr`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;

--
-- Daten für Tabelle `eintrag`
--

INSERT INTO `eintrag` (`nr`, `ueberschrift`, `text`, `ersteller`, `status`, `aufgabefuer`) VALUES
(1, 'XYZ Webseite', 'XYZ WEbseite Kontaktformular fertig stellen', 1, 1, '1'),
(2, 'ABC', 'Die Webseite der Firma ABC fertig stellen. Hierzu gehört: Grafisches Design, Texte, Impressum', 1, 1, '2');



--
-- Tabellenstruktur für Tabelle `user`
--

CREATE TABLE IF NOT EXISTS `user` (
`id` int(11) NOT NULL auto_increment,
`bn` varchar(30) NOT NULL,
`pw` varchar(30) NOT NULL,
`perm` int(1) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;

--
-- Daten für Tabelle `user`
--

INSERT INTO `user` (`id`, `bn`, `pw`, `perm`) VALUES
(1, 'martin', 'pass', 7),
(2, 'user', 'pass', 0);


Die SQL-Befehle einfach eintippen, kopieren oder importieren mit phpmyadmin.

Dateistruktur:
index.php
+ libs
+ --- classDatabase.php
+js
+ --- my.js
+ --- prototype.js



Sollte so funktionieren. :)

Wenns nicht geht einfach PM an mich, dann schick ich euch das Projekt als zip-Datei wo die Dateistruktur stimmt und eine SQL Datei, die importiert werden kann.
 

Top_Gun

Aktives Mitglied

AW: To-Do-List?Projekt

hab auch mal ne todo liste gebaut :)
Das hier ist ein Projekt zum praktischen erlernen und vertiefen von PHP und MySQL Kentnissen. Wenn du nichts dazu beisteuern kannst oder möchtest dann poste hier nicht. Angeben kannst du woanders, hier ist es nicht erwünscht.

Ok ok... bin ja noch am Anfang... über SQL injektions muss ich mich dann wohl noch einlesen.
Nun ich dachte damit du lernst machen wir das ganze ;)
SQL Injections sind ein wichtiges Thema aber einfach in den Griff zu bekommen, sollte dir nicht schwer fallen.
Und du kannst ja auch immernoch uns fragen ;)
 

exo

Aktives Mitglied

AW: To-Do-List?Projekt

Das hier ist ein Projekt zum praktischen erlernen und vertiefen von PHP und MySQL Kentnissen. Wenn du nichts dazu beisteuern kannst oder möchtest dann poste hier nicht. Angeben kannst du woanders, hier ist es nicht erwünscht.

Und du brauchst nicht gleich so aus die Haut fahren! Wenn es ums erlernen geht ist doch gut, vielleicht ist es auch als gedankenanstoß für andere Gut wie man es vielleicht machen könnte, und vielleicht interessieren sich eben auch andere leute dafür außer dir, aber musst hier nicht gleich so aufn tisch hauen, mein gott und mit Angeben hat das wohl rein garnix zu tun, war nur nen hinweis und mehr nicht!
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben