Datenupdate mit PHP

Allytools

Grünschnabel
Hallo,

Ich habe bei meinem Script das Problem, dass ein Update der Daten nicht funktioniert.

Funktionsbeschreibung:

Das Script liest die DB aus und schreibt die Daten in eine Tabelle.
In der Tabelle sollen dann folgende Befehle behandelt werden:
  1. Update --> Daten die Unvollständig sind sollen von Hand ergänzt werden und dann neu gespeichert
  2. Installation --> Es soll ein Installationsscript mit den Daten gestartet werden (kommt später)
  3. Löschen --> Der Datensatz soll gelöscht werden

Die Funktion "Löschen" funktioniert einwand frei

Die Funktion "Installation" ist noch in arbeit

Die Funktion "Update" funktioniert nur zum Teil. (eigendliches Problem)
Es wird zwar die SQL-Anweisung ausgeführt, aber es werden keine Daten in der DB gändert.
Woran kann das liegen?



PHP:
<?php

include ('ctracker.php');

print_r($_POST);

require "config.php";
include_once "functions.inc.php";
include "attributes.php";


mysql_connect($dbhost, $dbusername, $dbpassword) or die(PARSER_ERROR3);
mysql_select_db($admin_dbname) or die(mysql_error());


// Datensatz löschen
if (isset($_GET['delete']) && is_numeric($_GET['delete']))
{
    $id = (int)$_GET['delete'];
    $sql_data_delete = "DELETE FROM $tools WHERE id='$id' LIMIT 1";
    $qry_data_delete = mysql_query($sql_data_delete)
            or die(mysql_error());

        if($qry_data_delete)    {
            $message = "<span style=\"color:#ff0000;font-weight:bold;\">Datensatz erfolgreich gelöscht</span>";
        }else{
            $message = "<span style=\"color:#ff0000;font-weight:bold;\">Datensatz konnte nicht gelöscht werden</span>";
        }
}


// Update Datensatz
if (isset($_GET['update']) && is_numeric($_GET['update']))
{
    $id = (int)$_GET['update'];
    $sql_data_update  = "UPDATE $tools SET link_forum='".$_GET['forum']."', db_name='".$_GET['db']."' WHERE id='$id'";
    $qry_data_update = mysql_query($sql_data_update)
            or die(mysql_error());

        if($qry_data_update)    {
            $message = "<span style=\"color:#ff0000;font-weight:bold;\">Datensatz erfolgreich modifiziert</span>";
        }else{
            $message = "<span style=\"color:#ff0000;font-weight:bold;\">Datensatz konnte nicht modifiziert werden</span>";
        } 
}

makeheader(ToolOrder);
?>
<table cellpadding="1" cellspacing="0" border="0" align="center" width="99%"><tr><td>
<table class="standard" cellpadding="4" cellspacing="0" border="0" width="100%" style="margin-top:50px;">
<tr class="tblhead"><td colspan="9">Tool Order</td></tr>
<tr class="firstcolor">
		<td align="center">Name</td>
		<td align="center">Uni</td>
		<td align="center">Forum</td>
		<td align="center">Mail</td>
		<td align="center" width="15" height="15">&nbsp;</td>
		<td align="center">Datenbank</td>
		<td align="center">Update</td>
		<td align="center">Install</td>
		<td align="center">Löschen</td></tr>
		
<?php
echo '<tr class="firstcolor"><td align="center" colspan="9">'.$message.'</td></tr>';

$query = "SELECT * FROM $tools ORDER BY date_anfrage DESC";
$res = mysql_query($query) or die(mysql_error());
while ($line = mysql_fetch_object($res))
{

    switch ($line->ally)
    {
        case "1":
            $ally = '<img src="/images/enable.gif">';
            break;

        case "0":
            $ally = '<a href="tool_admin.php?install='. $line->id.'"><img src="images/options.gif" border="0" style="vertical-align: middle;" /></a>';
            break;

    }

    switch ($line->email_ok)
    {
        case "1":
            $email_ok = '<img src="/images/enable.gif">';
            break;

        case "0":
            $email_ok = '<img src="/images/disable.gif">';
            break;

    }

    echo '	<tr class="firstcolor">
    			<td align="center">'.$line->name.'</td>
				<td align="center">'.$line->uni.'</td>
				<td align="center"><input type="text" name="forum" size="20" value='.$line->link_forum.'></td>
				<td align="center">'.$line->email.'</td>
				<td align="center" width="15" height="15">'.$email_ok.'</td>
				<td align="center"><input type="text" name="db" size="12" value='.$line->db_name.'></td>
				<td align="center"><a href="tool_admin.php?update='.$line->id.'"><img src="images/global_edit.gif" border="0" style="vertical-align: middle;" /></a></td>
				<td align="center">'.$ally.'</td>
				<td align="center"><a href="tool_admin.php?delete='.$line->id.'"><img src="images/delete.gif" border="0" style="vertical-align: middle;" /></a></td></tr>'."\n";


}
if (mysql_num_rows($res) == 0)
{
    echo '<tr class="firstcolor"><td align="center" colspan="9">Keine Einträge</td></tr>';
}

