Datenbankänderung mit PHP

Also PHP ist installiert.
Die Software von deinem Webserver da ist allerdings ziemlich veraltet ^^
muss aber trotzdem klappen. PHPmyAdmin funktioniert ja auch.
 
Moin,

vielleicht habe ich ja etwas überlesen und es wurde schon moniert, aber in dem Code von kojack steht
Code:
$post_text = $_POST['Text']; // dies ist der Wert aus dem Formular//

Das Formularfeld hat aber den Namen text
 
<form action="work.php" method=post>
Überschrift <br>
<input type=text name="Array[Text]" size= 50>
<br>
<br>

<input type=submit name="SUBMIT" value="senden">
</form>
Im Form steht Text
 
Und was ist dann das hier?
Code:
if($_GET['action'] == "update")
    {
        $abfrage = "SELECT * FROM `".$tabelle."` LIMIT 0, 30 ";
        $ergebnis = mysql_query($abfrage);
        while($row = mysql_fetch_array($ergebnis))
        {
            print "<form action='".$_SERVER['PHP_SELF']."?action=update' method='post'>\n";
            print "Text Eingabe: <br>\n";
            print "<input type='text' name='text' size='50' value='".$row['text']."'>\n";
            print "<input type='hidden' name='id' value='".$row['id']."'>\n";
            print "<br>\n";
            print "<input type=submit name='SUBMIT' value='senden'>\n";
            print "</form>\n";
        }
    }
    elseif($_GET['action'] == "insert")
    {
        print "<form action='".$_SERVER['PHP_SELF']."?action=insert' method='post'>\n";
        print "Text Eingabe: <br>\n";
        print "<input type='text' name='text' size='50'>\n";
        print "<br>\n";
        print "<input type=submit name='SUBMIT' value='senden'>\n";
        print "</form>\n";
    }

Und wenn da wirklich Array[Text] steht , warum versuchst du dann mit
Code:
$_POST['Text']
darauf zuzugreifen, korrekt wäre es in dem Fall mit
Code:
$_POST['Array']['Text']
 
Das kann auch nicht der Fehler sein, hättest du die Beiträge alle gelesen hättest auch gelesen das ich seinen Code 1zu1 kopiert habe und bei mir hat es 1A funktioniert :P trotzdem Danke :D

Hmmm, ich habe jetzt deinen Code wie er da steht 1zu1 kopiert. Funktioniert bei mir tadellos. Scheinbar hast du dich bei $dbname = ""; verschrieben, schau noch mal genau nach. Ich nehme an das dein Webserver auf einem Linux System läuft also ist Groß/Kleinschreibung einzuhalten.

Tut mir ja Leid das wir nicht auf die Lösung kommen. Viel Glück noch, ich bin schlafen ;)

edit: Ahjo! Da kojack's Webserver auf ner Linux Büchse läuft hätte das doch nen Unterschied gemacht mit dem großen T. Habe ich jetzt nicht dran gedacht ;)
 
Zuletzt bearbeitet:
Morgen,

Ich hab mal ein paar Freunden den Link zum Beitrag geschickt, die haben leider auch keinen Vorschlag. Vielleicht lässt du mal den HTML Code weg, so zum testen. Eigentlich sollte kein Webserver Probleme damit haben, aber solangsam haben wir ja schon alle Möglichkeiten ausgeschlossen :P
 
Zuletzt bearbeitet:
Sagt was ihr wollt, es macht bei der Gross/Kleinschreibung keinen Unterschied ob Linux oder was anderes, Variablennamen sind überall gleichermassen case-sensitiv.

Keine Ahnung, woher der Code für dieses Formular stammt, auf jeden Fall nicht aus den hier geposteten Skripten.
<form action="work.php" method=post>
Überschrift <br>
<input type=text name="Array[Text]" size= 50>
<br>
<br>

<input type=submit name="SUBMIT" value="senden">
</form>
Da fehlt erstmal schon die action im Pfad(lässt das Update platzen), das <input> mit der id fehlt(was soll denn nun geupdatet werden), der Name des <input>'s stimmt nicht überein(verhindert das Eintragen des rechten Wertes), ein <br> ist zu viel und statt "Überschrift" sollte da "Text Eingabe:" stehen. Dass mit diesem Formular nichts passieren wird, darüber brauch man nicht fachsimpeln, denke ich :-)

