Henning: Eigenprogrammierung hilfe (Anfänger Skill)

Guten Tag Forums Member!

Wollte hier mal eine Sammlung von Scripten für mich zusammenstellen für die programmierung eines GB's mit Admin Bereich. Hier sind schon mal meine gesammelten. Für Anregungen und Verbesserungsvorschläge wäre ich sehr dankbar:

Tabelle anlegen PHP:
----------------
<?php
$db=mysql_connect("localhost","xxxxx-x","password");
mysql_select_db("xxxxx-x");
$anfrage="CREATE TABLE Tabellenname(nr INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(30), text LONGTEXT, datum DATE)";

if(mysql_query($anfrage)){
echo"Tabelle wurde angelegt";
}
else
{
echo"Tabelle wurde erstellt";
}
?>

Start Auswahl PHP:
--------------
<html>
<head>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>

<form action="<?php PHP_SELF; ?>" method="post">

<?php
if($sent or !$sent){
?>

<table border="0" bgcolor="aaaaaa">
<tr><td>
Wählen Sie aus<br>
<select name="auswahl">
<option>Tabelle erstellen</option>
<option>Daten eintragen</option>
<option>Daten auslesen</option>
<option>Tabelle loeschen</option>
</select>
</td></tr>
<tr><td>
<input type="submit" value="Bestätigen">
<input type="hidden" name="sent" value="1">
</td></tr>
</table>
</form>

<?php
}
if($sent)
{
if($auswahl=="Tabelle erstellen"){
include("tabelle_anlegen.php");
}
if($auswahl=="Daten eintragen"){
include("eintragen.html");
}
if($auswahl=="Daten auslesen"){
include("lesen.php");
}
if($auswahl=="Tabelle loeschen"){
include("loeschen.html");
}
}
?>
</body>
</head>
</html>

Html Seite fürs löschen:
------------------------
<html>
<head>
<link href="style.css" rel="stylesheet" type="text/css">
<body bgcolor="aaaaaa">
<form action="loeschen.php" method="post">
Passwort<br>
<input type="password" name="pw">
<br>
<input type="submit" value="Bestätigen">
</form>
</body>
</head>
</html>

Html Seite fürs eintragen:
--------------------------
<html>
<head>
<link href="style.css" rel="stylesheet" type="text/css">
<body>
<form action="eintragen.php" method="post">
Name:<br>
<input type="text" name="name">
<br>
Text:<br>
<textarea rows="6" colls="20" name="text">
</textarea><br>
<input type="submit" value="Bestätigen">
</form>
</body>
</head>
</html>

Löschen PHP:
------------
<?php
$db=mysql_connect("localhost","xxxxx-x","password");
mysql_select_db("xxxxx-x");
$anfrage="DROP TABLE Tabellenname";
if($pw=="passwortname"){
mysql_query($anfrage);
echo"<a href='start.php'>zurück</a><br><br>";
echo"Tabelle wurde gelöscht";
}
else{
echo"<a href='start.php'>Zurück</a><br><br>";
echo"Tabelle wurde <b>nicht</b> gelöscht";
}
?>

Eintragen PHP:
--------------
<?php
$db=mysql_connect("localhost","xxxxx-x","password");
mysql_select_db("xxxxx-x");
$name=strip_tags($name);
$text=strip_tags($text);
$datum=date("y,m,d");
$anfrage="INSERT INTO Tabellenname VALUES('','$name','$text','$datum')";
if(mysql_query($anfrage)){
echo"<a href='start.php'>Zurück</a><br><br>";
echo"Daten wurden eingetragen";
mail("me@world.net","Ein Eintrag in ihrem Gästebuch","$name hat am $datum $text geschrieben!");
}
else{
echo"<a href='start.php'>Zurück</a><br><br>";
echo"Daten wurden <b>nicht</b> eingetragen";
}
?>

Lesen PHP:
----------
<?php
$db=mysql_connect("localhost","xxxxx-1","password");
mysql_select_db("xxxxx-1");
$anfrage="SELECT * FROM Tabellenname";
$result=mysql_query($anfrage);
$anz=mysql_num_rows($result);
if($anz >1){
echo"<br><br>Es sind <b>$anz</b> User eingetragen<br><br>";
}
else{
echo"<br><br>Es ist <b>$anz</b> User eingetragen<br><br><br><br>";
}
while($inhalt=mysql_fetch_row($result)){
echo"<b><br><br>$inhalt[1]</b><br><br>";
echo"<textarea rows='6' colls='20'>$inhalt[2]</textarea>";
echo"<br><br>hat am $inhalt[3] geschrieben";
}
?>

