Avatar billede human Nybegynder
07. september 2004 - 19:23 Der er 42 kommentarer og
1 løsning

if sætning

Hvad er der galt her:

if($visit_row['visitor'] == $_SESSION['username'] and $visit_row['visiting'] == $_GET['Bruger'])

Får
T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING

I linien under
Avatar billede erikjacobsen Ekspert
07. september 2004 - 19:31 #1
Der er nok en fejl i linien før eller efter.
Avatar billede human Nybegynder
07. september 2004 - 19:39 #2
Dvs. min if er ok?
Avatar billede human Nybegynder
07. september 2004 - 19:40 #3
Dette er linien efter:
$vit = ("UPDATE du_visits SET tid='NOW()' WHERE ".$visit_row['visitor']."='".$_SESSION['username']."' AND $visit_row['visiting'] == ".$_GET['Bruger']."") or die(mysql_error());

I den før fejler intet.
Avatar billede human Nybegynder
07. september 2004 - 19:41 #4
Har rettet dobbelt == til enkelt i sidste kode.

Stadig samme fejl.
Avatar billede erikjacobsen Ekspert
07. september 2004 - 19:48 #5
Men så linien før??
Avatar billede detox Nybegynder
07. september 2004 - 19:53 #6
$vit = ("UPDATE du_visits SET tid=NOW() WHERE ".$visit_row['visitor']."='".$_SESSION['username']."' AND $visit_row[visiting] == ".$_GET['Bruger']."") or die(mysql_error());
Avatar billede detox Nybegynder
07. september 2004 - 19:54 #7
Med enkelt = forstås.
Avatar billede thb Nybegynder
07. september 2004 - 20:00 #8
Prøv at skriv:

if($visit_row['visitor'] == $_SESSION['username'] && $visit_row['visiting'] == $_GET['Bruger'])
Avatar billede detox Nybegynder
07. september 2004 - 20:04 #9
Du kunne osse gøre sådan her:

$vit = ("UPDATE du_visits SET tid=NOW() WHERE {$visit_row['visitor']}='{$_SESSION['username']}' AND {$visit_row['visiting']} = {$_GET['Bruger']}") or die(mysql_error());
Avatar billede human Nybegynder
07. september 2004 - 20:11 #10
Detox: Det er det samme.
Avatar billede human Nybegynder
07. september 2004 - 20:12 #11
&& = and = AND

Nope nope og nope ;)
Avatar billede human Nybegynder
07. september 2004 - 20:13 #12
Linien før:
$visit_row = mysql_fetch_array($visit_result);
Avatar billede human Nybegynder
07. september 2004 - 20:14 #13
Og detox: Så får jeg unexpected = på den linie.
Avatar billede erikjacobsen Ekspert
07. september 2004 - 20:17 #14
Nu kan der ikke være sql fejl i en streng, så i det mindste:

