 | |
12.01.2006, 21:19
| Nach oben
#1 | | Benutzer
Registriert seit: 27.05.2005
Beiträge: 34
| Datensatz löschen
Hallo,
ich habe ein Problem mit meinem Script. Ich erhalte einen Parser-Fehler Zitat: |
Parse error: parse error, unexpected T_STRING in /srv/www/htdocs/web163/html/validate.php on line 14
| Das Script sieht folgendermaßen aus: PHP-Code:
<?
include ("config.inc.php");
$query = "SELECT * FROM tmp_nl_anmeldung WHERE id = '$id";
$rs = mysql_query($query,$conn);
if (mysql_num_rows($rs) > 0) {
$res = mysql_fetch_array($rs);
$email = $res['email'];
$name = $res['name'];
$handy = $res['handy'];
$sql = "INSERT INTO 'nl_anmeldung' ('email','name','handy','time','ip') VALUES ('$email','$name','$handy','$time','$ip');
mysql_query($sql,$conn);
$query = "DELETE FROM tmp_nl_anmeldung WHERE id = '$id'";
mysql_query($query,$conn);
}
else {
echo 'Es trat ein Fehler auf. Ihre Anmeldedaten konnten nicht gefunden werden. Bitte melden Sie sich erneut an';
}
?> Ich habe irgendwie keine Ahnung, was beim Delete-query falsch ist. Würde mich über Hilfe wie immer ganz doll freuen.
|
| |
12.01.2006, 21:24
| Nach oben
#2 | | Erfahrener Benutzer
Registriert seit: 18.08.2005 Ort: Dortmund
Beiträge: 166
|
Das Syntax-Highlighting zeigt's Dir schon. das abschließende Anführungszeichen bei $sql fehlt...
|
| |
12.01.2006, 21:39
| Nach oben
#3 | | Benutzer
Registriert seit: 27.05.2005
Beiträge: 34
|
Danke, der Hinweis hat weitergeholfen.
Beim testen des Scripts erhalte ich jetzt aber einen Fehler, die Zeile 6 betreffend Zitat:
Warning: mysql_num_rows( supplied argument is not a valid MySQL result resource in /srv/www/htdocs/web163/html/validate.php on line 6
| Ich habe mich hier an ein Beispielscript aus dem Buch "Programmieren lernen in PHP5" gehalten und kann daher den Fehler nicht ganz nachvollziehen.
|
| |
12.01.2006, 21:48
| Nach oben
#4 | | o_O
Registriert seit: 18.08.2005 Ort: Essen
Beiträge: 159
|
Hi, PHP-Code: $query = "SELECT * FROM tmp_nl_anmeldung WHERE id = '$id";
$rs = mysql_query($query,$conn);
Da ist schon was falsch .... ich denke, das müsste so aussehen: PHP-Code: $query = "SELECT * FROM tmp_nl_anmeldung WHERE id = "'.$id.'" ";
$rs = mysql_query($query,$conn);
Gruss,
bob
__________________
Grüsse aus Essen,
bob
|
| |
12.01.2006, 21:54
| Nach oben
#5 | | Benutzer
Registriert seit: 27.05.2005
Beiträge: 34
|
Die Änderung bringt mir wiederum einen Parser-Fehler Zitat: |
Parser-Fehler: C:\Programme\xampp\htdocs\zend\validate.php Zeile 4 - syntax error, unexpected T_CONSTANT_ENCAPSED_STRING
| |
| |
12.01.2006, 21:55
| Nach oben
#6 | | Erfahrener Benutzer
Registriert seit: 18.08.2005 Ort: Dortmund
Beiträge: 166
| PHP-Code: $query = "SELECT * FROM tmp_nl_anmeldung WHERE id = '".$id."'";
$rs = mysql_query($query,$conn);
Auch in dem Fall ist das Syntax-Highlighting Dein Freund... |
| |
12.01.2006, 22:02
| Nach oben
#7 | | Benutzer
Registriert seit: 27.05.2005
Beiträge: 34
|
OK, Parser-Fehler ist wieder weg, ich habe nun aber wieder den alten Fehler in Zeile 6.
Kann das was damit zu tun haben, dass ich auf dem Webspace noch PHP4 laufen habe?
|
| |
12.01.2006, 22:12
| Nach oben
#8 | | Erfahrener Benutzer
Registriert seit: 18.08.2005 Ort: Dortmund
Beiträge: 166
|
Woher kommt denn überhaupt der Wert in $id? Außerdem: Guck Dir mal in Deinem ersten Posting das erste $query an, da liegt doch auch schon was im argen... vergleich mal mit meinem Posting...
|
| |
12.01.2006, 22:14
| Nach oben
#9 | | Benutzer
Registriert seit: 27.05.2005
Beiträge: 34
|
Den übernehme ich aus einem Link PHP-Code: http://www.......de/validate.php?id=$time&code=$code
|
| |
12.01.2006, 22:15
| Nach oben
#10 | | Benjamin Klaile
Registriert seit: 02.12.2004 Ort: Remagen
Beiträge: 4.516
|
So sollte es funktionieren: PHP-Code: <?php
include_once('config.inc.php');
$sql = 'SELECT * FROM tmp_nl_anmeldung WHERE id = ' . $id;
$resource = mysql_query($sql) or exit(mysql_error());
if(mysql_num_rows($resource) > 0) { $tmp= mysql_fetch_assoc($resource); $email = $tmp['email']; $name = $tmp['name']; $handy = $tmp['handy']; $sql = "INSERT INTO nl_anmeldung ( 'email', 'name', 'handy', 'time', 'ip' ) VALUES ( '" . $email ."', '" . $name ."', '" . $handy . "', '" . $time . "', '" . $ip . "' )";
mysql_query($sql) or exit(mysql_error()); $sql= 'DELETE FROM tmp_nl_anmeldung WHERE id = ' . $id;
mysql_query($sql) or exit(mysql_error()); } else { echo 'Fehlermeldung'; }
?> Ungetestet.
Nur mal etwas formatiert  .
Geändert von Ben (12.01.2006 um 22:46 Uhr)
|
| |
12.01.2006, 22:17
| Nach oben
#11 | | o_O
Registriert seit: 18.08.2005 Ort: Essen
Beiträge: 159
|
dann mach es mit $_GET['id']; ... :rolleyes: ...
ICh habe es so gelöst:
$sql = "DELETE FROM tabelle WHERE id='".$id."'";
und nein bei mir ist id keine get variable
__________________
Grüsse aus Essen,
bob
|
| |
12.01.2006, 22:21
| Nach oben
#12 | | Johannes Schlichenmaier
Registriert seit: 26.08.2005 Ort: Mannheim
Beiträge: 403
|
@OP
befolge ma Bens Ratschlag bis auf eins:
das "exit" nach mysql_query() änderst du bitten in "die", denn sonst wirds nicht funktionieren, nich Ben?
//edit: narf  scheiß de-docu bei PHP. Man! der Bernd hat doch recht ^^
__________________
In the beginning was the word
and the word was content-type: plain/text
heute code ich, morgen debug ich und uebermorgen cast ich die koenigin auf int
Geändert von Jojo (12.01.2006 um 22:42 Uhr)
|
| |
12.01.2006, 22:30
| Nach oben
#13 | | Benutzer
Registriert seit: 27.05.2005
Beiträge: 34
|
Mal noch eine Frage: Muss ich $id nicht definieren, wenn ich es aus einer url nehme?
Bekomme Fehlermeldung "Query was empty".
Geändert von andy74 (12.01.2006 um 22:37 Uhr)
|
| |
12.01.2006, 22:35
| Nach oben
#14 | | me pro ok?
Registriert seit: 07.09.2005 Ort: Pulheim bei Köln
Beiträge: 964
|
Ja. PHP-Code: $id = array_key_exists('id', $_GET) ? intval($id) : 0;
Steckt in der URI eine "id", steht sie in $id, ansonsten 0. array_key_exists() sollte selbsterklärend sein.
__________________
Gedanken aus Draht stricken einen Zaun.
|
| |
12.01.2006, 22:36
| Nach oben
#15 | | Johannes Schlichenmaier
Registriert seit: 26.08.2005 Ort: Mannheim
Beiträge: 403
|
wenn du $id aus einer URL entnimmst, dann musst du natürlich erst mal den Wert in der URL in $id speichern.  arrow: hier dazu ein kleiner "Aufkärungskurs" http://forum.developers-guide.net/sh...t=688#post6007)
um auch bei eingeschaltenem error_reporting() keinen Fehler zu bekommen, würd ich dir folgende zuweisung empfehlen: PHP-Code: $id = (isset($_GET['id']) (int) $_GET['id'] : 0;
//edit: @Lars: da du schon ma schneller warst: was is besser: intval() oder (int)?
__________________
In the beginning was the word
and the word was content-type: plain/text
heute code ich, morgen debug ich und uebermorgen cast ich die koenigin auf int
|
| |
12.01.2006, 22:36
| Nach oben
#16 | | Erfahrener Benutzer
Registriert seit: 18.08.2005 Ort: Dortmund
Beiträge: 166
|
Wenn Du es mit PHP-Code: $id = $_GET['id'];
abholst, nicht.
Auch wenn es jetzt zu Test-/Übungszwecken übertrieben sein dürfte, solltest Du im produktiven Betrieb die Angaben bzw Variablen, die per URL kommen, immer noch mal prüfen. Nix ist sicher, schon gar nicht Werte, die von außen kommen.
|
| |
12.01.2006, 22:43
| Nach oben
#17 | | Benutzer
Registriert seit: 27.05.2005
Beiträge: 34
|
hm, bekomms nicht zum laufen.
Muss es in Zeile 12 PHP-Code: $resource = mysql_query($query) or die(mysql_error());
oder PHP-Code: $resource = mysql_query($sql) or die(mysql_error());
heissen??
|
| |
12.01.2006, 22:46
| Nach oben
#18 | | Benjamin Klaile
Registriert seit: 02.12.2004 Ort: Remagen
Beiträge: 4.516
|
Ich habe $query mal in $sql umbenannt .. nicht verwirren lassen
EDIT:
Sorry .. natürlich .. hehe ..  .. habsc bisschen rumgekuddelmuddelt .. sorry
|
| |
12.01.2006, 22:50
| Nach oben
#19 | | Benutzer
Registriert seit: 27.05.2005
Beiträge: 34
|
Ich bekomm jetzt folgende Meldung "Unknown column 'id' in 'where clause'"
|
| |
12.01.2006, 22:51
| Nach oben
#20 | | Johannes Schlichenmaier
Registriert seit: 26.08.2005 Ort: Mannheim
Beiträge: 403
|
Jo, hast du denn überhaupt ne Spalte "id" ?
__________________
In the beginning was the word
and the word was content-type: plain/text
heute code ich, morgen debug ich und uebermorgen cast ich die koenigin auf int
|
| | |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | | | | Themen-Optionen | Thema durchsuchen | | | |
Forumregeln
| Es ist dir nicht erlaubt, neue Themen zu verfassen. Es ist dir nicht erlaubt, auf Beiträge zu antworten. Es ist dir nicht erlaubt, Anhänge hochzuladen. Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten. HTML-Code ist aus. | | | Alle Zeitangaben in WEZ +1. Es ist jetzt 03:58 Uhr.
|