CSS Datei:
----------

A:link {

text-decoration: underline;

color: Black;

}

A:visited {

text-decoration: none;

color: black;

}

A:active {

text-decoration: none;

color: #black;

}

A:hover {

text-decoration: none;

color: white;

}

body {

font-family: Verdana;

font-size: 10px;

color: #000000;

background-color: #aaaaaa;

}

td {

font-family: Verdana;

font-size: 10px;

}

tr {
font-family: Arial;
font-size: 9px;

}
input {
font-family: Verdana;
font-size:9px;
color: #000000;
border:1px #000000;
background-color: #aaaaaa;
}
textarea {
font-family: Arial;
font-size:10;
color: #000000;
border:1px #000000;
background-color: #aaaaaa;
}

P.s. habe alles selbst programmiert, daher nicht stören wenn etwas nicht 100%tig gut ist)
Will später dann auch ein Tutorial auf meine Homepage legen, deshalb bitte diesen Thread nicht löschen. Danke!! :)

  1. Hallo Henning,

    $db=mysql_connect("localhost","xxxxx-x","password");

    Fehlerbehandlung fehlt.

    mysql_select_db("xxxxx-x");

    dito.

    if(mysql_query($anfrage)){
    echo"Tabelle wurde angelegt";
    }
    else
    {
    echo"Tabelle wurde erstellt";

    wo ist der Unterschied zwischen angelegt und erstellt? und wo ist eine sinnvolle Fehlerbehandlung (mysql_error())?

    <html>

    Doctype fehlt.

    <head>
    <link href="style.css" rel="stylesheet" type="text/css">
    </head>

    title-Element fehlt

    <form action="<?php PHP_SELF; ?>" method="post">

    was steht in der Konstanten PHP_SELF?

    if($sent or !$sent){

    wo kommmt $sent her? - ich nehme mal an, du meinst $_POST['sent'], oder? (mal abgesehen davon, das es vollkommen egal ist, ob ein $sent true ist, oder nicht - die Bedingung ist immer erfüllt)

    <table border="0" bgcolor="aaaaaa">

    die Attribute lassen sich durch css ersetzen - aber warum überhaupt eine Tabelle?

    if($auswahl=="Tabelle erstellen"){

    du möchtest auch hier das Array $_POST verwenden.

    if($auswahl=="Daten eintragen"){
    if($auswahl=="Daten auslesen"){
    if($auswahl=="Tabelle loeschen"){

    arum kein switch?

    Löschen PHP:
    $db=mysql_connect("localhost","xxxxx-x","password");
    mysql_select_db("xxxxx-x");
    mysql_query($anfrage);

    hier fehlt wieder die Fehlerbehandlung.

    Eintragen PHP:
    $db=mysql_connect("localhost","xxxxx-x","password");
    mysql_select_db("xxxxx-x");

    du weißt ja: Fehlerbehandlung.

    $name=strip_tags($name);
    $text=strip_tags($text);

    ich würde nicht strip_tags verwenden, sondern htmlspecialchars (strip_tags entfernt evtl. zu viel - htmlspecialchars maskiert die zeichen nur - wobei ich die Daten zum Eintragen in die DB unverändert lassen würde (bis auf das behandeln mit mysql_escape_string()))

    $datum=date("y,m,d");
    $anfrage="INSERT INTO Tabellenname VALUES('','$name','$text','$datum')";

    warum lässt du mysql das Datum nicht selbst eintragen (->NOW()) - ich hoffe doch, die 4. Spalte hat einen Datumstype? btw: du solltest immer alle Spaltennamen angeben (->http://dclp-faq.de/q/q-sql-select.html).

    if(mysql_query($anfrage)){
    echo"<a href='start.php'>Zurück</a><br><br>";
    echo"Daten wurden eingetragen";

    mail("me@world.net","Ein Eintrag in ihrem Gästebuch","$name hat am $datum $text geschrieben!");

    Verwende *nie* Daten die von außen kommen ungeprüft in Funktionsaufrufen.

    Lesen PHP:
    $anfrage="SELECT * FROM Tabellenname";

    "SELECT *" solltest du nicht verwenden (siehe Link oben)

    echo"<textarea rows='6' colls='20'>$inhalt[2]</textarea>";

    'cols' schreibt sich mit einem 'L' (in der Seite zum Eintragen auch) - außerdem ist:
      echo "text $var text";
    wesentlich langsamer als:
      echo 'text '.$var.' text';

    CSS Datei:
    A:active {
            color: #black;

    hier ist ein '#' zu viel.

    body {
            font-family: Verdana;

    hier fehlt eine generische Schriftfamilie.

    font-size: 10px;

    das ist keine geeignete Schriftgröße - verwende em oder %

    tr {
    font-family: Arial;
    font-size: 9px;

    nachdem tr keine Text enthalten darf, ist eine Schriftart- bzw. Schriftgrößenangabe imho überflüssig (bzw. es wäre sinnvoller td o.ä. als Selector zu verwenden.

    textarea {
    font-size:10;

    10 was?

    color: #000000;
    border:1px #000000;

    du solltest auch noch einen Wert für border-style angeben - der Standardwert ist nämlich 'none'.

    Will später dann auch ein Tutorial auf meine Homepage legen, deshalb bitte diesen Thread nicht löschen. Danke!! :)

    nein, Threads werden hier idR nicht gelöscht (sie wandern nur ins Archiv).

    Grüße aus Nürnberg
    Tobias

    --
    Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
    1. Hello,

      generell würde ich das Script grauslig wuselig nennen... Das musst Du Dir aber nun keinesfalls zu Herzen nehmen, denn nur Versuch macht klug.

      Aber es würde sich anbieten, dass Du dich etwas mehr mit

      • Funktionen
      • Namensbereichen
      • Konstanten
      • den superglobalen Arrays

      auseinandersetzt.

      Wie Tobias schon schrieb, fehlt eine vernünftige Fehlerbearbeitung. Wenn man nun intelligent Funktionen einsetzt und dadurch Aufgaben klar umreißen und abgrenzen kann, dann kann man auch besser auf Fehler reagieren. Die Funktionen sollten grundsätzlich einen Fehlerwert zurückgeben.

      Am Anfang eiens Scriptes sollte für die Dauer des Testens imer stehen:

      ini_set("track_errors","1");
      error_reporting(E_ALL);

      Dann kann man nach jeder kritischen Operation auch die Variable $php_errormsg abfragen, die einem sehr viel Aufschluss über den stattgefundnenen Fehler gibt.

      Außerdem fehlt dem Script eine Sicherheitsstrategie. Man kann durch Manipulation des Formulars auf dem Client z.B. alle Daten löschen.

      Löschen PHP:
      $db=mysql_connect("localhost","xxxxx-x","password");
      mysql_select_db("xxxxx-x");
      mysql_query($anfrage);
      hier fehlt wieder die Fehlerbehandlung.

      Es sieht auch so aus, als würdest Du für jede Funktionalität ein eigenes Script schreiben. Das geht natürlich, aber ein Projekt wird bei atomistischer Programmierweise sehr schwer pflegbar. Es bietet sich an, alle Funktionen in einem Script zusammenzuhalten und die gewünschte Funktion über Paramter (POST oder ggf. auch GET) zu steuern, solange das Projekt so klein ist.

      Ein Rat noch:

      Ein Script sollte im wesentlichen sauber getrennt in verschiedene Bereiche eingeteilt werden.

      • Konstanten und Variablen
      • includes von allgemeinen Funktionen
      • Definition der "lokalen" Funktionen
      • Verarbeitung der Aufrufparamter (GET, POST, COOKIE)
      • Daten holen
      • Berechnungen
      • Daten wegschreiben
      • Ausgabe

      Das ist nur ein grober Fahrplan.

      Und es fehlen mir in Deiner Sammlung umfangreiche Kommentare. Ein nicht kommentiertes Projekt kann man schon nach einem halben Jahr Abstand kaum noch pflegen, selbst wenn man es selbst geschrieben hat.

      Harzliche Grüße aus http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
    2. korrekt! Bis auf eins:

      font-size: 10px;
      das ist keine geeignete Schriftgröße - verwende em oder %

      Bitte? was ist so schlimm an Pixeln ?

      1. Hallo Vielfrager,

        font-size: 10px;
        das ist keine geeignete Schriftgröße - verwende em oder %

        Weil bedingt durch unterschiedliche Auflösungen und unterschiedliche Bildschirmgrößen es sehr verschieden sein kann, wie groß die Buchstaben am Ende beim User dargestellt werden. Relative Einheiten wie em oder % orientieren sich an der Schriftgröße, die der Benutzer für sich als optimal eingestellt hat.

        Schöne Grüße,

        Johannes

        --
        Der folgende Satz ist wahr.
        Der vorhergehende Satz ist gelogen.
        ss:| zu:} ls:[ fo:} de:] va:} ch:) sh:( n4:| rl:( br:< js:| ie:{ fl:( mo:}