[Apache, phpmyadmin, html, PHP, ...] Datenbank mit webbasiertem Zugriff erstellen

  • Ersteller Ersteller boss3D
  • Erstellt am Erstellt am
Weil wir mit dem Link im Button die übergabe einer GET Variable faken. Das würde aber mit POST nicht klappen, den POST schreibt man ja nicht in die URL. GET wird in der URL übertragen, wenn du jetzt also die URL im Link entsprechend des Ergebnisses eines abgesendeten GET Formulars aufbaust, dann kannst du ein Formular vortäuschen.


Daher Wüsste ich auch gerne was in der Adresszeile steht wenn du auf den Button klickst.

Mit Links ist das ganze ziemlich simpel, aber mit diesem Scheiß Button JavaScript gemisch komme ich durcheinander mit der Syntax und daraus resultieren die moentanen Probleme, die es hetzt noch zu beheben gilt.
 
Zuletzt bearbeitet:
http://localhost/projektzeiterfassung.php?add=1

rem macht gar nichts.

[EDIT]
Funktioniert schon, wenn ich jede Button-Code-Zeile in ein eigenes echo packe, wie in deinem Code. Ich hatte das in ein Echo gepackt.

Leider geht's halt jetzt nicht mehr, dass die Buttons nebeneinander sind, weil ich für die zentrale Ausrichtung jedem ein <div> geben muss (div class wird vom CSS erkannt), das aber gleichzeitig auch einen Zeilenumbruch bewirkt.
 
PHP:
echo '<button name="add" type="button" value="Zeile hinzufügen" onclick="window.location.href=\'projektzeiterfassung.php?add='.$add.'\';">Zeile hinzufügen</button> ';
echo '<button name="rem" type="button" value="Zeile entfernen" onclick="window.location.href=\'projektzeiterfassung.php?rem='.$add.'\';">Zeile entfernen</button> ';

habe den Code grade local getestet und den Fehler bei Rem behoben. Das läuft jetzt also. Jetzt bleibt nur die Frage warum deine Seite sich nicht selber aufruft.

Die heißt auch wirklich projektzeiterfassung.php

Ja?
 
^^ War gar kein Fehler mehr in deinem Code. Ich hatte blöderweise beide Zeilen in ein echo gepackt. Getrennt in zwei echos geht's eh. ;)
 
Ok aber es geht auch in einem echo. Ich schreibe dir das kurz mal um.

PHP:
echo '<button name="add" type="button" value="Zeile hinzufügen" onclick="window.location.href=\'projektzeiterfassung.php?add='.$add.'\';">Zeile hinzufügen</button> <button name="rem" type="button" value="Zeile entfernen" onclick="window.location.href=\'projektzeiterfassung.php?rem='.$add.'\';">Zeile entfernen</button>';

Der Code muss aber in deinem Editor in einer Zeile stehen, das ist wichtig.
 
In einer Zeile hatte ich es sogar. Auf den ersten Blick sehe ich jetzt auch keinen Unterschied zu meiner Version. K. A. was es da hatte ...

Jedenfalls merke ich gerade, dass nach wie vor keine Daten in die DB geschrieben werden. Irgendwas hat's also auch noch mit dem "Bestätigen" Button?!
 
Hast du mal <formular action=""> Überprüft? Heißt deine Datei noch projektzeiterfassung2.php? Oder hats du Sie umbenannt. Dann musss hinter das Action natürlich formular.php
 
dann geh mal in Formular.php und lass eine $_POST Variable direkt am ANfang mit echo ausgeben. Dann sehen wir ob der Fehler in projektzeiterfassung.php oder formular.php zu finden ist. Am besten nimmst du $_POST['add'] dafür.
 
Also wenn ich das ...
PHP:
$add = $_POST['add'];
echo '$add';
... gleich am Anfang in formular.php einfüge, gibt er auch $add aus.
 
Damit liegt der Fehler in formular.php Poste nochmal den aktuellen Code plz.

Und meinst du wirklich '$add' als Text oder den Inhalt der variable? denn wenn du den Text meinst, dann liegt es an den ' ' die du um die variable gesetzt hast.
 
Ich hätte eigentlich den Variableninhalt (Wert) ausgeben wollen. Ich hätte mir eigentlich erwartet, dass er mir bei "$add" eben $add ausgibt ...