Also erstmal das Überprüfen, dann, welche POST/GET-Parameter übermittelt werden, das Statement testhalber ausgeben lassen und ein mysql_error() hat auch noch nie geschadet.
 
Hier noch mein Code, habe noch mal ein bischen mit den Anfangs Variablen herumgespielt und zumindestens ein "Datenbank nicht vorhanden" bekommen.
Hier mein ganzes Doku,
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>work.php</title>
</head>

<body>
<?php

$host = "abc";
$user = "123";
$password = "ich";
$dbname = "kiga";
$tabelle = "Termine";

...

mysql_close($dbverbindung);
?> 
</body>
</html>

kojack hat das hier gepostet. Meine Antworten haben sich da drauf bezogen. Da er mit diesem Code eine weisse Seite bekommen hat ( was eigentlich nicht sein kann da min. die beiden letzten prints ausgegeben werden müssten ) hat er wohl selbst ein bisschen rumprobiert.
Wie gesagt ich habe diesen Code den er gepostet hat 1zu1 kopiert und ausprobiert und selbst mit dem großen T warum auch immer das plötzlich groß war ( im von mir geposteten Code war das T klein ) hat es trotzdem einwandfrei funktioniert.
Also hätte es auch bei ihm funktionieren müssen.


@kojack

Erstelle bitte folgende Datei:

kigatest.php

PHP:
<?php

$host = "";
$user = "";
$password = "";
$dbname = "";
$tabelle = "";

if($_GET['action'])
{
    $dbverbindung = mysql_connect ($host, $user, $password) or die
        ("Keine Verbindung moeglich");
    mysql_select_db("$dbname") or die
        ("Die Datenbank existiert nicht");
}

if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
    $post_text = $_POST['text']; // dies ist der Wert aus dem Formular//
    $post_id = $_POST['id'];
        
    if($_GET['action'] == "update")
    {    
        $aendern = "UPDATE `".$tabelle."` SET `text` = '".$post_text."' WHERE id = '".$post_id."'";
    
        mysql_query($aendern);
        print "Daten geändert.";
    }
	mysql_close($dbverbindung);
    
    if($_GET['action'] == "insert")
    {
        $eingabe = "INSERT INTO ".$tabelle." (text)
                    VALUES ('".$post_text."')";
    
        mysql_query($eingabe);
        print "Daten eingetragen.";
    }
	mysql_close($dbverbindung);
}
else
{
    if($_GET['action'] == "update")
    {
        $abfrage = "SELECT * FROM `".$tabelle."` LIMIT 0, 30 ";
        $ergebnis = mysql_query($abfrage);
        while($row = mysql_fetch_array($ergebnis))
        {
            print "<form action='".$_SERVER['PHP_SELF']."?action=update' method='post'>\n";
            print "Text Eingabe: <br>\n";
            print "<input type='text' name='text' size='50' value='".$row['text']."'>\n";
            print "<input type='hidden' name='id' value='".$row['id']."'>\n";
            print "<br>\n";
            print "<input type=submit name='SUBMIT' value='senden'>\n";
            print "</form>\n";
        }
		mysql_close($dbverbindung);
    }
    elseif($_GET['action'] == "insert")
    {
        print "<form action='".$_SERVER['PHP_SELF']."?action=insert' method='post'>\n";
        print "Text Eingabe: <br>\n";
        print "<input type='text' name='text' size='50'>\n";
        print "<br>\n";
        print "<input type=submit name='SUBMIT' value='senden'>\n";
        print "</form>\n";
    }
    else
    {
        print "<a href='".$_SERVER['PHP_SELF']."?action=insert'> Neuer Eintrag.</a>\n";
        print "<a href='".$_SERVER['PHP_SELF']."?action=update'> Eintrag bearbeiten.</a>\n";
    }
}
?>
Ändere nur die Variablen $host - $tabelle. Mehr nicht ! Keinen HTML Code hinzufügen. ( Kannst das ganze auch erstmal versuchen ohne den Variablen einen Wert zugeben )
Wenn du diese dann im Browser aufrufst musst du 2 Links sehen "Neuer Eintrag." und "Eintrag bearbeiten."
Ist das nicht der Fall stimmt was mit dem Webserver nicht.

Oder hier die fertige PHP-File.
Lad die einfach hoch.
 

Anhänge

Zurück