"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

PHP: Warum kommt da nix?

pirate man 05.01.2002 - 21:39 1832 18
Posts

pirate man

Here to stay
Registered: Jul 2001
Location: @ home
Posts: 5556
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

OC Addicted
Avatar
Registered: Jun 2000
Location: Linz (Hauptplatz..
Posts: 810
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...

Guest

Deleted User
Registered: n/a
Location:
Posts: n/a
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

Here to stay
Registered: Jul 2001
Location: @ home
Posts: 5556
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

tl;dr
Avatar
Registered: Feb 2001
Location: Feldkirch
Posts: 5977
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

got r00t?
Avatar
Registered: Aug 2000
Location: salzburg
Posts: 1844
"else if" nicht zusammenschreiben

pirate man

Here to stay
Registered: Jul 2001
Location: @ home
Posts: 5556
Zitat von Tex
"else if" nicht zusammenschreiben
das is es nicht, die erste abfrage geht ja

pirate man

Here to stay
Registered: Jul 2001
Location: @ home
Posts: 5556
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

got r00t?
Avatar
Registered: Aug 2000
Location: salzburg
Posts: 1844
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

Here to stay
Registered: Jul 2001
Location: @ home
Posts: 5556
verdammt so gehts auch ned :(

Guest

Deleted User
Registered: n/a
Location:
Posts: n/a
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

Code Monkey
Registered: Nov 2000
Location: Wien
Posts: 730
Ä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]
Bearbeitet von Vir@s am 06.01.2002, 23:44

Guest

Deleted User
Registered: n/a
Location:
Posts: n/a
@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

Code Monkey
Registered: Nov 2000
Location: Wien
Posts: 730
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

Guest

Deleted User
Registered: n/a
Location:
Posts: n/a
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
Bearbeitet von am 07.01.2002, 00:24
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz