# Mysql update per Formular geht nicht



## Cyberlord (19. August 2003)

huhu @ll
Ich bin echt am Verzweifeln normal müsste das doch so gehen aber er speichert die sachen einfach nicht in der db hab ihr n tip für mich?

Bye

```
<?
$host = "xxxxxx";
$user = "xxxxxx";
$password = "xxxxxx";
$dbname = "data2";
$tabelle = "test";
$id = '2';


$dbverbindung = mysql_connect ($host, $user, $password);

$dbanfrage = "select * from $tabelle WHERE id = '$id'";
$res = mysql_db_query ($dbname, $dbanfrage, $dbverbindung);

while ($ausgabe = mysql_fetch_array ($res))
{
echo "<form name='form1' method='post' action='$PHP_SELF'>";
echo "<input type='text' name='id' value='$id'>";
echo "<input type='text' name='1' value='$ausgabe[1]'>";
echo "<input type='text' name='2' value='$ausgabe[2]'>";
echo "<input type='submit' name='submit' value='Ändern'>";
echo "</form>";
}
if ($submit) {
$update = " UPDATE $tabelle SET 1='$ausgabe[1]', 2 = '$ausgabe[2]' WHERE id = '$id'";
$updaten = mysql_query($update);

if (!$updaten)
echo "Fehler aufgetreten!";
else
      {
        echo "Eintrag erfolgreich";
    }

}
?>
```


----------



## melmager (19. August 2003)

ich kann mir nicht vorstellen das dein tabellen 1 und 2 heissen 

UPDATE $tabelle SET 1='$ausgabe[1]', 2 = '$ausgabe[2]' WHERE id = '$id'";

ansonsten hilft immer 

$updaten = mysql_query($update) or die(mysql_error());


----------



## Cyberlord (19. August 2003)

da bekomm ich diese fehlermeldung ich wüsste aber nicht was da falsch wäre

Fehler in der Syntax bei '1 ='', 2 = '' WHERE id = '2'' in Zeile 1.

EDIT
OK der fehler ist beseitigt es lag daran das der mit 1 und 2 wohl ned zurecht kommt bzw. reserviert wird habs jetzt mal in test1 und test2 umbenannt jetzt ist die fehlermeldung weg und es kommt Eintragung Erfolgreich aber trägt nix ein das was drinstand löscht er raus trägt aber nix neues ein
hier nochmal der geänderte quelltext

```
<?
$host = "xxxxxx";
$user = "xxxxxx";
$password = "xxxxxx";
$dbname = "data2";
$tabelle = "test";
$id = '2';

$dbverbindung = mysql_connect ($host, $user, $password);

$dbanfrage = "select * from $tabelle WHERE id = '$id'";
$res = mysql_db_query ($dbname, $dbanfrage, $dbverbindung);

while ($ausgabe = mysql_fetch_array ($res))
{
echo "<form name='form1' method='post' action='$PHP_SELF'>";
echo "<input type='text' name='id' value='$id'>";
echo "<input type='text' name='test1' value='$ausgabe[test1]'>";
echo "<input type='text' name='test2' value='$ausgabe[test2]'>";
echo "<input type='submit' name='submit' value='Ändern'>";
echo "</form>";
}
if ($submit) {
$update = " UPDATE $tabelle SET test1 = '$ausgabe[test1]', test2 = '$ausgabe[test2]' WHERE id = '$id'";
$updaten = mysql_query($update) or die(mysql_error());

if (!$updaten)
echo "Fehler aufgetreten!";
else
      {
        echo "Eintrag erfolgreich";
    }

}
?>
```


----------



## eLorFiN (20. August 2003)

Jop, es stimmt nicht ganz, Spaltennamen dürden nicht mit einer Zahl beginnen, nur wundere ich mich, wie du denn bitte eine Tabelle mit solchen Spalten hinbekommen hast, mein SQL hätte da schon Streß gemacht.

Achte des Weiteren auch auf deine Leerzeichen, ansonsten passt ja alles.


----------



## Patrick Kamin (20. August 2003)

*-*

Du nennst deine Input-Felder test1 und test, also musst du auch auf diese Variablen zugreifen und nicht auf den Value-Wert.


----------



## Cyberlord (20. August 2003)

*Re: -*



> _Original geschrieben von Patrick Kamin _
> *Du nennst deine Input-Felder test1 und test, also musst du auch auf diese Variablen zugreifen und nicht auf den Value-Wert. *



da lag der fehler habs nun geschafft anstatt 

```
$ausgabe[test1]
```
hätte ich nur

```
$test1
```
schreiben sollen 

Danke für eure hilfe


----------



## Gast (21. Juli 2009)

Wenn ich von einem Formular Daten abschicke, sollen Sie den Inhalt der DB updaten.
Ich versuche es mit dieser Anweisung:

<?php

mysql_select_db($database_vezzDB, $vezzDB);
$query_sql = "SELECT * FROM gewinnspiel  WHERE partner= '".$_POST['partner']."'";
$sql = mysql_query($query_sql, $vezzDB) or die(mysql_error());
$row_sql = mysql_fetch_assoc($sql);
$totalRows_sql = mysql_num_rows($sql);

?>
<?php 

 $sql = ("UPDATE gewinnspiel SET 
 gewinn = '".$_POST['gewinn']."', bildurl = '".$_POST['bildurl']."', partner = '".$_POST['partner']."',
 strasse = '".$_POST['strasse']."', hausnr = '".$_POST['hausnr']."', ort = '".$_POST['ort']."', plz = '".$_POST['plz']."', 
 tel = '".$_POST['tel']."', oeffnungszeit = '".$_POST['oeffnungszeit']."', url = '".$_POST['url']."'") or die(mysql_error());

?>

Es klappt einfach nicht. Wo liegt mein Fehler?


----------



## evercan (14. Dezember 2010)

Cyberlord hat gesagt.:


> da lag der fehler habs nun geschafft anstatt
> 
> ```
> $ausgabe[test1]
> ...



Wie genau meinst du das?
Ich habe mir deinen Code als Vorlage genommen um auch ein Updatescript zu schreiben.
Bei mir speichert er auch nicht ..


```
<?php
mysql_connect("localhost", ",meinusername", "meinpasswort")
    or die("Keine Verbindung möglich: " . mysql_error());
mysql_select_db("meineddb");

$result = mysql_query("SELECT id, artnr, videoid FROM youtubevideos ORDER BY id DESC");
?>
<table align="center" border="1" cellpadding="0" cellspacing="0">
<?php
while ($row = mysql_fetch_array($result))
{
    echo "<form name='form1' method='post' action='$PHP_SELF'>"; 
	?>
    <tr>
    <td align="center" style="padding:10px">
	<?php echo "<input type='hidden' name='id' value='$row[id]'>"; ?>
	<?php echo $row[id];?></td>
    <td align="center" style="padding:10px">
	<?php echo "<input type='text' name='artnr' value='$row[artnr]'>"; ?>
	<?php //echo $artnr;?></td>
    <td align="center" style="padding:10px"></td>
    <td align="center" style="padding:10px"></td>
    <td align="center" style="padding:10px">
	<?php echo "<input type='text' name='videoid' value='$row[videoid]'>"; ?>
	<?php //echo $videoid;?></td>
    <td><?php echo "<input type='submit' name='submit' value='Ändern'>"; ?></td>
    </tr>
    <?php echo "</form>";
}
	if ($submit)
{ 
	$update = "UPDATE youtubevideos SET artnr = '$artnr', videoid = '$videoid' WHERE id = '$id'"; 
	echo $update;
	$updaten = mysql_query($update) or die(mysql_error()); 

	if (!$updaten) 
	echo "Fehler aufgetreten!"; 
	else 
    { 
    	echo "Eintrag erfolgreich"; 
    } 
} 
?>
</table>
```

Kann mir einer sagen wo ich da den Fehler haben?
Bin noch nicht so bewandert im php .. arbeite noch drann


----------



## Yaslaw (14. Dezember 2010)

Wird das SQL-Statement zurückgegeben oder der Text "Eintrag erfolgreich" ?
Ansonsten:


> Da die diese Art von Fragen sehr oft kommt, habe ich mal ein Tutorial geschrieben wie man am besten auf Fehlersuche geht.
> PHP MySQL Debug Queries
> Geh es doch mal durch und falls du die Lösung nicht findest, poste mal das ausgegebe SQL-Statement ins Forum.


----------



## evercan (14. Dezember 2010)

Hey das ging schnell 
Nein, das SQL Statement wird nicht ausgegeben. Die Seite wird einfach nur neu geladen und die Änderungen nicht in die MySQL Datenbank geschrieben.


----------



## Yaslaw (14. Dezember 2010)

Das Script wurde wahrscheinlich mit PHP4 geschrieben. Damals war es üblich, dass Post-Variablen direkt zur Verfügung standen. Das ist mit PHP5 nicht mehr der Fall
Also musst du alle Variablen die aus dem Formular kommen mit $_POST['variablennamen'] abholen

```
if ($_POST['submit'])
{ 
    $update = "UPDATE youtubevideos SET artnr = '{$_POST['artnr']}', videoid = '{$_POST['videoid']}' WHERE id = '{$_POST['$id']}'";
```

Wobei du die Variabeln die du für das SQL brauchst noch mit mysql_real_escape_string() parsen solltest


----------



## evercan (14. Dezember 2010)

Ich danke dir !
Jetzt habe ich es hinbekommen.
Das einzige was jetzt noch ist, ist das nach der Änderung die Anzeige erst nach einem manuellen Reload der Seite angezeigt werden.

Mal sehen wie ich das hinbekomme ...


----------



## Yaslaw (14. Dezember 2010)

Die Reihenfolge umdrehen


```
<?php
//TODO: DB-Connection herstellen
if(isset($_POST['submit']){
    //TODO: Daten in DB schreiben
}
//TODO: Daten aus DB lesen
//TODO: Form schreiben
```


----------



## evercan (14. Dezember 2010)

Vielen Dank!
Auch wie schnell das hier ging  Großes Lob!

Hier dann mal der komplette Code wie ich ihn nutze und wie er funktioniert:


```
<?php
//error_reporting(E_ALL);
mysql_connect("localhost", "dein-dbuser", "dein-dbpasswort") or die("Keine Verbindung möglich: " . mysql_error());
mysql_select_db("dein-dbname");
	if ($_POST['submit'])
	{ 
    $update = "UPDATE tabellennamen SET feld1 = '{$_POST['feld1']}', feld2 = '{$_POST['feld2']}' WHERE id = '{$_POST['id']}'";  
	echo $update."<br>";
	$updaten = mysql_query($update) or die(mysql_error()); 

if (!$updaten) 
echo "Fehler aufgetreten!"; 
else 
      { 
        echo "Eintrag erfolgreich"; 
    } 

} 

$result = mysql_query("SELECT id, feld1, feld2 FROM tabellennamen ORDER BY id DESC");
?>
<table align="center" border="1" cellpadding="0" cellspacing="0">
<tr>
    <td align="center" style="padding:10px"><strong>ID</strong></td>
    <td align="center" style="padding:10px"><strong>Feld1</strong></td>
    <td align="center" style="padding:10px"><strong>Feld2</strong></td>
    <td>Update</td>
    </tr>
<?php
while ($row = mysql_fetch_array($result))

{
    // printf ("ID: %s  Name: %s", $row[0], $row["videoid"]);
	//$videoid = $row["videoid"];
	//$artnr = $row["artnr"];
	$id = $row["id"];
	//echo "ID:&nbsp;<strong>".$id."</strong>&nbsp;Artikelnummer:&nbsp;<strong>".$artnr."</strong>&nbsp;Youtubevideo:&nbsp;<strong>".$videoid."</strong><br>";
	echo "<form name='form1' method='post' action='dateiname.php'>"; 
	?>
    <tr>
    <td align="center" style="padding:10px">
	<?php echo "<input type='hidden' name='id' value='$row[id]'>"; ?>
	<?php echo $row["id"];?></td>
    <td align="center" style="padding:10px">
	<?php echo "<input type='text' name='feld1' value='$row[feld1]'>"; ?>
    <td align="center" style="padding:10px">
	<?php echo "<input type='text' name='feld2' value='$row[feld2]'>"; ?>
    <td><?php echo "<input type='submit' name='submit' value='Ändern'>"; ?></td>
    </tr>
    <?php echo "</form>";
} 
?>
</table>
```


----------

