Datenbankänderung mit PHP

kojack

Mitglied
Hallo ich bin etwas neu in der PHP Welt, habe auch gleich ein Problem.
In einer webseite die ich gerade für einen Kindergarten programmiere befindet sich eine Box "Termine", die direkt vom Kiga-Personal verändert werden soll. Sprich mini CM.
ich habe also eine DB (Mysql) angelegt "Kiga" mit den Feldern id und text.
Die Ausgabe klappt auch wunderbar nur mit dem ändern hapert es. :confused:Ich habe mich an die tutorials, die hier erschienen sind gehalten aber nichts funktioniert.:(
Das senden der Daten von einem Formular (php) funktioniert ebenfalls aber dann hapert es. Hier das Script:
PHP:
<?php

$host = "xyz";
$user = "abc";
$password = "123";
$dbname = "kiga";
$tabelle ="Termine";
$spalte ="text";
$text =$Array[Text];// dies ist der Wert aus dem Formular//

 {
    echo $text;
	
    }
$dbverbindung = mysql_connect ($host, $user, $password)or die
  ("Keine Verbindung moeglich");
  mysql_select_db("kiga") or die
  ("Die Datenbank existiert nicht");
  ?>
 <?php
  $abfrage = 'SELECT * FROM `Termine` LIMIT 0, 30 ';
  $ergebnis = mysql_query($abfrage);
  while($row = mysql_fetch_object($ergebnis))
    {
    echo $row->text;
	
    }
	
  ?>
 <?php
   $aendern = 'UPDATE `Termine` SET `text` = '$text' WHERE id = 1';
  ?>

 <?php
  $update = mysql_query($aendern);
  ?>

zum testen habe ich mir einige Werte ausgeben lassen. Funktioniert auch.
hier das Formular:
PHP:
<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>

<?php
  mysql_connect("xyz",
  "abc","123") or die
  ("Keine Verbindung moeglich");
  mysql_select_db("kiga") or die
  ("Die Datenbank existiert nicht");
  ?>
 <?php
  $abfrage = 'SELECT * FROM `Termine` LIMIT 0, 30 ';
  $ergebnis = mysql_query($abfrage);
  while($row = mysql_fetch_object($ergebnis))
    {
    echo $row->text;
	
    }
  ?>
Ich bräuchte mal Hilfe.
Hab schon ne Menge getestet,
auch schon mit dem Code von phpmyAdmin.
Nix passiert:confused:
 
Zuletzt bearbeitet:
Hi,

dir fehlt der Zusammenhang mit dem Formular und der SQL Syntax zum Ändern.
http://tut.php-q.net/de/post.html

Du musst überprüfune, ob über $_POST['FORMULAR_Texxtboxnme'] ein Text übergeben wurde,
wenn ja, dann musst du die Query ausführen.

Hast du nur einen Termin in deiner Datenbank?


bo
 
Zuletzt bearbeitet von einem Moderator:
Ja nur ein Termin. Dient erst mal zum testen. Ich habe mir den übergebenen Text über echo anzeigen lassen. Funktioniert
PHP:
$text =$Array[Text];

 {
    echo $text;
	
    }
 
Kanns gerade nicht testen, ob es funktioniert.

Aber in der Regel wird bei Formularen alles über POST oder GET gesendet;
in deinem Fall mit POST.

Lies dich einfach noch ein bisschen in Formulare ein.
Zumal es nicht schlecht ist, wenn du dir den Link durchliest.


bo
 
Hi,
mit diesem Code solltest du schonmal bereits in "Termine" vorhandene daten ändern können:

PHP:
<?php

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


if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
	if($_GET['update'])
	{
		$post_text = $_POST['text']; // dies ist der Wert aus dem Formular//
		$post_id = $_POST['id'];
	
		$dbverbindung = mysql_connect ($host, $user, $password)or die
		("Keine Verbindung moeglich");
		mysql_select_db('$dbname') or die
		("Die Datenbank existiert nicht");
	
		$aendern = "UPDATE `".$tabelle."` SET `text` = '".$post_text."' WHERE id = '".$post_id."'";
	
		mysql_query($aendern);
	}
}
else
{
	$dbverbindung = mysql_connect ($host, $user, $password) or die
		("Keine Verbindung moeglich");
	mysql_select_db('$dbname') or die
		("Die Datenbank existiert nicht");
	$abfrage = 'SELECT * FROM `".$tabelle."` LIMIT 0, 30 ';
	$ergebnis = mysql_query($abfrage);
	while($row = mysql_fetch_array($ergebnis))
    {
		print "<form action='".$_SERVER['PHP_SELF']."?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";
    }
}
?>

das Ganze lässt sich auch noch erweitern für eine Ausgabe und eine Insert-Form. Wenn du dabei auch noch Hilfe brauchst, einfach Bescheid sagen ;)
 
Zuletzt bearbeitet:
Hey,

wäre es nicht besser bzw. übersichtlicher, wenn du den sql_connect Kram außerhalb des if´s legst?

bo
 
PHP:
<?php

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


	$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['update'])
    {    
        $aendern = "UPDATE `".$tabelle."` SET `text` = '".$post_text."' WHERE id = '".$post_id."'";
    
        mysql_query($aendern);
    }
	
	if($_GET['insert'])
    {
        $eingabe = "INSERT INTO ".$tabelle." (text)
					VALUES ('".$post_text."')";
    
        mysql_query($eingabe);
    }
}
else
{
    if($_GET['update'])
	{
		$abfrage = 'SELECT * FROM `".$tabelle."` LIMIT 0, 30 ';
		$ergebnis = mysql_query($abfrage);
		while($row = mysql_fetch_array($ergebnis))
		{
			print "<form action='".$_SERVER['PHP_SELF']."?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['insert'])
	{
		print "<form action='".$_SERVER['PHP_SELF']."?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']."?insert'> Neuer Eintrag.</a>\n";
		print "<a href='".$_SERVER['PHP_SELF']."?update'> Eintrag bearbeiten.</a>\n";
	}
}
mysql_close($dbverbindung);
?>

edit: So wenn ich auf die Schnelle jetzt nichts übersehen hab sollte das alles Funktionieren ^^
 
Zuletzt bearbeitet:
Wenn auch mehr als unsicher. Stichwort MySQLInjection

Schau dir einmal mysql_real_escape_string() an.


e:/ Beim Überfliegen hab ich einen Syntaxfehler im Else-Teil gesehen
Das hier:
PHP:
$abfrage = 'SELECT * FROM `".$tabelle."` LIMIT 0, 30 ';

ist falsch, es muss so sein:
PHP:
$abfrage = 'SELECT * FROM `'.$tabelle.'` LIMIT 0, 30 ';

Den Leuten die gerne "Finde den Unterschied spielen" dürften sofort die Unterschiedlichen Quotes auffallen. Allen anderen hab ich es hiermit mitgeteilt.
 
Zuletzt bearbeitet:
Moment ich lege eben eine DB an und teste das Ganze mal.

:( 2 3 kleine Flüchtigkeitsfehler :p

PHP:
<?php

$host = "localhost";
$user = "root";
$password = "";
$dbname = "dbtest";
$tabelle = "dbtesttab";


    $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.";
    }
    
    if($_GET['action'] == "insert")
    {
        $eingabe = "INSERT INTO ".$tabelle." (text)
                    VALUES ('".$post_text."')";
    
        mysql_query($eingabe);
		print "Daten eingetragen.";
    }
}
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";
        }
    }
    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";
    }
}
mysql_close($dbverbindung);
?>
Bitte schön.
 
Zurück