Warum geht das nicht?
Stephan
- php
Hi,
sieht jemand den Fehler? Das geht nicht :-(
----
<?php
$typ = $_POST['typ'];
$text = $_POST['maintext'];
$site = $_POST['site'];
echo "$typ $text $site";
$query = "UPDATE $typ SET text = '$text' WHERE site = '$site'";
if($insert = @mysql_query("$query")) {
echo '<p align="center">Der Eintrag wurde erfolgreich geändert!<br><br><a href="index.php"><- zurück</a></p>';
}else{
echo '<p align="center">Leider konnte der Eintrag nicht verändert werden. Bitte versuchen Sie es später noch einmal.<br><br><a href="index.php"><- zurück</a> </p>';
}
?>
----
Danke schonmal
Stephan
Hallo Stephan,
<?php
$typ = $_POST['typ'];
$text = $_POST['maintext'];
$site = $_POST['site'];echo "$typ $text $site";
$query = "UPDATE $typ SET text = '$text' WHERE site = '$site'";
Boeser Fehler! Ganz boeser Fehler! Du möchtest *dringend*
http://php.net/mysql_escape_string
und
http://php.net/mysql_real_escape_string
Benutzen. Dringend!
}else{
echo '<p align="center">Leider konnte der Eintrag nicht verändert
werden. Bitte versuchen Sie es später noch einmal.<br><br><a
href="index.php"><- zurück</a> </p>';
}
Vielleicht hilft dir die Verwendung von
weiter.
Grüße,
CK
Hi,
wo ist denn der Fehler? Ich kapiers nicht :-(
Danke schonmal
Stephan
$typ = mysql_escape_string($typ);
$text = mysql_escape_string($maintext);
$site = mysql_escape_string($site);
so? Geht immer noch nicht :-(
Die Variablen werden aber bei der AUsgabe richtig in werten ausgegeben...
Danke schonmal
Stephan
Hallo Stephan,
$typ = mysql_escape_string($typ);
$text = mysql_escape_string($maintext);
$site = mysql_escape_string($site);
Schon besser.
so? Geht immer noch nicht :-(
Wie gesagt. Benutze
Grüße,
CK
Hi,
geht Danke!
Stephan
Hallo,
sieht jemand den Fehler? Das geht nicht :-(
Die Fehlebeschreibung laesst leider sehr zu wuenschen uebrig.
Ich vermute, dass immer der IF-Teil ausgefuehrt wird.
(gekuerzt):
if($insert = @mysql_query("$query"))
{ echo 'Der Eintrag wurde erfolgreich geändert!'; }
else
{ echo 'Leider konnte der Eintrag nicht verändert werden.'; }
Die _Zuweisung_
$insert = @mysql_query("$query")
wird vermutlich immer "TRUE" zurueckgeben,
auch wenn die Datenbankabfrage erfolglos war.
Wenn Du schon die Fehlermeldungen unterdrueckst,
was ich fuer wenig schlau halte, dann lass Dir
wenigstens im Misserfolgs-Fall die entsprechende
MySQL-Fehlermeldung anzeigen.
Versuch mal folgendes:
$insert = @mysql_query("$query")
if($insert)
{ echo 'Der Eintrag wurde erfolgreich geändert!'; }
else
{ echo 'Leider konnte der Eintrag nicht verändert werden.'.mysql_error(); }
Gruesse,
Thomas
P.S. Um zwei Dinge miteinander zu vergleichen (auf Gleichheit
zu pruefen), muesste man den Operator == bzw. === nehmen.
http://www.php.net/manual/de/language.operators.comparison.php
Hallo Thomas,
(gekuerzt):
if($insert = @mysql_query("$query"))
{ echo 'Der Eintrag wurde erfolgreich geändert!'; }
else
{ echo 'Leider konnte der Eintrag nicht verändert werden.'; }Die _Zuweisung_
$insert = @mysql_query("$query")
wird vermutlich immer "TRUE" zurueckgeben,
auch wenn die Datenbankabfrage erfolglos war.
PHP ist nicht C. In PHP ist der Rückgabewert einer Zuweisung der
zugewiesene Wert. Aus
http://www.php.net/manual/en/language.expressions.php
zitiert:
|So far, users of PHP/FI 2 shouldn't feel any change. However, PHP
|takes expressions much further, in the same way many other
|languages do. PHP is an expression-oriented language, in the sense
|that almost everything is an expression. Consider the example we've
|already dealt with, '$a = 5'. It's easy to see that there are two
|values involved here, the value of the integer constant '5', and
|the value of $a which is being updated to 5 as well. But the truth
|is that there's one additional value involved here, and that's the
|value of the assignment itself. The assignment itself evaluates
|to the assigned value, in this case 5. In practice, it means
|that '$a = 5', regardless of what it does, is an expression with
|the value 5. Thus, writing something like '$b = ($a = 5)' is like
|writing '$a = 5; $b = 5;' (a semicolon marks the end of a
|statement). Since assignments are parsed in a right to left order,
|you can also write '$b = $a = 5'.
Bestätigt durch:
http://forum.de.selfhtml.org/test.php
http://forum.de.selfhtml.org/test.phps
Grüße,
CK
Hallo Christian,
PHP ist nicht C. In PHP ist der Rückgabewert einer Zuweisung der
zugewiesene Wert.
In C auch. :-)
-------------------------------------------------------------
bash-2.05b$ cat zuweisung.c
#include <stdio.h>
int main (int argc, char **argv) {
int a;
if (a = argc - 1) {
printf ("%d argumente uebergeben!\n", a);
} else {
printf ("keine argumente uebergeben!\n");
}
return 0;
}
bash-2.05b$ gcc -Wall -o zuweisung zuweisung.c
zuweisung.c: In function `main':
zuweisung.c:6: warning: suggest parentheses around assignment used as truth value
bash-2.05b$ ./zuweisung
keine argumente uebergeben!
bash-2.05b$ ./zuweisung 1
1 argumente uebergeben!
bash-2.05b$ ./zuweisung 1 2
2 argumente uebergeben!
bash-2.05b$
-------------------------------------------------------------
Viele Grüße,
Christian
Hallo Christian,
PHP ist nicht C. In PHP ist der Rückgabewert einer Zuweisung der
zugewiesene Wert.In C auch. :-)
Stimmt. Mentaler freudscher Versprecher. Als ich das schrieb,
dachte ich an ein Konstrukt wie dieses:
if(a = funk() == 10)
im Gegensatz zu
if((a = funk()) == 10)
Grüße,
CK