Wer findet den Fehler im PHP Script?
Hallo Leute,
ich hoffe jemand kann mir weiterhelfen.
Ich stehe wirklich auf der Leitung! :/
Mein Script soll die Daten auslesen und bearbeiten können.
Momentan habe ich folgender Fehler:
Parse error: syntax error, unexpected T_STRING in C:\xampp\htdocs\itdb\test2.php on line 8
Ka, warum!
Ich habe seit dem letzen mal nichts nennenswertes verändert, und seit heute kommt dieser Fehler.
Letzes mal habe ich beim Drücken auf den Submit Button noch eine neue Seite mit der Meldung "Zugriff verweigert" bekommen.
Ich hoffe jemand kann mir helfen beide Fehler auszumerzen.
Danke schon mal.
lg Joe
config.php ---------------------------------
test.php -----------------------------------
ich hoffe jemand kann mir weiterhelfen.
Ich stehe wirklich auf der Leitung! :/
Mein Script soll die Daten auslesen und bearbeiten können.
Momentan habe ich folgender Fehler:
Parse error: syntax error, unexpected T_STRING in C:\xampp\htdocs\itdb\test2.php on line 8
Ka, warum!
Ich habe seit dem letzen mal nichts nennenswertes verändert, und seit heute kommt dieser Fehler.
Letzes mal habe ich beim Drücken auf den Submit Button noch eine neue Seite mit der Meldung "Zugriff verweigert" bekommen.
Ich hoffe jemand kann mir helfen beide Fehler auszumerzen.
Danke schon mal.
lg Joe
config.php ---------------------------------
<?
//Datenbankverbindung
$host = "localhost";
$host_user = "root";
$host_password = "testpw";
$host_db = "itdb";
$link = mysql_connect("$host", "$host_user", "$host_password")or die("Fehler beim verbinden!");
mysql_select_db($host_db, $link)or die("Kann keine Verbindung mit der Datenbank herstellen!");
?>
test.php -----------------------------------
<form action="<?php echo $erfolgreich; ?>" method="post">
<?
include("config.php");
if(isset($_POST["submitted"])) {
$_sql = "UPDATE geraete';
$_sql .= " SET kunde='".$_POST["kunde"]."'";
$_sql .= " SET benutzer='".$_POST["benutzer"]."'";
$_sql .= " SET typ='".$_POST["typ"]."'";
$_sql .= " SET hostname='".$_POST["hostname"]."'";
$_sql .= " SET benutzer='".$_POST["benutzer"]."'";
$_sql .= " SET hersteller='".$_POST["hersteller"]."'";
$_sql .= " SET prod_bez='".$_POST["prod_bez"]."'";
$_sql .= " SET prod_nr='".$_POST["prod_nr"]."'";
$_sql .= " SET sn='".$_POST["sn"]."'";
$_sql .= " SET spare_nr='".$_POST["spare_nr"]."'";
$_sql .= " SET service_tag='".$_POST["service_tag"]."'";
$_sql .= " SET expr_tag='".$_POST["expr_tag"]."'";
$_sql .= " SET kauf_dat='".$_POST["kauf_dat"]."'";
$_sql .= " SET liefer_dat='".$_POST["liefer_dat"]."'";
$_sql .= " SET garantie='".$_POST["garantie"]."'";
$_sql .= " SET domain='".$_POST["domain"]."'";
$_sql .= " SET mac='".$_POST["mac"]."'";
$_sql .= " SET ip='".$_POST["ip"]."'";
$_sql .= " SET subnet='".$_POST["subnet"]."'";
$_sql .= " SET gateway='".$_POST["gateway"]."'";
$_sql .= " SET dns='".$_POST["dns"]."'";
$_sql .= " SET dns2='".$_POST["dns2"]."'";
$_sql .= " SET team_id='".$_POST["team_id"]."'";
$_sql .= " SET team_pass='".$_POST["team_pass"]."'";
$_sql .= " SET comments='".$_POST["comments"]."'";
$_sql .= " WHERE id='".$_POST["id"]."'";
mysql_query($_sql,$link);
} else {
$abfrage ='SELECT * FROM geraete WHERE id=1';
$ergebnis = mysql_query($abfrage);
while ($geraete= mysql_fetch_array($ergebnis))
{
$id = $geraete["id"];
$kunde = $geraete["kunde"];
$benutzer = $geraete["benutzer"];
$typ = $geraete["typ"];
$hostname = $geraete["hostname"];
$hersteller = $geraete["hersteller"];
$prod_bez = $geraete["prod_bez"];
$prod_nr = $geraete["prod_nr"];
$sn = $geraete["sn"];
$spare_nr = $geraete["spare_nr"];
$service_tag = $geraete["service_tag"];
$expr_tag = $geraete["expr_tag"];
$kauf_dat = $geraete["kauf_dat"];
$liefer_dat = $geraete["liefer_dat"];
$garantie = $geraete["garantie"];
$domain = $geraete["domain"];
$mac = $geraete["mac"];
$ip = $geraete["ip"];
$subnet = $geraete["subnet"];
$gateway = $geraete["gateway"];
$dns = $geraete["dns"];
$dns2 = $geraete["dns2"];
$team_id = $geraete["team_id"];
$team_pass = $geraete["team_pass"];
$comments = $geraete["comments"];
?>
<table>
<tr>
<td valign="top"><input type="hidden" name="id" size="35" value="<?php echo $id; ?>"></td>
</tr>
<tr>
<td>Kunde:</td>
<td valign="top"><input type="text" name="kunde" size="35" value="<?php echo $kunde; ?>"></td>
</tr>
<tr>
<td>Benutzer:</td>
<td valign="top"><input type="text" name="benutzer" size="35" value="<?php echo $benutzer; ?>"></td>
</tr>
<tr>
<td>Typ:</td>
<td>
<select name="typ" size="1" style="width: 237px">
<option selected=""><?php echo $typ; ?></option>
<option>PC</option>
<option>Notebook</option>
<option>Server</option>
</select>
</td>
</tr>
<tr>
<td>Hostname:</td>
<td valign="top"><input type="text" name="hostname" size="35" value="<?php echo $hostname; ?>"></td>
</tr>
<tr>
<td>Hersteller:</td>
<td valign="top"><input type="text" name="hersteller" size="35" value="<?php echo $hersteller; ?>"></td>
</tr>
<tr>
<td>Produkt Bezeichnung:</td>
<td valign="top"><input type="text" name="prod_bez" size="35" value="<?php echo $prod_bez; ?>"></td>
</tr>
<tr>
<td>Produkt Nummer::</td>
<td valign="top"><input type="text" name="prod_nr" size="35" value="<?php echo $prod_nr; ?>"></td>
</tr>
<tr>
<td>Seriennummer:</td>
<td valign="top"><input type="text" name="sn" size="35" value="<?php echo $sn; ?>"></td>
</tr>
<tr>
<td>Spare Nummer:</td>
<td valign="top"><input type="text" name="spare_nr" size="35" value="<?php echo $spare_nr; ?>"></td>
</tr>
<tr>
<td>Service Tag:</td>
<td valign="top"><input type="text" name="service_tag" size="35" value="<?php echo $service_tag; ?>"></td>
</tr>
<tr>
<td>Express Service Tag:</td>
<td valign="top"><input type="text" name="expr_tag" size="35" value="<?php echo $expr_tag; ?>"></td>
</tr>
<tr>
<td>Kauf Datum:</td>
<td valign="top"><input type="text" name="kauf_dat" size="35" value="<?php echo $kauf_dat; ?>"></td>
</tr>
<tr>
<td>Liefer Datum:</td>
<td valign="top"><input type="text" name="liefer_dat" size="35" value="<?php echo $liefer_dat; ?>"></td>
</tr>
<tr>
<td>Garantie bis:</td>
<td valign="top"><input type="text" name="garantie" size="35" value="<?php echo $garantie; ?>"></td>
</tr>
<tr>
<td>Domäne:</td>
<td valign="top"><input type="text" name="domain" size="35" value="<?php echo $domain; ?>"></td>
</tr>
<tr>
<td>MAC-Adresse:</td>
<td valign="top"><input type="text" name="mac" size="35" value="<?php echo $mac; ?>"></td>
</tr>
<tr>
<td>IP-Adresse:</td>
<td valign="top"><input type="text" name="ip" size="35" value="<?php echo $ip; ?>"></td>
</tr>
<tr>
<td>Subnet-Maske:</td>
<td valign="top"><input type="text" name="subnet" size="35" value="<?php echo $subnet; ?>"></td>
</tr>
<tr>
<td>Standard-Gateway:</td>
<td valign="top"><input type="text" name="gateway" size="35" value="<?php echo $gateway; ?>"></td>
</tr>
<tr>
<td>DNS:</td>
<td valign="top"><input type="text" name="dns" size="35" value="<?php echo $dns; ?>"></td>
</tr>
<tr>
<td>Alternativer DNS:</td>
<td valign="top"><input type="text" name="dns2" size="35" value="<?php echo $dns2; ?>"></td>
</tr>
<tr>
<td>Teamviewer ID:</td>
<td valign="top"><input type="text" name="team_id" size="35" value="<?php echo $team_id; ?>"></td>
</tr>
<tr>
<td>Teamviewer Passwort:</td>
<td valign="top"><input type="text" name="team_pass" size="35" value="<?php echo $team_pass; ?>"></td>
</tr>
<tr>
<td>Kommentare:</td>
<td> <textarea name="comments" cols="27" rows="15"><?php echo $comments; ?></textarea> </td>
</tr>
</table>
<?php
}
mysql_close($link);
?>
<input type="submit" name="submitted" value="Übernehmen">
</form>
<?
}
?>
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 171576
Url: https://administrator.de/contentid/171576
Ausgedruckt am: 22.11.2024 um 17:11 Uhr
30 Kommentare
Neuester Kommentar
Hi,
wann wird denn die Variable $erfolgreich erstellt ?
Oder mal etwas anders gefragt, was wenn es nicht "erfolgreich" war ? Existiert die Variable dann auch !?
Z.B.
Wenn das speichern gut verläuft, ist alles in Ordnung, die Variabel $erfolgreich wird erstellt und kann später verwendet werden.
Wenn es einen Speicherfehler gibt, wird die Fehlermeldung ausgegeben.... ABER das Script läuft weiter und obwohl die Variabel $erfolgreich in diesem Fall nicht erstellt wurde, wird trotzdem versucht sie Auszugeben.
Könnte ähnlich bei die sein !
MySQL - Reference - UPDATE
~Arano
wann wird denn die Variable $erfolgreich erstellt ?
Oder mal etwas anders gefragt, was wenn es nicht "erfolgreich" war ? Existiert die Variable dann auch !?
Z.B.
<?php
$speichern = TRUE;
if(TRUE === $speichern)
$erfolgreich = 'gespeichert !';
else
echo 'Fehlermeldung !'
echo 'Die Daten wurden '.$erfolgreich;
?>
Wenn es einen Speicherfehler gibt, wird die Fehlermeldung ausgegeben.... ABER das Script läuft weiter und obwohl die Variabel $erfolgreich in diesem Fall nicht erstellt wurde, wird trotzdem versucht sie Auszugeben.
Könnte ähnlich bei die sein !
MySQL - Reference - UPDATE
UPDATE `table`
SET `field1` = 'wert1',
`field2` = 'wert2',
`field3` = 'wert3'
~Arano
Hi
Das IST eine Fehleinschätzung !
Schau dir die Fehlermeldung aus dem Apache-Log einmal genauer an !
Das ist die Warnmeldung von PHP die in einer Pfadangabe steht , somit kann der Apache mit dem "Pfad" nichts mehr anfangen weil es diesen nicht gibt !
Wie du selber schon richtig vermutet hast, kommt das aus dieser Zeile
Das müsstest du auch sehen können wenn due die Seite aufrufst und dir dann von dieser den Quelltext anzeigen lässt.
Wie du siehst, hat diese undefinierte Variable enorme Auswirkungen auf die Abarbeitung
~Arano
Sollte aber soweit keinen Einfluss auf das Script haben oder?
...
Hat aber wie gesagt keinen Einfluss auf das Script.
Oh doch !...
Hat aber wie gesagt keinen Einfluss auf das Script.
Das IST eine Fehleinschätzung !
Schau dir die Fehlermeldung aus dem Apache-Log einmal genauer an !
/itdb/%3Cbr%20/%3E%3Cb%3ENotice%3C/b%3E:%20%20Undefined%20variable:%20erfolgreich%20in%20%3Cb%3EC:/xampp/htdocs/itdb/test2.php%3C/b%3E%20on%20line%20%3Cb%3E1%3C/b%3E%3Cbr%20/%3E
Mit ein bisschen Augenkneifen wird das zu:/itdb/<br /><br />Notice: Undefined variable: erfolgreich in C:/xampp/htdocs/itdb/test2.php on line 1<br />
Das ist die Warnmeldung von PHP die in einer Pfadangabe steht , somit kann der Apache mit dem "Pfad" nichts mehr anfangen weil es diesen nicht gibt !
Wie du selber schon richtig vermutet hast, kommt das aus dieser Zeile
<form action="<?php echo $erfolgreich; ?>" method="post">
Das müsstest du auch sehen können wenn due die Seite aufrufst und dir dann von dieser den Quelltext anzeigen lässt.
Wie du siehst, hat diese undefinierte Variable enorme Auswirkungen auf die Abarbeitung
Ja, die UPDATE und SET Felder passen doch so oder?
Schau dir die Reference an, dort stehts ...und in meinem Beispiel. ~Arano
Hallo,
wie bereits von Arano
Ich glaube ich weiß jetzt wo der Denkfehler ist.
Wenn du die Variable $erfolgreich so einsetzt <form action="<?php echo $erfolgreich; ?>" method="post"> dann muss dort zwingend eine Pfadangabe stehen.
Also so was wie http://localhost/itdb/test2.php oder ./test2.php. Oft auch gemachter Fehler ist so was C:/....
Bei dir steht dies aber nicht da drin.
wie bereits von Arano
Das müsstest du auch sehen können wenn due die Seite aufrufst und dir dann von dieser den Quelltext anzeigen lässt.
und von mir gesagt.Prüfe mal genau was in deiner Variable $erfolgreich drin steht.
Ich glaube ich weiß jetzt wo der Denkfehler ist.
Wenn du die Variable $erfolgreich so einsetzt <form action="<?php echo $erfolgreich; ?>" method="post"> dann muss dort zwingend eine Pfadangabe stehen.
Also so was wie http://localhost/itdb/test2.php oder ./test2.php. Oft auch gemachter Fehler ist so was C:/....
Bei dir steht dies aber nicht da drin.
Moin.
Unter action gibt man das skript an, dass die Daten verarbeiten soll.
Also in Deinem Fall das aufrufende Skript.:
<form action="<?php echo $erfolgreich; ?>" method="post">
<form action="test2.php" method="post">
Bei Action kannst Du etwas anstossen bzw. das Skript angeben dem die Daten gegeben werden.
$_sql = "UPDATE geraete";
$_sql .= " SET kunde='".$_POST["kunde"]."',";
$_sql .= " benutzer='".$_POST["benutzer"]."',";
$_sql .= " typ='".$_POST["typ"]."',";
$_sql .= " hostname='".$_POST["hostname"]."',";
Dann fehlen bei den sets noch die trennenden Kommata.
HTH
MK
Unter action gibt man das skript an, dass die Daten verarbeiten soll.
Also in Deinem Fall das aufrufende Skript.:
<form action="<?php echo $erfolgreich; ?>" method="post">
<form action="test2.php" method="post">
Bei Action kannst Du etwas anstossen bzw. das Skript angeben dem die Daten gegeben werden.
$_sql = "UPDATE geraete";
$_sql .= " SET kunde='".$_POST["kunde"]."',";
$_sql .= " benutzer='".$_POST["benutzer"]."',";
$_sql .= " typ='".$_POST["typ"]."',";
$_sql .= " hostname='".$_POST["hostname"]."',";
Dann fehlen bei den sets noch die trennenden Kommata.
HTH
MK
Moin.
Wie oebn beschrieben hast Du noch zu viele SET und zu wenige Kommas...
HTH
MK
Wie oebn beschrieben hast Du noch zu viele SET und zu wenige Kommas...
<?php
include("config.php");
//Was soll das hier?
//$abfrage = "SELECT * FROM geraete WHERE id = 1";
//$ergebnis = mysql_query($abfrage);
$_sql = "UPDATE geraete";
$_sql .= " SET kunde='".$_POST["kunde"]."',";
$_sql .= " benutzer='".$_POST["benutzer"]."',";
$_sql .= " typ='".$_POST["typ"]."',";
$_sql .= " hostname='".$_POST["hostname"]."',";
$_sql .= " benutzer='".$_POST["benutzer"]."',";
$_sql .= " hersteller='".$_POST["hersteller"]."',";
$_sql .= " prod_bez='".$_POST["prod_bez"]."',";
$_sql .= " prod_nr='".$_POST["prod_nr"]."',";
$_sql .= " sn='".$_POST["sn"]."',";
$_sql .= " spare_nr='".$_POST["spare_nr"]."',";
$_sql .= " service_tag='".$_POST["service_tag"]."',";
$_sql .= " expr_tag='".$_POST["expr_tag"]."',";
$_sql .= " kauf_dat='".$_POST["kauf_dat"]."',";
$_sql .= " liefer_dat='".$_POST["liefer_dat"]."',";
$_sql .= " garantie='".$_POST["garantie"]."',";
$_sql .= " domain='".$_POST["domain"]."',";
$_sql .= " mac='".$_POST["mac"]."',";
$_sql .= " ip='".$_POST["ip"]."',";
$_sql .= " subnet='".$_POST["subnet"]."',";
$_sql .= " gateway='".$_POST["gateway"]."',";
$_sql .= " dns='".$_POST["dns"]."',";
$_sql .= " dns2='".$_POST["dns2"]."',";
$_sql .= " team_id='".$_POST["team_id"]."',";
$_sql .= " team_pass='".$_POST["team_pass"]."',";
$_sql .= " comments='".$_POST["comments"]."',";
$_sql .= " WHERE id='".$_POST["id"]."'";
mysql_query($_sql);
?>
<html>
Erfolgreich gespeichert!
</html>
HTH
MK
Moin.
SETs haben da nicht gefehlt. Du brauchst nur SET kunde = 'Mayer', AP = 'Herr Hans Meyer'.
Wie ist den Deine DB schon gefüllt?
Gibt es ID 1 denn schon. Ansonsten musst Du ein Insert machen.
Irgendwie fehlen Dir da so ein paar Grundlagen, z.B. welche SQL-Befehle es gibt (select, insert, update und delete) etc.
HTH
MK
SETs haben da nicht gefehlt. Du brauchst nur SET kunde = 'Mayer', AP = 'Herr Hans Meyer'.
Wie ist den Deine DB schon gefüllt?
Gibt es ID 1 denn schon. Ansonsten musst Du ein Insert machen.
Irgendwie fehlen Dir da so ein paar Grundlagen, z.B. welche SQL-Befehle es gibt (select, insert, update und delete) etc.
HTH
MK
Da muss ich thaenhusen zustimmen.
Beschäftige dich noch mal gründlich mit dem SQL Syntax.
Am Ende ist auch noch ein Fehler.
Am Ende eines Statements kommt kein , sondern ein ;
Wobei man dass auch weck lassen kann da es ja nur ein einziger SQL Befehl ist und laut mysql_query Beschreibung sogar soll.
gruß ganymed
Beschäftige dich noch mal gründlich mit dem SQL Syntax.
Am Ende ist auch noch ein Fehler.
Am Ende eines Statements kommt kein , sondern ein ;
Wobei man dass auch weck lassen kann da es ja nur ein einziger SQL Befehl ist und laut mysql_query Beschreibung sogar soll.
gruß ganymed
Moin.
Was passiert denn, wenn Du
in phpMyAdmin oder ähnlichen auf die Datenbank loslässt?
HTH
MK
Was passiert denn, wenn Du
UPDATE geraete SET kunde='xxx', benutzer='xxx', typ='PC', hostname='tech01', SET benutzer='xxx', SET hersteller='Dell', SET prod_bez='Optiplex 745', SET prod_nr='test', SET sn='', SET spare_nr='', SET service_tag='23J', SET expr_tag='214747', SET kauf_dat='2009-08-11', SET liefer_dat='2009-08-14', SET garantie='2011-08-11', SET domain='testdomain', SET mac='00-1E-4F7-C6', SET ip='138.2.1.20', SET subnet='255.255.255.0', SET gateway='138.2.254.1', SET dns='138.2.1.120', SET dns2='138.2.1.123', SET team_id='', SET team_pass='', SET comments='Technik PC der' WHERE id='1'
in phpMyAdmin oder ähnlichen auf die Datenbank loslässt?
HTH
MK
Moin.
Und das bringt dann genau was?
Du brauchst das doch nur einmal ordentlich fertig machen und gut ist.
Aber wenn Du unbedingt Deinen Code versauen möchtest vieleicht so?
Wie gesagt, das macht aber eigentlich null Sinn....
HTH
MK
Ich würds einfach nur gern auf mehrere Zeilen aufteilen. face-smile
Und das bringt dann genau was?
Du brauchst das doch nur einmal ordentlich fertig machen und gut ist.
Aber wenn Du unbedingt Deinen Code versauen möchtest vieleicht so?
<?php
include("config.php");
$_sql = "UPDATE geraete";
$_sql .= " SET kunde='".$_POST["kunde"]."'";
$_sql .= " WHERE id='".$_POST["id"]."'";
mysql_query($_sql,$link);
$_sql = "UPDATE geraete";
$_sql .= " SET benutzer='".$_POST["benutzer"]."'";
$_sql .= " WHERE id='".$_POST["id"]."'";
mysql_query($_sql,$link);
usw.
?>
Wie gesagt, das macht aber eigentlich null Sinn....
HTH
MK
Nein, dem ist auch nicht so !
Allerdings ist er, wenn du alles in EINE Zeile klatscht, unlesbar !
Also gibt es ja auch mehrere Möglichkeiten das in mehrere Zeilen zu gliedern.
Oder eben so wie du es vom Anfang an gemacht hast, mit den einzelnen Zuweisungen bzw. der verketteten Zuweisung ( .= )
~Arano
Allerdings ist er, wenn du alles in EINE Zeile klatscht, unlesbar !
Also gibt es ja auch mehrere Möglichkeiten das in mehrere Zeilen zu gliedern.
<?php
// einfacher Zeilenumbruch - die Zeilenumbrüche und vielen Leerzeichen oder Tabulatoren werden eh ignoriert
$strUpdateGeraete = "UPDATE `tabelle`
SET `feld1` = 'wert1',
`feld2` = 'wert2',
`feld3` = 'wert3'";
// PHP Verkettungsoperator "." (der Punkt) => http://de3.php.net/manual/de/function.echo.php
$strUpdateGeraete = "UPDATE `tabelle`"
."SET `feld1` = 'wert1',"
."`feld2` = 'wert2',"
."`feld3` = 'wert3'";
// HEREDOC => http://de3.php.net/manual/de/function.echo.php
$strUpdateGeraete = <<<QUERY
UPDATE ` tabelle`
SET `feld1` = 'wert1',
`feld2` = 'wert2',
`feld3` = 'wert3'
QUERY;
?>
Oder eben so wie du es vom Anfang an gemacht hast, mit den einzelnen Zuweisungen bzw. der verketteten Zuweisung ( .= )
~Arano