Avatar billede human Nybegynder
27. april 2004 - 15:47 Der er 5 kommentarer og
2 løsninger

Problem med visning af id

Heysa!

$comm skal vises hvor username='$Bruger'. Men den udskriver ingenting:

$Bruger = $_GET['Bruger'];
if(isset($_GET['skriv']) && $_GET['skriv'] == 'gem') {
$skriv_insert = "INSERT INTO du_bruger_db(username,comm,tid) VALUES('$Bruger','$comm',NOW())";
mysql_query($skriv_insert) or die(mysql_error());
}
print <<<EOF
<center>
<form action="$DOC_ROOT/beta/dagbog.php?Bruger=$Bruger&skriv=gem" method="post">
<textarea cols="80" rows="15" name="comm"></textarea>
<input type="submit" name="skriv" value="Gem">
</form>
</center>
EOF;

$hent_query = "SELECT * FROM du_bruger_db WHERE username='$Bruger'";
$hent_result = mysql_query($hent_query);
while($hent_row = mysql_fetch_array($hent_result)) {

$id = $hent_row['id'];
$skrevet = date("d/m/Y", strtotime($hent_row[tid]));
$comm = nl2br($hent_row['comm']);


print "
<table border='1' cellpadding='0' cellspacing='0' width='100%'>
<tr>
<td width='50%'>
Sendt: $skrevet<br />
</td>
<td width='50%'>
<a href='$DOC_ROOT/beta/dagbog.php?Bruger=$Bruger&open=$id'>Åben</a><br />
";
//det er så her problemet ligger:
if(isset($_GET['open']) && $_GET['open'] == '$id') {
print "$comm";
}
print "
</td>
</tr>
</table>
";
}
Avatar billede michael_stim Ekspert
27. april 2004 - 15:54 #1
if(isset($_GET['open']) && $_GET['open'] == $id)
Er id ikke en integer?
Avatar billede dennismp Nybegynder
27. april 2004 - 16:10 #2
Nu har michael sådanset besvaret spørgsmålet men jeg vil lige tilføje noget.

Grunden til at man bruger " eller ' ved strings, er at fortælle php hvor meget der høre sammen.

$str = print print if($i==1) print $i;

Her er det umuligt at vide hvad $str indeholder, så for at fortælle php hvad der er tekst i dit script, og hvad der er php kommandoer smækker du "/' om.

$str = 'print print if($i==1) print $i';

Nu ved php at $str er en string, der indeholder print print if($i==1) print $i. Så du behøver ikke at smække "/' på. Så
print "$str";
er overflødigt,
print $str;
er nok.

Der er også en forskel på om du bruger ' eller ". Et eksempel
$svar = 42;
print "er svaret: $svar"; // udskriver: er svaret: 42
print 'er svaret: $svar'; // udskriver: er svaret: $svar

Så når du bruger " om en string, så bliver $variable-navne erstattet med deres indhold. Dette sker ikke for string med '-om.

if(isset($_GET['open']) && $_GET['open'] == '$id') {
Så derfor er dette forkert, du vil jo tjekke om $_GET['open'] har samme værdi som indholdet af $id - og ikke selve ordet $id.

Du mener jo indholdet af $id, så
if(isset($_GET['open']) && $_GET['open'] == "$id") {
er bedre, men da det bare er en variabel, så er ""'erne overflødige
if(isset($_GET['open']) && $_GET['open'] == $id) {
er fint.

heredoc (som <<<EOF kaldes) virker på samme måde som ", men det har du nok luret nu :-)

Håber det hjalp lidt, selvom det er lidt dårligt forklaret.
Avatar billede human Nybegynder
27. april 2004 - 16:54 #3
Hmm.. Det vidste jeg jo godt :/

Tror måske jeg skal til at kigge mine scripts lidt efter inden jeg kaster mig ud i et spg.

Smid et svar begge.. Michael fordi du kom først og fordi du har et flot navn ;)
Dennis fordi du kommer med en herlig forklaring :)
Avatar billede michael_stim Ekspert
27. april 2004 - 16:57 #4
Hmmm.. Gad vist hvad du hedder??? ;o)
Avatar billede human Nybegynder
27. april 2004 - 17:17 #5
Ja det kunne du li at vide ;o)
Avatar billede dennismp Nybegynder
27. april 2004 - 17:19 #6
Herligt at du kan bruge det :)
Avatar billede human Nybegynder
27. april 2004 - 17:28 #7
Herligt du gad bruge tid på det :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester