Avatar billede stengaard Praktikant
05. maj 2008 - 12:53 Der er 20 kommentarer

Udtrække info fra to tabler og udskrive info

har et lille problem med at hente info fra 2 tabler og derefter udskrive det.

CREATE TABLE `lastlogin` (
  `ID` int(11) NOT NULL auto_increment,
  `user` varchar(50) NOT NULL default '',
  `logintime` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  PRIMARY KEY  (`ID`),
  UNIQUE KEY `idx_brugere` (`user`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 PACK_KEYS=0 AUTO_INCREMENT=1;

CREATE TABLE `login` (
  `ID` int(11) NOT NULL auto_increment,
  `user` varchar(50) NOT NULL default '',
  `pass` varchar(25) NOT NULL default '',
  `lastseen` text NOT NULL,
  `lastlogin` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  `online` text NOT NULL,
  `navn` varchar(51) NOT NULL default 'Ikke oplyst',
  `image` varchar(35) NOT NULL default 'gaest.jpg',
  `member` varchar(50) NOT NULL default 'Gæst',
  `email` varchar(50) NOT NULL default '',
  `adresse` text NOT NULL,
  `postnr` varchar(4) NOT NULL default '',
  `kommune` text NOT NULL,
  `mobil` varchar(8) NOT NULL default '',
  `foedselsdag` char(2) NOT NULL default '',
  `aar` varchar(4) NOT NULL default '',
  `maaned` varchar(14) NOT NULL default '',
  `tid` datetime NOT NULL default '0000-00-00 00:00:00',
  `oprettetaf` text NOT NULL,
  PRIMARY KEY  (`ID`),
  UNIQUE KEY `idx_brugere` (`user`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 PACK_KEYS=0 AUTO_INCREMENT=1;

scriptet der skulle udskrive info:

<?php

include("access.php");

$offset = (isset($_GET['offset']))?mysql_real_escape_string($_GET['offset']):0;

//Pr side...
$range = 5;

$antal = mysql_result(mysql_query("SELECT count(id) FROM lastlogin"),0);

$sql = mysql_query("SELECT id, user, logintime, date_format(logintime, '%e/%c %Y') AS nyDato, date_format(logintime, '%H:%i') AS nyTid FROM lastlogin ORDER by logintime DESC LIMIT $offset,$range");
$sql2 = mysql_query("SELECT id, email, navn, image, user, member, oprettetaf, date_format(tid, '%e/%c %Y, %H:%i') as tid FROM login WHERE id =".$row[id]."");

$strNumber = 0;

while($row = mysql_fetch_array($sql,$sql2))
{
    $strNumber = $strNumber+1;
   
    echo empty($row['image']) ? '' : '<img src="files/'.$row['image'].'" class="image"><br>';
    echo '<br><br>';
    echo 'Brugernavn '.$row['user'].'<br>';
    echo '<b><a href="fod.php?id='.$row['id'].'" title="Klik her For Flere Informationer om Brugeren" >'.$row['navn'].'</a></b><br>';
    echo "Medlemskab ".$row['member']." <br>(indmeldt: ".$row['tid']." af: ".$row['oprettetaf'].") <br> ".$row['email'];
    echo 'Sidste Bes&oslash;g '.$row['nyDato'].'<br> Tidspunkt '.$row['nyTid'].' <br>';
echo '<br>';
}
echo '<br><br>';
if($offset >= $range)
{
    $prev = $offset - $range;
    echo "<a href=\"?offset=".$prev."\"><strong>Forrige</strong></a> | ";
}
else
{
    echo '<strong>Forrige</strong> | ';
}

if ($antal > $offset+$range)
{
    $next = $offset+$range;
    echo "<a href=\"?offset=".$next."\"><strong>N&aelig;ste</strong></a> ";
}
else
{
    echo '<strong>N&aelig;ste</strong> ';
}
?>
Avatar billede jakobdo Ekspert
05. maj 2008 - 14:25 #1
I stedet for alt koden, hvad er det så du gerne vil have udtrukket og præsenteret ?
Avatar billede stengaard Praktikant
05. maj 2008 - 14:32 #2
det er fra login

image
medlemskab
indmeldt
oprettet af
email

fra lastlogin

nydato / nytid
Avatar billede jakobdo Ekspert
05. maj 2008 - 16:01 #3
Hvad med denne sql:

SELECT
    l.image,
    l.member,
    date_format(l.tid, '%e/%c %Y, %H:%i') as tid,
    l.oprettetaf,
    l.email,
    l.navn,
    l.user,
    date_format(ll.logintime, '%e/%c %Y') AS nyDato,
    date_format(ll.logintime, '%H:%i') AS nyTid
FROM
    l.login
INNER JOIN
    lastlogin ll
ON
    l.id = ll.id
ORDER BY
    ll.logintime
DESC LIMIT
    $offset,$range
Avatar billede stengaard Praktikant
05. maj 2008 - 16:53 #4
ikke helt med hvad du mener ??
Avatar billede jakobdo Ekspert
05. maj 2008 - 17:41 #5
Det skulle være en SQL som giver dig alle info i en SQL og ikke 2 som nu.
Avatar billede stengaard Praktikant
05. maj 2008 - 18:21 #6
når ok, fik ikke lige læst det sådan
prøver
Avatar billede stengaard Praktikant
05. maj 2008 - 18:33 #7
min sql ser således ud

$sql = mysql_query("SELECT l.image, l.member, date_format(l.tid, '%e/%c %Y, %H:%i') as tid, l.oprettetaf, l.email, l.navn, l.user, date_format(ll.logintime, '%e/%c %Y') AS nyDato, date_format(ll.logintime, '%H:%i') AS nyTid FROM l.login INNER JOIN lastlogin ll ON l.id = ll.id ORDER BY ll.logintime $offset,$range");

men det eneste der kommer frem er offset og range altså muligheden for næste og tilbage

mmmm
Avatar billede stengaard Praktikant
05. maj 2008 - 18:36 #8
det her giver heller ikke noget

$sql = mysql_query("SELECT image, member, date_format(tid, '%e/%c %Y, %H:%i') as tid, oprettetaf, email, navn, user, date_format(logintime, '%e/%c %Y') AS nyDato, date_format(logintime, '%H:%i') AS nyTid FROM login INNER JOIN lastlogin ON id = id ORDER BY logintime $offset,$range");
Avatar billede jakobdo Ekspert
05. maj 2008 - 19:44 #9
Prøv at test min sql fra indlægget: 05/05-2008 16:01:39 direkte i phpmyadmin.
Hvad siger den der ?

HUSK selv at indsæt værdier for $offset og $range
Avatar billede stengaard Praktikant
05. maj 2008 - 22:08 #10
Fejl

SQL-forespørgsel: Dokumentation

SELECT l.image, l.member, date_format( l.tid, '%e/%c %Y, %H:%i' ) AS tid, l.oprettetaf, l.email, l.navn, l.user, date_format( ll.logintime, '%e/%c %Y' ) AS nyDato, date_format( ll.logintime, '%H:%i' ) AS nyTid
FROM l.login
INNER JOIN lastlogin ll ON l.id = ll.id
ORDER BY ll.logintime DESC
LIMIT $offset, $range
LIMIT 0 , 30

MySQL returnerede: Dokumentation
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '$offset , $range
LIMIT 0, 30' at line 1
Avatar billede jakobdo Ekspert
05. maj 2008 - 22:21 #11
Ret linjen:
LIMIT $offset, $range
LIMIT 0, 30
til:
LIMIT 0, 30

Du skal altså ikke have $offset og $range med, når du tester i phpmyadmin.
Avatar billede stengaard Praktikant
05. maj 2008 - 23:59 #12
bruger denne her

SELECT
    l.image,
    l.member,
    date_format(l.tid, '%e/%c %Y, %H:%i') as tid,
    l.oprettetaf,
    l.email,
    l.navn,
    l.user,
    date_format(ll.logintime, '%e/%c %Y') AS nyDato,
    date_format(ll.logintime, '%H:%i') AS nyTid
FROM
    l.login
INNER JOIN
    lastlogin ll
ON
    l.id = ll.id
ORDER BY
    ll.logintime
DESC LIMIT
    $offset,$range

og fejlen er stadig

Fejl

SQL-forespørgsel: Dokumentation

SELECT l.image, l.member, date_format( l.tid, '%e/%c %Y, %H:%i' ) AS tid, l.oprettetaf, l.email, l.navn, l.user, date_format( ll.logintime, '%e/%c %Y' ) AS nyDato, date_format( ll.logintime, '%H:%i' ) AS nyTid
FROM l.login
INNER JOIN lastlogin ll ON l.id = ll.id
ORDER BY ll.logintime DESC
LIMIT $offset, $range
LIMIT 0 , 30

MySQL returnerede: Dokumentation
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '$offset , $range
LIMIT 0, 30' at line 1
Avatar billede stengaard Praktikant
06. maj 2008 - 00:01 #13
det var mig, prøver igen

SELECT
    l.image,
    l.member,
    date_format(l.tid, '%e/%c %Y, %H:%i') as tid,
    l.oprettetaf,
    l.email,
    l.navn,
    l.user,
    date_format(ll.logintime, '%e/%c %Y') AS nyDato,
    date_format(ll.logintime, '%H:%i') AS nyTid
FROM
    l.login
INNER JOIN
    lastlogin ll
ON
    l.id = ll.id
ORDER BY
    ll.logintime
DESC LIMIT
    LIMIT 0, 30

Fejl

SQL-forespørgsel:

l.image, l.member, date_format( l.tid, '%e/%c %Y, %H:%i' ) AS tid, l.oprettetaf, l.email, l.navn, l.user, date_format( ll.logintime, '%e/%c %Y' ) AS nyDato, date_format( ll.logintime, '%H:%i' ) AS nyTid FROM l.login INNER JOIN lastlogin ll ON l.id = ll.id ORDER BY ll.logintime DESC LIMIT LIMIT 0 , 30

MySQL returnerede: Dokumentation
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'l.image,
    l.member,
    date_format(l.tid, '%e/%c %Y, %H:%i') as tid,
    ' at line 1
Avatar billede jakobdo Ekspert
06. maj 2008 - 08:28 #14
Hov for fanden... :o(

Du skal rette denne linje:

l.login til: login l

Findes under
FROM
Avatar billede stengaard Praktikant
07. maj 2008 - 14:31 #15
med denne kommer alle oplysningerne frem

SELECT
    l.image,
    l.member,
    date_format(l.tid, '%e/%c %Y, %H:%i') as tid,
    l.oprettetaf,
    l.email,
    l.navn,
    l.user,
    date_format(ll.logintime, '%e/%c %Y') AS nyDato,
    date_format(ll.logintime, '%H:%i') AS nyTid
FROM
    login l
INNER JOIN
    lastlogin ll
ON
    l.id = ll.id
ORDER BY
    ll.logintime
DESC LIMIT
    0,24

skal man så bare lave en

$sql = mysql_query("SELECT l.image, l.member, date_format(l.tid, '%e/%c %Y, %H:%i') as tid, l.oprettetaf, l.email, l.navn, l.user, date_format(ll.logintime, '%e/%c %Y') AS nyDato, date_format(ll.logintime, '%H:%i') AS nyTid FROM login 1 INNER JOIN lastlogin ll ON l.id = ll.id ORDER BY ll.logintime $offset,$range");

og sætte ind i scriptet hvad men værdier i offset og range når flere linier kommer til i login ??
Avatar billede jakobdo Ekspert
07. maj 2008 - 15:27 #16
Dette burde virke ja:

$sql = mysql_query("SELECT l.image, l.member, date_format(l.tid, '%e/%c %Y, %H:%i') as tid, l.oprettetaf, l.email, l.navn, l.user, date_format(ll.logintime, '%e/%c %Y') AS nyDato, date_format(ll.logintime, '%H:%i') AS nyTid FROM login 1 INNER JOIN lastlogin ll ON l.id = ll.id ORDER BY ll.logintime $offset,$range");
Avatar billede stengaard Praktikant
07. maj 2008 - 15:52 #17
Mmmm kun hvid skærm

<?php

include("access.php");

$offset = (isset($_GET['offset']))?mysql_real_escape_string($_GET['offset']):0;

//Pr side...
$range = 5;

$antal = mysql_result(mysql_query("SELECT count(id) FROM lastlogin"),0);

$sql = mysql_query("SELECT id, l.image, l.member, date_format(l.tid, '%e/%c %Y, %H:%i') as tid, l.oprettetaf, l.email, l.navn, l.user, date_format(ll.logintime, '%e/%c %Y') AS nyDato, date_format(ll.logintime, '%H:%i') AS nyTid FROM login 1 INNER JOIN lastlogin ll ON l.id = ll.id ORDER BY ll.logintime $offset,$range");
$strNumber = 0;

while($row = mysql_fetch_array($sql))
{
    $strNumber = $strNumber+1;
 
    echo empty($row['l.image']) ? '' : '<img src="files/'.$row[' l.image" class="image"><br>';
    echo '<br><br>';
    echo 'Brugernavn '.$row['l.user'].'<br>';
    echo '<b><a href="fod.php?id='.$row['id'].'" title="Klik her For Flere Informationer om Brugeren" >'.$row['l.navn'].'</a></b><br>';
    echo "Medlemskab ".$row['l.member']." <br>(indmeldt: ".$row['l.tid']." af: ".$row['l.oprettetaf'].") <br> ".$row['l.email'];
    echo 'Sidste Bes&oslash;g '.$row['nyDato'].'<br> Tidspunkt '.$row['nyTid'].' <br>';
echo '<br>';
}
echo '<br><br>';
if($offset >= $range)
{
    $prev = $offset - $range;
    echo "<a href=\"?offset=".$prev."\"><strong>Forrige</strong></a> | ";
}
else
{
    echo '<strong>Forrige</strong> | ';
}

if ($antal > $offset+$range)
{
    $next = $offset+$range;
    echo "<a href=\"?offset=".$next."\"><strong>N&aelig;ste</strong></a> ";
}
else
{
    echo '<strong>N&aelig;ste</strong> ';
}
?>
Avatar billede jakobdo Ekspert
07. maj 2008 - 15:59 #18
Tilføj lige:

$sql = mysql_query("SELECT id, l.image, l.member, date_format(l.tid, '%e/%c %Y, %H:%i') as tid, l.oprettetaf, l.email, l.navn, l.user, date_format(ll.logintime, '%e/%c %Y') AS nyDato, date_format(ll.logintime, '%H:%i') AS nyTid FROM login 1 INNER JOIN lastlogin ll ON l.id = ll.id ORDER BY ll.logintime $offset,$range") or die(mysql_error());
Avatar billede stengaard Praktikant
07. maj 2008 - 16:16 #19
stadig hvis skærm

<?php

include("access.php");

$offset = (isset($_GET['offset']))?mysql_real_escape_string($_GET['offset']):0;

//Pr side...
$range = 5;

$antal = mysql_result(mysql_query("SELECT count(id) FROM lastlogin"),0);

$sql = mysql_query("SELECT id, l.image, l.member, date_format(l.tid, '%e/%c %Y, %H:%i') as tid, l.oprettetaf, l.email, l.navn, l.user, date_format(ll.logintime, '%e/%c %Y') AS nyDato, date_format(ll.logintime, '%H:%i') AS nyTid FROM login 1 INNER JOIN lastlogin ll ON l.id = ll.id ORDER BY ll.logintime $offset,$range") or die(mysql_error());
$strNumber = 0;

while($row = mysql_fetch_array($sql))
{
    $strNumber = $strNumber+1;
 
    echo empty($row['l.image']) ? '' : '<img src="files/'.$row[' l.image" class="image"><br>';
    echo '<br><br>';
    echo 'Brugernavn '.$row['l.user'].'<br>';
    echo '<b><a href="fod.php?id='.$row['id'].'" title="Klik her For Flere Informationer om Brugeren" >'.$row['l.navn'].'</a></b><br>';
    echo "Medlemskab ".$row['l.member']." <br>(indmeldt: ".$row['l.tid']." af: ".$row['l.oprettetaf'].") <br> ".$row['l.email'];
    echo 'Sidste Bes&oslash;g '.$row['nyDato'].'<br> Tidspunkt '.$row['nyTid'].' <br>';
echo '<br>';
}
echo '<br><br>';
if($offset >= $range)
{
    $prev = $offset - $range;
    echo "<a href=\"?offset=".$prev."\"><strong>Forrige</strong></a> | ";
}
else
{
    echo '<strong>Forrige</strong> | ';
}

if ($antal > $offset+$range)
{
    $next = $offset+$range;
    echo "<a href=\"?offset=".$next."\"><strong>N&aelig;ste</strong></a> ";
}
else
{
    echo '<strong>N&aelig;ste</strong> ';
}
?>
Avatar billede jakobdo Ekspert
07. maj 2008 - 18:33 #20
Du har en fejl i linje 19.
Ret lige til:
echo (empty($row['l.image'])) ? '' : '<img src="files/'.$row['l.image'].'" class="image"><br>';
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