Hier jedenfalls formular.php:
PHP:
 <?php  
    session_start();
    
    $verbindung = mysql_connect("localhost", "root" , "root") or die ("Verbindung zur Datenbank konnte nicht hergestellt werden");
    mysql_select_db("projektzeiterfassung") or die ("Datenbank konnte nicht ausgewählt werden.");
    
    $user = $_SESSION['name'];   
    $ergebnis = mysql_query("SELECT id FROM user WHERE name='".$user."'");
    $row = mysql_fetch_object($ergebnis);
    $userid = $row->id;  
    
    $add = $_POST['add'];

    for ($a = 1; $a <= $add; $a++) {
        $taetigkeit = $_POST['taetigkeit'.$a.''];
        $produkt = $_POST['product'.$a.'']; 
        $beschreibung = $_POST['beschreibung'.$a.''];    
    
        $stunden = array("montag".$a."", "dienstag".$a."", "mittwoch".$a."", "donnerstag".$a."", "freitag".$a."", "samstag".$a."", "sonntag".$a."");   
        $data = array("mo".$a."", "di".$a."", "mi".$a."", "do".$a."", "fr".$a."", "sa".$a."", "so".$a."");
    
        for ($b = 0; $b < 7; $b++) {
            if (isset($_POST[$stunden[$b]]) and $_POST[$stunden[$b]] != "" and isset($_POST[$data[$b]]) and $_POST[$data[$b]] != "") {        
                $dauer = $_POST[$stunden[$b]];
                $tag = $_POST[$data[$b]];
                $erstellt = date('Y-m-d-h-i-s');
                $eintrag = "INSERT INTO zeiten (taetigkeit, produkt, userid, beschreibung, zeit, datum, erstellt) VALUES ('$taetigkeit', '$produkt', '$userid', '$beschreibung', '$dauer', '$tag', '$erstellt')";
                $eintragen1 = mysql_query($eintrag);
            }        
        }
        unset($data);
        unset($stunden);
    }
?>
Vielleicht liegt's daran, dass das INSERT aufgrund zu vieler if-Verschachtelungen nicht immer erreicht wird?!
 
Ja, okay, bei nur $add käme im aktuellen Beispiel 3 raus. Stimmt ja auch, ich habe 3 Zeilen.
 
projektzeiterfassung.php:
PHP:
<!doctype html>
<html>
<head>
<meta charset="ISO-8859-1">
<link rel="stylesheet" type="text/css" href="style.css">
<title>Projektzeiterfassung</title>
</head> 
<body>
<form action="formular.php" method="post">
    <br><h1>Projektzeiterfassung</h1>
    <table id="t1">
        <tr><th>Tätigkeit</th>
        <th>Produkt</th>
        <th>Beschreibung</th>
        <th width="150">MO <input name="mo" type="text" size="10" maxlength="10"></th>
        <th width="150">DI <input name="di" type="text" size="10" maxlength="10"></th>
        <th width="150">MI <input name="mi" type="text" size="10" maxlength="10"></th>
        <th width="150">DO <input name="do" type="text" size="10" maxlength="10"></th>
        <th width="150">FR <input name="fr" type="text" size="10" maxlength="10"></th>
        <th width="150">SA <input name="sa" type="text" size="10" maxlength="10"></th>
        <th width="150">SO <input name="so" type="text" size="10" maxlength="10"></th></tr>    
