Avatar billede hyggelig75 Juniormester
08. juni 2019 - 19:48 Der er 7 kommentarer og
1 løsning

krydstjek userid mellem 2 databaser

har et lille spørsmål hvordan for jeg php til at tjekke userid fra en database og kun vise info fra den bruger på den anden database
har bruger id i users
har morther_id og userid in user_doglist
men når der skal oprette hvalpe viser den alle tæver der er i databasen og ikke kun dem brugeren har lagt op

nogle ider for at fixe dette

include_once 'config.php';

$sql = "SELECT morther_id, navn FROM `user_doglist`";
$result = mysqli_query($link, $sql);
$resultCheck = mysqli_num_rows($result);
 
  echo '<select name="morther_id">';
  while ($row = mysqli_fetch_assoc($result))
    {
            echo "<option value='$row[morther_id]'>$row[navn]</option>";
           
    }
    echo'</select>';
?></br>
   
    <!-- <input class="input" name="mor" type="text" value=""> -->
    <label>Far:</label>
    <input class="input" name="far" type="text" value="">
    <label>Kuld:</label>
    <input class="input" name="Kuld" type="text" value="">
Avatar billede olsensweb.dk Ekspert
08. juni 2019 - 23:08 #1
>vise info fra den bruger på den anden database har bruger id i users har morther_id og userid in user_doglist
du mener vel 2 tabeller og ikke 2 databaser !!

under alle omstændigheder er løsningen JOIN mellem tabellerne user og user_doglist og evt noget where betingelser
Avatar billede hyggelig75 Juniormester
08. juni 2019 - 23:37 #2
Ja er to tabeller GH og ejere virker ikke i dette tilfælde, hade tænkt og prøvet det
Avatar billede olsensweb.dk Ekspert
09. juni 2019 - 09:02 #3
#2 ?????

du har allerede svarene i
https://www.computerworld.dk/eksperten/spm/1028876?k=8329050

du skal bare have tilføjet mother_id og father_id til din hunde tabel

så den ser sådan ud:
CREATE TABLE `tbl_hunde` (
  `id` int(11) NOT NULL,
  `name` text COLLATE utf8_danish_ci NOT NULL,
  `dhl_nummer` text COLLATE utf8_danish_ci NOT NULL COMMENT 'skal måske være en int',
  `user_id` int(11) NOT NULL COMMENT 'skulle måske hedde ejer id',
  `mother_id` int(11) NOT NULL,
  `father_id` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_danish_ci;


INSERT INTO `tbl_hunde` (`id`, `name`, `dhl_nummer`, `user_id`, `mother_id`, `father_id`) VALUES
(1, 'terry', 'abc1234', 9, 0, 0),
(2, 'balder', 'xyz123', 10, 0, 0),
(3, 'fido', '1234567', 1, 1, 2),
(4, 'pluto', '654', 1, 1, 0);

ALTER TABLE `tbl_hunde`
  ADD PRIMARY KEY (`id`);

ALTER TABLE `tbl_hunde`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;


deraf kan man se at terry og balder har ukendte forældre
fido's mor er terry og far er balder
pluto's mor er terry og faderen er ukendt
Avatar billede hyggelig75 Juniormester
09. juni 2019 - 10:18 #4
det er både forkert og regtigt på samme til men:
1database  users = id ----> 2database der indeholder mother_id og id -----> 3database der skal indholde mother_id og user id og det gør den osse når man opretter hvalpe,
men den her ter alle mother _id du kan vælge imellem og den skal kun vis de mother_id du har lage op og det gør den ikke den viser alle mother_id " alså ikke kun den der står dit user id ved .....
Avatar billede hyggelig75 Juniormester
09. juni 2019 - 10:19 #5
og de her er forsøgt i alle af skygninger
$sql = "SELECT morther_id, navn FROM `user_doglist` where user_id = $ _SESSION ["id"]";
Avatar billede olsensweb.dk Ekspert
09. juni 2019 - 12:53 #6
#4
Man kan joine flere tabeller sammen, her skal man være opmærksom på at de felter man joiner på skal være af sammen datatype og encoding
man kan joine på tværs af databaser, Det man så bare gør at man tilføjer database navnet foran tabel navnet

betingelserne for at man kan joine på tværs af databaser er at:
    1. baserne ligger på sammen server
    2. baserne har sammen brugernavn/password
    3. baserne er af sammen type, så man kan ikke joine en mysql med en mssql


en sql fra arkivet
SELECT test.tbl_users.*,db_postnummer.tbl_postnummer.*, db_postnummer.tbl_country_transform.*, db_common.countries.*
FROM test.tbl_users
JOIN db_postnummer.tbl_postnummer ON test.tbl_users.postnummer=db_postnummer.tbl_postnummer.Postnr
JOIN db_postnummer.tbl_country_transform ON test.tbl_users.lande_id = db_postnummer.tbl_country_transform.lande_id
JOIN db_common.countries ON db_postnummer.tbl_country_transform.flag_id = db_common.countries.id

her er der 3 databaser:
db_postnummer
db_common
test

#5
får du ikke en fejl i dette ??
$sql = "SELECT morther_id, navn FROM `user_doglist` where user_id = $ _SESSION ["id"]";

ser mystisk ud med dine dobbelt plinger

prøv dette (uttested)
$sql = "SELECT morther_id, navn FROM `user_doglist` where user_id = $ _SESSION ['id']";
eller
$sql = 'SELECT morther_id, navn FROM `user_doglist` where user_id = '.$ _SESSION ["id"];
Avatar billede hyggelig75 Juniormester
09. juni 2019 - 13:33 #7
giver bare fejl i Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, bool given in C:\xampp\htdocs\addhvalpe.php on line 72

der indeholder $resultCheck = mysqli_num_rows($result);
Avatar billede hyggelig75 Juniormester
10. juni 2019 - 10:20 #8
her er løsningen *S

$userid = $_SESSION['id'];
$sql = "SELECT morther_id, navn FROM user_doglist WHERE userid = $userid";
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

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