Avatar billede spidr Nybegynder
03. august 2005 - 19:02 Der er 24 kommentarer og
1 løsning

Hente fra 2 database.

Ok jeg skal have krydset 2 databaser og ville høre hvordan man nemmest gjorde det?

$query = mysql_query("select * from Kodetip where idet = $id order by vote desc") or die(mysql_error());
print "<table width=200>";

while($row = mysql_fetch_array($query)){

echo "<tr><td>$row[ip]</td><td valign=right>$row[vote]</td></tr>";
}

Her der henter jeg nogle iper, og hvad de har stemt, det jeg så gerne vil er at hvis en ip er ens med en ip i min bruger database, så skriver den navnet istedet for ipen.


CREATE TABLE Kodetip (
  id int(11) NOT NULL auto_increment,
  ip varchar(255) NOT NULL,
  idet int(9) NOT NULL,
  vote int(2) NOT NULL,
  PRIMARY KEY  (id)
);

også min bruger database:

CREATE TABLE Kodbaroner (
  id int(9) NOT NULL auto_increment,
  Navn varchar(50) NOT NULL,
  Pass varchar(50) NOT NULL,
  IP varchar(250) NOT NULL,
  PRIMARY KEY  (id)
) TYPE=MyISAM;
Avatar billede leif Seniormester
03. august 2005 - 19:08 #1
Det er 2 tabeller ! Pas på det er forskel på Database og Tabel !
Avatar billede spidr Nybegynder
03. august 2005 - 19:10 #2
ja selvfølgelig, undskyld gik vidst lidt hurtigt :)
Avatar billede nielle Nybegynder
03. august 2005 - 20:15 #3
F.eks. sådan her:

print "<table width=200>";

$SQL1 = "SELECT * FROM kodetip WHERE idet = " . $id . " ORDER BY vote DESC";
$query1 = mysql_query($SQL1) or die(mysql_error());

while ($row1 = mysql_fetch_assoc($query1))
{
    $navn = $row1["ip"];

    $SQL2 = "SELECT navn FROM Kodbaroner WHERE ip='" . $navn . "'";
    $query2 = mysql_query($SQL2) or die(mysql_error());

    if (mysql_num_rows($query2) > 0)
    {
        $row2 = mysql_fetch_assoc($query2)
        $navn = $row2["navn"];
    }       
   
    echo "<tr><td>" . $navn . "</td><td valign=right>" . $row1["vote"] . "</td></tr>";
}
Avatar billede spidr Nybegynder
03. august 2005 - 20:19 #4
Parse error: parse error, unexpected T_VARIABLE in /hsphere/local/home/winta/baronerne.com/showkod.php on line 156

og jeg kan ikke lige finde det :S
Avatar billede gil-galad Nybegynder
03. august 2005 - 20:22 #5
mangler en ; $row2 = mysql_fetch_assoc($query2);
Avatar billede spidr Nybegynder
03. august 2005 - 20:30 #6
hjalp ikke :S

Parse error: parse error, unexpected T_VARIABLE in /hsphere/local/home/winta/baronerne.com/showkod.php on line 157
Avatar billede coderdk Praktikant
03. august 2005 - 20:31 #7
Eller bare én query:

    // Connect til databasen først
    $sql = "
        SELECT
            ,t.vote
            ,t.ip
            ,b.navn
        FROM
            kodetips t
        LEFT OUTER JOIN
            kodbaroner b
        ON
            t.ip = b.ip
        ";
    $qh = mysql_query( $sql ) or die( mysql_error() );
    while ( $row = mysql_fetch_assoc( $qh ) )
    {
        echo "<div>";
        if ( $row['navn'] == '' )
        {
            echo $row['ip'];
        }
        else
        {
            echo $row['navn'];
        }
        echo " stemte " . $row['vote'] . "</div>";
    }

(Utestet, men bør virke)
Avatar billede spidr Nybegynder
03. august 2005 - 20:32 #8
fandt det :)
Avatar billede spidr Nybegynder
03. august 2005 - 20:34 #9
Du manglede en ; :)

men nu virker det, bortset fra at den nogen gange ikke skriver en ip :S
Avatar billede nielle Nybegynder
03. august 2005 - 20:39 #10
Hvis den ikke skriver noget ip (og heller ikke noget navn) så er det fordi at:

mysql_num_rows($query2) > 0

- er sand, men at:

$navn = $row2["navn"];

- giver en tom værdi. Dette tyder på at der mangler noget data i din tabel.
Avatar billede spidr Nybegynder
03. august 2005 - 20:42 #11
Der mangler ikke noget data :S

kan du ikke forklare lidt bedre hvad der er galt?
Avatar billede nielle Nybegynder
03. august 2005 - 20:49 #12
... jo ... der synes at mangle noget data. For hvordan skulle man ellers kunne udtrægge noget som giver en tom værdi?

Nå, man så lad os da gå på debugging! Pårøv at udskrive SQL-kommandoerne før at de bliver udført:

$SQL1 = "SELECT * FROM kodetip WHERE idet = " . $id . " ORDER BY vote DESC";
echo "DEBUG #1: " . $SQL1 . "<br>";

...

$SQL2 = "SELECT navn FROM Kodbaroner WHERE ip='" . $navn . "'";
echo "DEBUG # 2: " . $SQL2 . "<br>";
Avatar billede spidr Nybegynder
03. august 2005 - 20:51 #13
ok prøver jeg, kom til at tænke på, er det med vilje du har skrevet navn med småt over det hele?

det er jo med stot i tabellen.
Avatar billede spidr Nybegynder
03. august 2005 - 20:52 #14
Avatar billede nielle Nybegynder
03. august 2005 - 20:56 #15
Prøv lige at poste din kode som den ser ud lige nu.

Det med "navn" i stedet for "Navn" er bare en gammel vane - det kan godt være at din MySQL faktisk *skal* have det som "Navn".
Avatar billede spidr Nybegynder
03. august 2005 - 20:57 #16
tror jeg den skal, prøvede men kan ikek få den til det :S

print "<table width=200>";

$SQL1 = "SELECT * FROM Kodetip WHERE idet = " . $id . " ORDER BY vote DESC";
echo "DEBUG #1: " . $SQL1 . "<br>";

$query1 = mysql_query($SQL1) or die(mysql_error());

while ($row1 = mysql_fetch_assoc($query1))
{
    $navn = $row1["ip"];

    $SQL2 = "SELECT navn FROM Kodbaroner WHERE ip='" . $navn . "'";
echo "DEBUG # 2: " . $SQL2 . "<br>";
    $query2 = mysql_query($SQL2) or die(mysql_error());
    $row2 = mysql_fetch_assoc($query2);

    if (mysql_num_rows($query2) > 0)
    {
        $row2 = mysql_fetch_assoc($query2);
        $navn = $row2["navn"];
    }       
   
    echo "<tr><td>" . $navn . "</td><td valign=right>" . $row1["vote"] . "</td></tr>";
}

print "</table>";
Avatar billede nielle Nybegynder
03. august 2005 - 21:01 #17
Jamen, prøv da endeligt med:

$SQL2 = "SELECT Navn FROM Kodbaroner WHERE ip='" . $navn . "'";

- og:

$navn = $row2["Navn"];

- og se om det ikke gør forskellen.
Avatar billede spidr Nybegynder
03. august 2005 - 21:04 #18
btw er begge de ip'er der ikke bliver vidst nogen der står i tabellen med brugere :) når det er en ip der ikke findes i tabellen så skriver den ipen som den skal..
http://baronerne.com/showkod.php?mas=12
Avatar billede spidr Nybegynder
03. august 2005 - 21:04 #19
det hjalp ikke :(
Avatar billede spidr Nybegynder
03. august 2005 - 21:05 #20
ip i den anden tabel er foresten også IP, ved ikke omd et betyder ngoet :S
Avatar billede nielle Nybegynder
03. august 2005 - 21:08 #21
Nu kommer der da enten et ip eller et navn med i udskriften - det kan jeg da se.
Avatar billede spidr Nybegynder
03. august 2005 - 21:10 #22
Fandt ud af det, havde skrevet

$row2 = mysql_fetch_assoc($query2);

to steder hehe :D

tusidn tak for det, for jeg et svar :D?
Avatar billede nielle Nybegynder
03. august 2005 - 21:12 #23
Svar :^)

... men jeg synes da også lige at du skulle kigge på 03/08-2005 20:31:11.
Avatar billede spidr Nybegynder
03. august 2005 - 21:25 #24
Kigge på hvad :S?
Avatar billede nielle Nybegynder
03. august 2005 - 21:32 #25
På det som coderdk postede "03/08-2005 20:31:11".
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