Avatar billede phpbegynder2004 Nybegynder
14. april 2004 - 20:26 Der er 2 kommentarer og
1 løsning

kombiner to tabeller

Hej,
Jeg har to tabeller:

users:
id | nick | pass

venner:
id | venid

Når man logger ind med sit nick og pass bliver ens users.id=$id


Nu vil jeg gerne have opstillet alle brugerne (alle rækker i users) og der skal så være en checkbox ud for dem.

Nu til det tricky!
Der hvor venner.id=$id (det id man er logget ind som) og venner.venid=users.id skal checkboxen være hakket af.

Man kan så opdatere hvem der skal være ens venner ved at fjerne og tilføje hakker. Når man tilføjer en bliver det sat ind i venner med ens eget id på id og ens nye vens id på venid.

Ved godt det er meget kringlet formuleret derfor det højre pointtal, men spørg endelig hvis der er nogle problemer!
Avatar billede dennismp Nybegynder
14. april 2004 - 21:07 #1
<?php
/*
CREATE TABLE `user` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(32) NOT NULL default '',
  PRIMARY KEY  (`id`)
);

CREATE TABLE `user_friends` (
  `id` int(11) NOT NULL default '0',
  `friend_id` int(11) NOT NULL default '0'
);
*/
$user_id = 1; // aktuel bruger

// Slet gamle venner
if( count($_POST) > 0 )
    mysql_query("DELETE FROM user_friends WHERE id = '$user_id'") or die(mysql_error());

if(isset($_POST['isfriend'])) {
    // Opret nye
    if( count($_POST['isfriend']) > 0 ) {
        $sql = "INSERT INTO user_friends(id,friend_id) VALUES ";
        $stmts = array();
        foreach(array_keys($_POST['isfriend']) as $id ) {
            $stmts[] = "($user_id,$id)";
        }
        $sql .= join(',',$stmts);
        mysql_query($sql) or die(mysql_error());
    }
}

$res = mysql_query( "SELECT u.id, u.name, uf.friend_id ".
                    "FROM user u ".
                    "LEFT JOIN user_friends uf ON (u.id = uf.friend_id AND uf.id = '$user_id') ".
                    "WHERE u.id != '$user_id'") or die(mysql_error());

print "<form method=post>";
while($row = mysql_fetch_array($res)) {
    print '<input type=checkbox name="isfriend[' . $row[0] . ']" ';
    if( !empty($row['2'] ))
        print 'checked';
    print '> ' . stripslashes($row[1]) . '<br />';
}
print "<input type=submit name=submit value=\"update\">";
print "</form>";
?>

Kan ses i funktion her: http://dennis.moellegaard.dk/v4/php/friends.php
Avatar billede phpbegynder2004 Nybegynder
14. april 2004 - 21:42 #2
Jeg bøjer mig i støvet for dig du store phpguru!

Mange tak! Det ser kanon godt ud! Men skal nok lige bruge lidt tid på at gennemskue koden. Hvad hedder denne slags "kodning" med at kombinere tabeller? At joine? Ved du om der findes nogen toturials for jeg vil gerne lære det selv.
Avatar billede dennismp Nybegynder
14. april 2004 - 21:46 #3
LEFT JOIN eller OUTER JOIN. Almindelig JOIN mellem to tabeller giver dig kun rækker, hvor der findes rækker der "passer sammen" i begge tabeller. Outer join kræver ikke dette.

Ellers spørg :)

Har ikke nogen tutorials, desværre.
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