PHP: Warum kommt da nix?

Seite 1 von 2 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/php_warum_kommt_da_nix_22081/page_1 - zur Vollversion wechseln!


pirate man schrieb am 05.01.2002 um 21:39

ich bastel grad an einem script und hab dabei eine unlogische "entdeckung" gemacht

eine schleife:

Code: PHP
if($id == "1")
{
setlocale("LC_ALL","de_DE");
$date = strftime("%A, %d. %m. %Y", $temp_time);
}
elseif($id == "2")
{
$date = strftime("%A, %B %d %Y", $temp_time);
}
else {}
wenn ich $date ausgebe, wird das datum richtig angezeigt

noch eine schleife:
Code: PHP
if($id == "1")
{
$kommentar = "<a href=\"main.php?page=comments&id=$id\">Kommentare</a> [$anzahl]";
}
elseif($id == "2")
{
$kommentar = "<a href=\"main.php?page=comments&id=$id\">Comments</a> [$anzahl]";
}
else {}
wenn ich $kommentar ausgebe, wird nichts angezeigt

ich hab keine ahnung warum und hoffe, dass ihr mir helfen könnt


Nurmi schrieb am 05.01.2002 um 21:58

so gehts glaub i:
"<a href=\'main.php?page=comments&id=$id\'>Kommentare</a> [$anzahl]";

du darfst ned " und ' verwechseln weil sonst wäre dein string schon bei $id\" wegen dem " aus...


schrieb am 05.01.2002 um 22:20

Zitat von pirate man
Zitat von radio
Naja ich hab da auch miranda gefunden(bei tucows.chello.at)
Braucht bei mir 1.3MB....
Is auch net überladen... bietet aber alles was ich brauch!

----------------

Mir gfallt das Trillian net... viel zu überladen und zu viel Grafik-schnickschnack...

cya

1. das ist keine schleife :D
2. wenn $id weder 1 noch 2 ist, wird klarerweise nix in $kommentar reingeschrieben, also am besten in den else-zweig noch ein "$kommentar = "lame"; reinschreiben.


pirate man schrieb am 05.01.2002 um 22:40

in der adresszeile steht aber immer entweder id=1 oder id=2
bei der ersten abfrage (ok, nicht schleife ;)) funzts ja auch, das kapier ich nicht


manalishi schrieb am 05.01.2002 um 22:44

btw:

$string = "\"\"";
print($string);

liefert schlicht und einfach ""

\" ist einfach die "umschreibung" für ", ähnlich wie in html statt < und > einfach < sowie > verwendet werden.


Tex schrieb am 05.01.2002 um 22:45

"else if" nicht zusammenschreiben


pirate man schrieb am 05.01.2002 um 23:07

Zitat von Tex
"else if" nicht zusammenschreiben
das is es nicht, die erste abfrage geht ja


pirate man schrieb am 05.01.2002 um 23:08

Zitat von manalishi
btw:

$string = "\"\"";
print($string);

liefert schlicht und einfach ""

\" ist einfach die "umschreibung" für ", ähnlich wie in html statt < und > einfach < sowie > verwendet werden.
und was willst du mir damit sagen?
" wird in einem echo zu \" sonst kommt ein parse error


Tex schrieb am 05.01.2002 um 23:14

ah... ich sollte oben lesen beginnen...

du musst die \" einfach gegen ' tauschen im inneren der string-zuweisung also ca. so:

Code: PHP
$kommentar = "<a href='main.php?page=comments&id=$id'>Comments</a> [$anzahl]";


so müsste es hinhauen


pirate man schrieb am 06.01.2002 um 00:53

verdammt so gehts auch ned :(


schrieb am 06.01.2002 um 01:49

füg mal ein paar echo "debug"; in die if-zweige ein um zu sehen obs daran liegt....
die zuweisung schaut ansich recht gut aus ....


Vir@s schrieb am 06.01.2002 um 23:39

Ähmmm - frage:

Soll $id ein String oder ein Int sein?

Wenn $id ein int ist, dann stimmt die überprüfung nicht,
und wenn $id ein String is, dann funzt des auch ned....

Bei int:

Code: PHP
if($id == 1)
{
$kommentar = "<a href=\"main.php?page=comments&id=$id\">Kommentare</a> [$anzahl]";
}
elseif($id == 2)
{
$kommentar = "<a href=\"main.php?page=comments&id=$id\">Comments</a> [$anzahl]";
}

Bei string:
Code: PHP
if(!strcasecmp($id,"1"))
{
$kommentar = "<a href=\"main.php?page=comments&id=$id\">Kommentare</a> [$anzahl]";
}
elseif(!strcasecmp($id,"2"))
{
$kommentar = "<a href=\"main.php?page=comments&id=$id\">Comments</a> [$anzahl]";
}


So sollt des funzen :)
Hoff ich hab da jetzt niergends nen Tipp-fehler gmacht!
Aja, des strcasecmp is ned unbedingt notwendig, weil es sich hier um Zahlen handelt!

Bye, Vir@s

[edit]
Des selbe gilt natürlich auch für dein erstes Beispiel
[/edit]


schrieb am 06.01.2002 um 23:53

@Virus: in PHP funken operationen normalerweise typenübergreifend

d.h.

Code: PHP
if( 1 != "1") echo "hell just freezed over";

btw: bin ich der einzige der in der if-konstruktion ein sicherheitsloch vermutet :)
Meine Vermutung ist, dass Pirate Man irgendwo vorher im script $id auf einen wert ungleich 1 und 2 setzt. :D


Vir@s schrieb am 07.01.2002 um 00:01

Zitat von .deRElict.
@Virus: in PHP funken operationen normalerweise typenübergreifend

d.h.
Code: PHP
if( 1 != "1") echo "hell just freezed over";

btw: bin ich der einzige der in der if-konstruktion ein sicherheitsloch vermutet :)
Meine Vermutung ist, dass Pirate Man irgendwo vorher im script $id auf einen wert ungleich 1 und 2 setzt. :D

theoretisch ja, aber wenn ich $id = 1 setz, kann ich ned if($id == "1") machen...

Es gibt zwar praktisch typengleichheit - nur kann ich bei if anweisungen ned einfach umkonvertieren!

Bye, Vir@s


schrieb am 07.01.2002 um 00:20

ned nur theoretisch sondern auch praktisch - probiers aus. :cool:

Code: PHP
$id = 1;
echo "Type of \$id is: ".gettype($id);
if( $id != "1") echo "hell just freezed over";
if( $id == "1") echo "php 0wnage";

für typensensitive vergleiche gibts in php !== bzw ===

edit: get/post-variablen sind sowieso immer vom typ string :D




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025