$vit = "UPDATE du_visits SET tid=NOW() WHERE {$visit_row['visitor']}='{$_SESSION['username']}' AND {$visit_row['visiting']} = {$_GET['Bruger']}";
Avatar billede human Nybegynder
07. september 2004 - 20:20 #15
Ser nu sålesdes ud:
$visit_query = "SELECT visitor,visiting FROM du_visits";
$visit_result = mysql_query($visit_query) or die(mysql_error());
$visit_row = mysql_fetch_array($visit_result);
if($visit_row['visitor'] == $_SESSION['username'] && $visit_row['visiting'] == $_GET['Bruger']) {
$vit = ("UPDATE du_visits SET tid=NOW() WHERE ".$visit_row['visitor']."='".$_SESSION['username']."' AND $visit_row[visiting] = '".$_GET['Bruger']."'") or die(mysql_error());
$vit_result = mysql_query($vit) or die(mysql_error());

Får:
Unknown column 'Bruger' in 'where clause'

Hvor bruger så er $_GET['Bruger']
Avatar billede human Nybegynder
07. september 2004 - 20:21 #16
Samme resultat med den erik
Avatar billede tbsandau Novice
08. september 2004 - 15:01 #17
Har du tjekket om din mysql tabel er som den skal være i phpmyadmin?
Avatar billede human Nybegynder
08. september 2004 - 16:53 #18
ja
Avatar billede detox Nybegynder
08. september 2004 - 17:01 #19
Den fortæller dig jo at du ikke har et felt med navnet 'Bruger'.
Hvad hedder felterne i din tabel?
Avatar billede human Nybegynder
08. september 2004 - 17:03 #20
CREATE TABLE `du_visits` (
  `id` int(11) NOT NULL auto_increment,
  `visitor` varchar(25) NOT NULL default '',
  `visiting` varchar(25) NOT NULL default '',
  `tid` datetime NOT NULL default '0000-00-00 00:00:00',
  UNIQUE KEY `id` (`id`)
) TYPE=MyISAM AUTO_INCREMENT=95 ;

#
# Dumping data for table `du_visits`
#
Avatar billede detox Nybegynder
08. september 2004 - 17:05 #21
Så skal det se sådan ud:

$visit_query = "SELECT visitor,visiting FROM du_visits";
$visit_result = mysql_query($visit_query) or die(mysql_error());
$visit_row = mysql_fetch_array($visit_result);
if($visit_row['visitor'] == $_SESSION['username'] && $visit_row['visiting'] == $_GET['Bruger']) {
$vit = ("UPDATE du_visits SET tid=NOW() WHERE visitor='".$_SESSION['username']."' AND visiting='".$_GET['Bruger']."'") or die(mysql_error());
$vit_result = mysql_query($vit) or die(mysql_error());
Avatar billede human Nybegynder
08. september 2004 - 17:09 #22
Virker ikke.. Den ændre ikke tiden på en, som allerede står der. Eksempelvis gik jeg ind på en bruger, med min test bruger to gange. Der blev smidt 2 rækker i tabellen, istedet for at update tiden på besøget:

$visit_query = "SELECT visitor,visiting FROM du_visits";
$visit_result = mysql_query($visit_query) or die(mysql_error());
$visit_row = mysql_fetch_array($visit_result);
if($visit_row['visitor'] == $_SESSION['username'] && $visit_row['visiting'] == $_GET['Bruger']) {
$vit = ("UPDATE du_visits SET tid=NOW() WHERE visitor='".$_SESSION['username']."' AND visiting='".$_GET['Bruger']."'") or die(mysql_error());
$vit_result = mysql_query($vit) or die(mysql_error());
}else{
$inserst_vit = "INSERT INTO du_visits(visitor,visiting,tid) VALUES('$from','".$_GET['Bruger']."',NOW())";
mysql_query($inserst_vit) or die(mysql_error());
}
Avatar billede human Nybegynder
08. september 2004 - 17:10 #23
Trækker det ud således, på en anden side:

$visiting = $_GET['Bruger'];
$visits_query = mysql_query("SELECT visitor,visiting,tid FROM du_visits WHERE visitor<>'$visiting' ORDER BY tid DESC LIMIT 20") or die(mysql_error());
while($visits_row = mysql_fetch_array($visits_query)) {
$visitor = $visits_row['visitor'];
print "<a href='profil.php?Bruger=$visitor'>$visitor</a> - $visits_row[tid]<br />";
}
Avatar billede detox Nybegynder
08. september 2004 - 17:12 #24
Men hvorfor ikke nøjes med:

$visit_query = "SELECT visitor,visiting FROM du_visits WHERE visitor='".$_SESSION['username']."' AND visiting='".$_GET['Bruger']."'";
$visit_result = mysql_query($visit_query) or die(mysql_error());
if (mysql_num_rows($visit_result) == 1) {
    $vit = ("UPDATE du_visits SET tid=NOW() WHERE visitor='".$_SESSION['username']."' AND visiting='".$_GET['Bruger']."'") or die(mysql_error());
    $vit_result = mysql_query($vit) or die(mysql_error());
} else {
$inserst_vit = "INSERT INTO du_visits (visitor,visiting,tid) VALUES('$from','".$_GET['Bruger']."',NOW())";
mysql_query($inserst_vit) or die(mysql_error());
}
Avatar billede human Nybegynder
08. september 2004 - 17:17 #25
Kendte ikke til
(mysql_num_rows($visit_result) == 1) {

SMid svar.
Avatar billede detox Nybegynder
08. september 2004 - 17:18 #26
Den er god at kende :O)
Avatar billede human Nybegynder
08. september 2004 - 17:22 #27
Meget :)
Avatar billede human Nybegynder
08. september 2004 - 17:54 #28
Nææ.. Det virkede ikke.
Nu registrere den også hvis man besøger sin egen profil, det har jeg ikke set før.

HVordan fikses det?
Avatar billede human Nybegynder
08. september 2004 - 17:57 #29
Og skriver stadig samme bruger indi 2 gange. ELler mere.
Avatar billede detox Nybegynder
08. september 2004 - 18:01 #30
Hvis den returnerer mere end 1 række skal du måske prøve med:

(mysql_num_rows($visit_result) > 0) {
Avatar billede detox Nybegynder
08. september 2004 - 18:13 #31
Du husker vel: session_start(); øverst?
Avatar billede human Nybegynder
08. september 2004 - 18:58 #32
yup..
Avatar billede human Nybegynder
08. september 2004 - 19:22 #33
yes.. Virkede med

(mysql_num_rows($visit_result) > 0)

takker igen :)
Avatar billede human Nybegynder
08. september 2004 - 19:24 #34
Og så ikke alligevel..

Nogen gange river den, den samme bruger ud 2 gange.
eksempel:
tester - 2004-09-08 19:23:35
tester - 2004-09-08 19:23:23

Men andre gange gør den det ikke..
Avatar billede human Nybegynder
08. september 2004 - 19:26 #35
Også kan jeg også se, at der sommetider står
eksempel:
tester i både visiting og visitor.
Avatar billede detox Nybegynder
08. september 2004 - 19:31 #36
Hvor kommer: $from fra?
Avatar billede detox Nybegynder
08. september 2004 - 19:33 #37
Skal denne linje:

$visits_query = mysql_query("SELECT visitor,visiting,tid FROM du_visits WHERE visitor<>'$visiting' ORDER BY tid DESC LIMIT 20") or die(mysql_error());

ikke rettes til:

$visits_query = mysql_query("SELECT visitor,visiting,tid FROM du_visits WHERE visiting<>'$visiting' ORDER BY tid DESC LIMIT 20") or die(mysql_error());
Avatar billede human Nybegynder
08. september 2004 - 19:39 #38
Så får jeg jo ingen udtræk..
Avatar billede detox Nybegynder
08. september 2004 - 19:41 #39
hmmm, bare en tanke.
Avatar billede human Nybegynder
08. september 2004 - 20:05 #40
HAr fundet ud af noget interessant..

Det er altid id 1 den går galt med.

id 1, får samme bruger i både visitor og visiting.
id2
id3
osv.
Er der ingen problemer, af hvad jeg kan se
Avatar billede human Nybegynder
08. september 2004 - 20:08 #41
Tror det er når man er logget ud, også logger ind. Og går ind på ens profil. Den går gal.. Det er virkelig underligt
Avatar billede human Nybegynder
08. september 2004 - 21:07 #42
Udtrækket skulle se sålesdes ud:
$visits_query = mysql_query("SELECT visitor,visiting,tid FROM du_visits
WHERE visitor<>'$visiting' AND visiting='$visiting' ORDER BY tid DESC LIMIT 20") or
die(mysql_error());

Nu virker det..
Avatar billede detox Nybegynder
08. september 2004 - 21:08 #43
Arh, ok.
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