?>
</table>

</table>

<?php
makefooter();
?>
 
Hallo,
also wenn ich das jetzt richtig interpretiert hab, dann rufst du mit dem Link
<a href="tool_admin.php?update='.$line->id.'"> die Updatefunktion auf
und willst dann auf die Variablen $_GET['forum'] und $_GET['db'] zugreifen, die aber garnicht mitübertragen werden?!
Sehe auch nirgends ein Formular. --> Die gewünschten Daten kommen nicht beim Script an.
MfG
 
Uups :rolleyes:

Habe nun ein Formular eingebaut, aber wie bekomme ich nun die Variablen mitübertragen?

PHP:
<?php
    echo '	<tr class="firstcolor">
    			<form action="" method="post">
    			<td align="center">'.$line->name.'</td>
				<td align="center">'.$line->uni.'</td>
				<td align="center"><input type="text" name="forum" size="20" value='.$line->link_forum.'></td>
				<td align="center">'.$line->email.'</td>
				<td align="center" width="15" height="15">'.$email_ok.'</td>
				<td align="center"><input type="text" name="db" size="12" value='.$line->db_name.'></td>
				<td align="center"><a href="tool_admin.php?update='.$line->id.'"><img src="images/global_edit.gif" border="0" style="vertical-align: middle;" /></a></td>
				<td align="center">'.$ally.'</td>
				<td align="center"><a href="tool_admin.php?delete='.$line->id.'"><img src="images/delete.gif" border="0" style="vertical-align: middle;" /></a></td>
				</form>
			</tr>'."\n";
?>
 
Wo und wie sollen denn die Daten, die upgedatet werden sollen, eingegeben werden ?
Du kannst in dem Formular z.B. mit versteckten Feldern die Daten übergeben, oder auch mit an den Link anhängen, dann bleibt aber immernoch offen, woher die Werte stammen.

MfG
 
Wo und wie sollen denn die Daten, die upgedatet werden sollen, eingegeben werden ?
Du kannst in dem Formular z.B. mit versteckten Feldern die Daten übergeben, oder auch mit an den Link anhängen, dann bleibt aber immernoch offen, woher die Werte stammen.

MfG
Die Daten sollen aus der DB in ein Textfeld geladen, bei bedarf geändert und dann in der DB geupdatete werden.
PHP:
<?php
<td align="center"><input type="text" name="forum" size="20" value='.$line->link_forum.'></td>

<td align="center"><input type="text" name="db" size="12" value='.$line->db_name.'></td>
?>

Wenn man die Daten dem Link mit anhängen kann wäre das super.
 
Mh hab ich übersehn sorry, Tomaten auf den Augen ;)

Damit die Daten per Browserzeile übertragen werden, musst du dein Formular mittels GET übertragen (method="get") und das ganze Formular noch mit einem Submit-Button o.Ä. abschicken. In deinem Beispiel z.B. das .gif nutzen.
 
Danke für die Hilfe.

Habe es nun so gelöst:
PHP:
<?php
    echo '	<tr class="firstcolor">
    			<form action="" method="get">
    			<td align="center">'.$line->name.'</td>
				<td align="center">'.$line->uni.'</td>
				<td align="center"><input type="text" name="forum" size="20" value='.$line->link_forum.'></td>
				<td align="center">'.$line->email.'</td>
				<td align="center" width="15" height="15">'.$email_ok.'</td>
				<td align="center"><input type="text" name="db" size="12" value='.$line->db_name.'></td>
				<td align="center"><input type="hidden" name="update" value='.$line->id.' />
								   <input type="submit" class="images" name="" value="Update" /></td>
				<td align="center">'.$ally.'</td>
				<td align="center"><a href="tool_admin.php?delete='.$line->id.'"><img src="images/delete.gif" border="0" style="vertical-align: middle;" /></a></td>
				</form>
			</tr>'."\n";
?>

und das Formular wir so verarbeitet:
PHP:
<?php
// Update Datensatz
if (isset($_GET['forum']) && ($_GET['db'])  && is_numeric($_GET['update']))
{
    $id = (int)$_GET['update'];
    $sql_data_update  = "UPDATE $tools SET link_forum='".$_GET['forum']."', db_name='".$_GET['db']."' WHERE id='$id'";
    $qry_data_update = mysql_query($sql_data_update)
            or die(mysql_error());

        if($qry_data_update)    {
            $message = "<span style=\"color:#ff0000;font-weight:bold;\">Datensatz Nr. $id erfolgreich modifiziert</span>";
        }else{
            $message = "<span style=\"color:#ff0000;font-weight:bold;\">Datensatz Nr. $id konnte nicht modifiziert werden</span>";
        } 
}
?>

Das mit dem Gif ist nicht so wichtig. Ich kann auch mit dem Button leben :-)

Vielen Dank nochmals.





PS. Wie könnte ich denn das Gif einbauen?
 
z.B. mit einem
HTML:
<input type="image" src="path/to/image.gif">
oder per CSS als Hintergrund-Bild für deinen Submit!

MfG
 
Zurück