<?php
    $verbindung = mysql_connect("localhost", "root" , "root") or die ("Verbindung zur Datenbank konnte nicht hergestellt werden");
    mysql_select_db("projektzeiterfassung") or die ("Datenbank konnte nicht ausgewählt werden.");

    $taetigkeiten = array();
    $sql_t = "SELECT * FROM taetigkeiten;";
    $res_t = mysql_query($sql_t) or die ("Get Taetigkeiten failed.<br>".mysql_error());
    if (mysql_num_rows($res_t))
        while ($row_t = mysql_fetch_assoc($res_t)) {
            $taetigkeiten[count($taetigkeiten)] = $row_t;
        }

    $products = array();
    $sql_p = "SELECT * FROM produkte;";
    $res_p = mysql_query($sql_p) or die ("Get Produkte failed.<br>".mysql_error());
    if (mysql_num_rows($res_p))
        while ($row_p = mysql_fetch_assoc($res_p)) {
            $products[count($products)] = $row_p;
        }
      
    if( isset($_GET['add'])) {
        $add = $_GET['add']; 
        $add++;
    } elseif (!isset($_GET['rem'])) {
        $add = 1;
    }
    if ( isset($_GET['rem'])) { 
        $add = $_GET['rem']; 
        $add--;
    }

    for ($a = 1; $a <= $add; $a++) {
        echo '<tr><td><select name="taetigkeit'.$a.'">';
        foreach ($taetigkeiten as $taetigkeit) {
            echo '<option value="'.$taetigkeit['taetigkeit'].'">'.$taetigkeit['taetigkeit'].'</option>';
        }
        echo '</select></td>';

        echo '<td><select name="product'.$a.'">';
        foreach ($products as $product) {
            echo '<option value="'.$product['produkt'].'">'.$product['produkt'].'</option>';
        }
        echo '</select></td>';

        echo '<td><input name="beschreibung'.$a.'" type="text" size="50" maxlength="250"></td>';

        echo '<td><input name="montag'.$a.'" type="text" size="10" maxlength="5""></td>';
        echo '<td><input name="dienstag'.$a.'" type="text" size="10" maxlength="5"></td>';
        echo '<td><input name="mittwoch'.$a.'" type="text" size="10" maxlength="5"></td>';
        echo '<td><input name="donnerstag'.$a.'" type="text" size="10" maxlength="5"></td>';
        echo '<td><input name="freitag'.$a.'" type="text" size="10" maxlength="5"></td>';
        echo '<td><input name="samstag'.$a.'" type="text" size="10" maxlength="5"></td>';
        echo '<td><input name="sonntag'.$a.'" type="text" size="10" maxlength="5"></td></tr><br>';
    } 
    echo '</table><br>';

    echo '<div class="submit"><button name="add" type="button" value="Zeile hinzufügen" onclick="window.location.href=\'projektzeiterfassung.php?add='.$add.'\';">Neue Eingabezeile hinzufügen</button> <button name="rem" type="button" value="Zeile entfernen" onclick="window.location.href=\'projektzeiterfassung.php?rem='.$add.'\';">Eingabezeile entfernen</button></div><br>';
    echo '<input type="hidden" name="add" value="'.$add.'">';

    echo '<div class="submit"><input type="submit" name="confirm" value="Bestätigen"></div>';
?> 
</form>
</body>
</html>
 
[EDIT ]

PHP:
 <?php
    session_start();

    $verbindung = mysql_connect("localhost", "root" , "root") or die ("Verbindung zur Datenbank konnte nicht hergestellt werden");
    mysql_select_db("projektzeiterfassung") or die ("Datenbank konnte nicht ausgewählt werden.");

    $user = $_SESSION['name'];
    $ergebnis = mysql_query("SELECT id FROM user WHERE name='".$user."'");
    $row = mysql_fetch_object($ergebnis);
    $userid = $row->id;

    $add = $_POST['add'];

    for ($a = 1; $a <= $add; $a++) {
        $taetigkeit = $_POST['taetigkeit'.$a.''];
        $produkt = $_POST['product'.$a.''];
        $beschreibung = $_POST['beschreibung'.$a.''];

        $stunden = array("montag".$a."", "dienstag".$a."", "mittwoch".$a."", "donnerstag".$a."", "freitag".$a."", "samstag".$a."", "sonntag".$a."");
        $data = array("mo", "di", "mi", "do", "fr", "sa", "so");

        for ($b = 0; $b < 7; $b++) {
            if (isset($_POST[$stunden[$b]]) and $_POST[$stunden[$b]] != "" and isset($_POST[$data[$b]]) and $_POST[$data[$b]] != "") {
                $dauer = $_POST[$stunden[$b]];
                $tag = $_POST[$data[$b]];
                $erstellt = date('Y-m-d-h-i-s');
                $eintrag = "INSERT INTO zeiten (taetigkeit, produkt, userid, beschreibung, zeit, datum, erstellt) VALUES ('$taetigkeit', '$produkt', '$userid', '$beschreibung', '$dauer', '$tag', '$erstellt')";
                $eintragen1 = mysql_query($eintrag);
            }
        }
        unset($data);
        unset($stunden);
    }
?>
 
Zuletzt bearbeitet:
Zurück