unleashed
Goto Top

UPDATE MySQL Befehl von Formular funktioniert nicht

Hallo, versuch eine hardware liste zu erstellen. Update Funktion auf die mysql DB funktioniert nicht.

Hallo,
Ich soll eine Hardwareliste für meinen Admin machen.
Die Ausgabe wenn Daten in der MySQL-DB drinstehen hab ich schon. Neue PC´s eintragen hab ich auch schon fertig und funktionieren auch prima nur das ändern der Datensätze fehlt mir noch.

Mein Problem ist das wenn ich auf Speichern drücke er mir den SQL-Befehl nicht ausführt. Auch die Echo´s in der if wo der Sql-Befehl liegt werden nicht angezeigt. Ich bekomm eine ganz leere Seite zurück.
In das Formular nimmt er die aktuellen Daten von der Datenbank schon mithinein. Die Select Befehle funktionieren also alle.


Ich werd hier mal das ganze Skript posten.

Kleine Info noch. Ich geh von der Seite wo ich die PC`s aufliste mit einem link auf die bearbeitungs Seite.
<a href="bearbeiten.php?action=' . $_POST['ID'] .'">Bearbeiten</a>

Damit Ihr wisst woher die ID kommt.

Bei den echo´s vor dem SQL-Befehl kommen folgende werte gleich wenn ich die Seite aufrufe heraus:

var_dump ($_POST); = array(1) { ["action"]=> string(1) "1" }
var_dump ($_POST['sp']); = NULL
var_dump ($_POST['action']); = string(1) "1"


Vielleicht kann mir einer von euch helfen und findet den kleinen Fehler


<?php 

require_once("db_config.php");  

$db_sel = mysql_select_db( 'hardwareliste');  


$pc_sel = mysql_query("SELECT user, ID FROM hardware_list ORDER BY user");  

		echo '  
		<html>
			<head>
			<link rel="stylesheet" type="text/css" href="style.css">  
			</head>
		<body class="eintrag">  
		
			<form name="PC bearbeiten" action="'. $_SERVER['PHP_SELF'] . '"   
				method="POST" enctype="text/html">';  
		

		
//Wird dann angezeigt wenn man einen PC ausgewählt hat. 
if ( $_GET['action'] != "")  
{
	$_POST = $_GET;

	
	//Auswahl für die Aktuellen-Daten des PC´s
$alt_erg 	= mysql_query("SELECT * FROM hardware_list WHERE ID = ". $_POST['action'] ." ORDER BY pc_name");  
$alt_dat 	= mysql_fetch_array ($alt_erg);
	

	
// Auswahl der anderen Daten von verschiedenen Tabellen
$lie_erg 	= mysql_query("SELECT li_name FROM hw_lieferanten ORDER BY li_name");  
$of_erg 	= mysql_query("SELECT of_name FROM hw_office ORDER BY of_name");  
$os_erg 	= mysql_query("SELECT os_name FROM hw_operation_sys ORDER BY os_name");  
$he_erg 	= mysql_query("SELECT he_name FROM hw_hersteller ORDER BY he_name");  
$pers_erg	= mysql_query("SELECT pers_nachname, pers_vorname FROM person ORDER BY pers_nachname");  
$art_erg 	= mysql_query("SELECT art_name FROM hw_art ORDER BY art_name");  
$lauf_erg	= mysql_query("SELECT laufwerke_name FROM hw_laufwerke ORDER BY laufwerke_name");  
$ip_erg 	= mysql_query("SELECT ip_nummer FROM hw_ip ORDER BY ip_nummer");  
$spei_erg	= mysql_query("SELECT speicher_name FROM hw_speicher ORDER BY id");  
	
	
	
	
	
//Ausgabe des Formulars
			
echo '			  
<center>
<p><b>PC bearbeiten.</b></p>

<table border="0px" class="eintrag">  
<tr >
   <td>PC-NAME: </td>
   <td><input type="text" name="pc_name" value="'. $alt_dat['pc_name'] .'" size="50" maxlenght="50" /></td>  
</tr>
					
<tr>
    <td>USER: </td>
<td>
<select size="1" name="user">  
						
<!-- Alten Datensatz Anzeigen.-->
<option value="'. $alt_dat['user'].'">'. $alt_dat['user'].'</option>';  
							
// Datensatz aus Tabelle anzeigen 					
while ($datensatz = mysql_fetch_array ($pers_erg))
{	
									
echo '<option value="'. $datensatz['pers_nachname'] .', '. $datensatz['pers_vorname'] .'">'  
	. $datensatz['pers_nachname'] .', '. $datensatz['pers_vorname'].'</option>\n';  
}
echo '</select>  
</td>
</tr>

<tr>

<td>Kauf- Monat/Jahr: </td>

<td>M<input type="text" name="kaufmonat" value="'.$alt_dat['kauf_m'] .'" size="2" maxlenght="2" />  
J<input type="text" name="kaufjahr" value="'.$alt_dat['kauf_j'] .'" size="4" maxlenght="4" /></td>  
</tr>
					
<tr>
<td>Bauart: </td>
<td>
<select size="1" name="art" >  
						
<!-- Alten Datensatz -->
<option value="'. $alt_dat['art'] .'">'. $alt_dat['art'] .'</option>';  
							
// Datensatz aus Tabelle anzeigen
while ($datensatz = mysql_fetch_array($art_erg))
{
echo '<option value="'. $datensatz['art_name'] .'">'  
.$datensatz['art_name'] .'</option>\n';  
}
echo '</select>  
</td>
</tr>
					
<tr>
<td>Hersteller: </td>
<td>
<select size="1" name="hersteller" >  
							
<!-- Alten Datensatz -->
<option value="'. $alt_dat['hersteller'] .'">'. $alt_dat['hersteller'] .'</option>';  

// Datensatz aus Tabelle anzeigen
while ($datensatz = mysql_fetch_array($he_erg))
{
echo '<option value="'. $datensatz['he_name'] .'">'  
. $datensatz['he_name'] .'</option>\n';  
}
echo '</select>  
</td>			
</tr>
					
<tr>
<td>Leasing/Kauf: </td>
<td>
<input type="radio" name="kaufart" value="Leasing" size="10" maxlenght="10" />Leasing<br>  
<input type="radio" name="kaufart" value="Kauf" size="10" maxlenght="10" />Kauf<br>  
<input type="radio" name="kaufart" value="Eigen Bau" size="10" maxlenght="10" />Eigen Bau</td>  
</tr>
					
<tr>
<td>Lieferant: </td>
<td>
<select size="1" name="lieferanten" >  

<!-- Alten Datensatz -->
<option value="'. $alt_dat['lieferanten'] .'">'. $alt_dat['lieferanten'] .'</option>';  
	
// Datensatz aus Tabelle anzeigen.
while ($datensatz = mysql_fetch_array ($lie_erg))
{
echo '<option value="'. $datensatz['li_name'] .'">'  
. $datensatz['li_name']. '</option>\n';   
}
echo '</select>  
</td>
</tr>
					
<tr>
<td>Lieferanten-Nummer: </td>
<td><input type="text" name="lieferanten_nummer" value="'.$alt_dat['lieferanten_nr'] .'" size="20"   
maxlenght="20"/></td>  
</tr>
					
<tr>
<td>Inventar-Nummer: </td> 
<td><input type="text" name="inventar_nummer" value="'.$alt_dat['inventar_nummer'].'"   
size="20" maxlenght="50" /></td>  
</tr>
					
<tr>
<td>Office-Version: </td>
<td>
<select size="1" name="office">  
<option value="'.$alt_dat['office'] .'">'.$alt_dat['office'].'</option>';  
while ($datensatz = mysql_fetch_array ($of_erg))
{
echo '<option value="'. $datensatz['of_name'] .'">'. $datensatz['of_name']. '</option>';  
}			
echo '</select>  
</td>
</tr>
<tr>
<td>Betriebssystem: </td>
<td>
<select size="1" name="operation" >  
<option value="'. $alt_dat['operation'].'">'. $alt_dat['operation'].'</option>';  
while ($datensatz = mysql_fetch_array($os_erg))
{
echo '<option value="'. $datensatz['os_name'] .'">'. $datensatz['os_name'] .'</option>';  
}
echo '</select>  
</td>
</tr>
					
<tr>
<td>IP-Adresse: </td>
<td>
<select size="1" name="ip-adressen_vorne">  
<option value="'. $alt_dat['ip_adresse_a'].'">'. $alt_dat['ip_adresse_a'].'</option>';  
while ($datensatz =mysql_fetch_array($ip_erg))
{
echo '<option value="'. $datensatz['ip_nummer'] .'">'. $datensatz['ip_nummer'] .'</option>';  
}
echo '</select>  
<input type="text" name="ip-adresse_endung" value="'.$alt_dat['ip_adresse_b'] .'" size="4"   
maxlenght="50" />  
</td>
</tr>
					
<tr>
<td>Motherboard: </td>
<td><input type="text" name="motherboard" value="'. $alt_dat['motherboard'] .'" size="20"   
maxlenght="50" /></td>  
</tr>
					
<tr>
<td>Grafikkarte: </td>
<td><input type="text" name="grafikkarte" value="'.$alt_dat['grafik'] .'" size="20"   
maxlenght="50" /></td>  
</tr>
					
<tr>
<td>Arbeitsspeicher: </td>
<td>
<select size="1" name="arbeitsspeicher">  
<option value="'.$alt_dat['speicher'] .'">'.$alt_dat['speicher'].'</option>';  
while ($datensatz = mysql_fetch_array($spei_erg))
{
echo '<option value="'. $datensatz['speicher_name'] .'">'. $datensatz['speicher_name'] .'</option>';  
}
echo '</select>  
</td>
</tr>
					
<tr>
<td>CPU: </td>
<td><input type="text" name="cpu" value="'. $alt_dat['cpu'] .'" size="20" maxlenght="50" /></td>  
</tr>

<tr>
<td>Festplattenspeicher: </td>
<td><input type="text" name="festplattenspeicher" value="'.$alt_dat['hdd'].'" size="20"   
maxlenght="50" /></td>  
</tr>
					
<tr>
<td>Laufwerke: </td>
<td>
<select size="1" name="laufwerke">  
<option value="'.$alt_dat['laufwerk'] .'">'.$alt_dat['laufwerk'] .'</option>';  
while ($datensatz = mysql_fetch_array($lauf_erg))
{
echo '<option value="'. $datensatz['laufwerke_name'] .'">'. $datensatz['laufwerke_name'] .'</option>';  
}
echo '</select>  
</td>
</tr>
</table>
<input type="hidden" name="sp" value="1">  
<input type="Submit" name="speichern" value="Speichern"/>  
</center>
</form>
</body>
</html>';  

							
//SQL-Befehl
var_dump ($_POST);
echo ('<br>');  
var_dump ($_POST['sp']);  
echo ('<br>');  
var_dump ($_POST['action']);  

if ( $_POST['sp'] == "1")  
{
echo ('Eintrag wurde geändert.');  
echo ('<br>');  
var_dump ($_POST['sp']);  
								
$sql = " UPDATE hardware_list ";  
$sql .= " SET ";  
$sql .= " pc_name = '". $_POST['pc_name']."', ";  
$sql .= " user = '". $_POST['user'] ."', ";  
$sql .= " art = '". $_POST['art'] ."', ";  
$sql .= " kauf_m = '". $_POST['kaufmonat'] ."', ";  
$sql .= " kauf_j = '". $_POST['kaufjahr'] ."', ";  
$sql .= " hersteller = '". $_POST['hersteller'] ."', ";  
$sql .= " kauf_leasing = '". $_POST['kaufart'] ."', ";  
$sql .= " inventar_nummer = '". $_POST['inventar_nummer'] ."', ";  
$sql .= " lieferanten = '". $_POST['lieferanten'] ."', ";  
$sql .= " lieferanten_nr = '". $_POST['lieferanten_nummer'] ."', ";  
$sql .= " ip_adresse_a = '". $_POST['ip-adressen_vorne'] ."', ";  
$sql .= " ip_adresse_b = '". $_POST['ip-adresse_endung'] ."', ";  
$sql .= " operation = '". $_POST['operation'] ."', ";  
$sql .= " office = '". $_POST['office'] ."', ";  
$sql .= " motherboard = '". $_POST['motherboard'] ."', ";  
$sql .= " grafik = '". $_POST['grafikkarte'] ."', ";  
$sql .= " speicher = '". $_POST['arbeitsspeicher'] ."', ";  
$sql .= " cpu = '". $_POST['cpu'] ."', ";  
$sql .= " hdd = '". $_POST['festplattenspeicher'] ."', ";  
$sql .= " laufwerk = '". $_POST['laufwerke'] ."'";  
$sql .= " WHERE ID = '". $_POST['action'] ."'";  

echo ($sql);
								
$db_erg = mysql_query ($sql);
								
if ( ! $db_erg)
{
die ('Ungültiger Abfrage: '. mysql_error());  
}

								
}echo ($sql);	
}
?>

Content-Key: 114849

Url: https://administrator.de/contentid/114849

Printed on: April 25, 2024 at 15:04 o'clock

Member: godlie
godlie Apr 28, 2009 at 12:41:22 (UTC)
Goto Top
Hallo,
bring den Code mal in eine lesbare Form, dann kann man mal darüber sehen so ist das Zeug unlesbar.

grüße
Member: nxclass
nxclass Apr 28, 2009 at 18:44:22 (UTC)
Goto Top
- mach am Anfach den Scripts mal immer:
echo 'POST: ' . print_r($_POST,true) . "<br>\n";  
echo 'GET: ' . print_r($_GET,true) . "<br>\n";  
und prüfe ob die Formular Daten deinen Vorstellungen entsprechen.

- schon mal den Befehl 'addslashes()' benutzt !?

- prüfe mal den generierten HTML code (wird dein FORM auch immer geschlossen ?)

PS:
// für HTML Code mit einfachen Variablen...
echo <<<__HTML__
<h1>{$array[$key])</h1>
__HTML__; 

// ebenso kann man sich die SQL Befehle so besser anschauen
$sql = <<<__SQL__
SELECT `wert`
FROM `tabelle`
WHERE `anderer_wert` = {$value};
__SQL__;
Member: Unleashed
Unleashed Apr 29, 2009 at 07:38:28 (UTC)
Goto Top
Hi nxclass

Form wird geschlossen.

also wenn ich die Seite das erste mal aufrufe bekomm ich bei POST nichts rein und bei GET

GET: Array ( [action] => 1 )

So wenn ich jetzt was eintrage bekomm ich das.

POST: Array ( [pc_name] => sdfgsfdgsdfg [user] => [kaufmonat] => [kaufjahr] => [art] => [hersteller] => [lieferanten] => [lieferanten_nummer] => [inventar_nummer] => [office] => [operation] => [ip-adressen_vorne] => [ip-adresse_endung] => [motherboard] => sdfgsdfg [grafikkarte] => [arbeitsspeicher] => [cpu] => [festplattenspeicher] => [laufwerke] => [speichern] => Speichern )
GET: Array ( [action] => 1 ) 

Hab bei motherboard nur was eingetragen, das bei pc_name stand schon drin. also werden daten schon übergeben.

Bezüglich des Befehls 'addslashes()', sehe den Verwendungszweck des Befehls in meinem Skript nicht.

Das mit der Formatierung. ja stimm oke ich werds bei mir mal ändern. ^^

Merci.
Member: nxclass
nxclass Apr 29, 2009 at 09:37:11 (UTC)
Goto Top
ok ... dann ändere doch mal die Zeile 267 in
if ( $_POST['speichern'] == "Speichern")  
dann ist das versteckte Input Feld (sp) auch nicht nötig.

Den Sinn des 'addslashes()' Befehls wird Dir klar, wenn mal sowas wie ' in deinen Variablen für die SQL Anweisung seht.

Musst Du in der Zeile 26 das gesamte $_POST Array überschreiben ? -evtl. gehen da Daten verloren !?
Wenn Du dir nicht sicher bist ob die Daten über 'post' oder 'get' kommen, benutze doch $_REQUEST.

.. nun sollte er aber ein SQL String bauen und ausführen !? Wie sieht den der SQL String aus ?
Member: Unleashed
Unleashed Apr 29, 2009 at 09:50:05 (UTC)
Goto Top
hey Danke hab selber gefunden.

und zwar.:

Er hat mir die ID nicht mitgenommen. Hab jetzt alles in $_GET gemacht und in der if ne isset gesetzt.
Jetzt geht er mir rein. zeigt den sql string an und führt ihn auch aus. Problem war dann nur noch mit der ID.

Hab den Feld gemacht wo er die ID von $_GET['action'] auf nen anderen namen gesetzt hat. in meinem fall ist es jetzt pc-id. der wird angezeigt und value auch wieder weiter gegebn jetzt funktioniert es.

Wenn du Willst kann ich dir den ganzen Code auch nochmal schicken.

Aber Thema ist damit gelöst.
Member: masterG
masterG May 02, 2009 at 06:33:59 (UTC)
Goto Top
Zitat von @Unleashed:
Aber Thema ist damit gelöst.


Und damit closed