Avatar billede retrixz Nybegynder
23. marts 2011 - 18:44 Der er 8 kommentarer

Hente data fra to tabeller i samme query?

Goddag folkens,

Jeg er lige begyndt at lege med PHP og mySQL igen, efter et par års pause. Så jeg er stadig meget rusten.

Mit problem er, at jeg skal bruge et udtræk fra tabellen "news", hvor jeg kun skal bruge, de nyheder, hvor author er = brugernavn, fra tabellen bruger_system. Kan i følge mig?

Prøver lige at uddybe lidt. Jeg har øverst en query, som henter data fra bruger_system ud fra ID, eller Brugernavn. Det jeg så gerne vil, er at også vise, hvad samme bruger har posted af nyheder. Så den skal altså også hente data fra en anden tabel, i samme query.

Koden ser sådan her ud:


<?
if(isset($_SESSION['logget_ind'])){
if(isset($_GET[ID])) {
  $query = mysql_query("SELECT * FROM bruger_system WHERE ID = '$_GET[ID]' OR brugernavn = '$_GET[Brugernavn]' ORDER BY ID") or die(mysql_error());
    while ($row1 = mysql_fetch_assoc($query)) {
    ?>
    <div class="ostatnie">
    <h3>UngNews profil for <? echo $row1[brugernavn]; ?></h3>
    <table>
    <tr>
    <td><b>Navn:</b></td>
    <td><? echo ucwords(strtolower($row1[navn])); echo " "; echo ucwords(strtolower($row1[efternavn])); ?></td>
    </tr>
    <tr>
    <td><b>Landsdel:</b></td>
    <td><? echo $row1[landsdel]; ?></td>
    </tr>
    <td><b>Brugernavn:</b></td>
    <td><? echo $row1[brugernavn]; ?></td>
    </tr>
    <td><b>Status:</b></td>
    <td><? echo $row1[bruger_level]; ?></td>
    </tr>
    <td><b>Medlem siden:</b></td>
    <td><? echo $row1[oprettet]; ?></td>
    </tr>
    <td><b>Seneste online:</b></td>
    <td><? if($row1[online] == 'ja'){ echo "<font color='#FF0000'>Online nu!</font>"; }else { if ($row1[sidst_online] == ''){echo "$row1[brugernavn] har ikke haft sit første logind endnu!";}else {echo $row1[sidst_online]; }} ?></td>
    </tr>
    </tr>
    <td>
    <b>Profil point:</b></td>
    <td><? echo $row1[point]; ?></td>
    </tr>
    </table>
    <h3>Profil tekst</h3>
    <?
    if($row1[profil_tekst] > ''){
    include 'fjernetord.php';
      echo str_replace($ord_der_skal_erstattes, $erstat_ord_med, nl2br(htmlspecialchars($row1[profil_tekst])));
    }
    else {
      echo "<i>$row1[brugernavn] har endnu ikke skrevet noget i sin profil tekst.</i>";
    }
  if($_SESSION["bruger_level"] == 'Administrator'){
    echo '<br /><h3>Administrator</h3>';
    echo '<a href="?page=admin/indstillinger&ID='.$_GET[ID].'">Rediger denne profil</a> - <a href="?page=admin/sletbruger&ID='.$_GET[ID].'">Slet bruger</a>';
    }
    ?>
    </div>
    <?
}
}
?>

<?
if(isset($_GET[Brugernavn])) {
  $query = mysql_query("SELECT * FROM bruger_system WHERE brugernavn = '$_GET[Brugernavn]' ORDER BY ID") or die(mysql_error());
    while ($row1 = mysql_fetch_assoc($query)) {
    ?>
    <div class="ostatnie">
    <h3>UngNews profil for <? echo $row1[brugernavn]; ?></h3>
    <table>
    <tr>
    <td><b>Navn:</b></td>
    <td><? echo ucwords(strtolower($row1[navn])); echo " "; echo ucwords(strtolower($row1[efternavn])); ?></td>
    </tr>
    <tr>
    <td><b>Landsdel:</b></td>
    <td><? echo $row1[landsdel]; ?></td>
    </tr>
    <td><b>Brugernavn:</b></td>
    <td><? echo $row1[brugernavn]; ?></td>
    </tr>
    <td><b>Status:</b></td>
    <td><? if($row1[bruger_level] == '10'){echo "Administrator";} else {} if($row1[bruger] == '5'){echo "Skrivbent";} else{} if($row1[bruger] == '0'){echo "Bruger";} else{}?></td>
    </tr>
    <td><b>Medlem siden:</b></td>
    <td><? echo $row1[oprettet]; ?></td>
    </tr>
    <td><b>Seneste online:</b></td>
    <td><? if($row1[online] == 'ja'){ echo "<font color='#FF0000'>Online nu!</font>"; }else { echo $row1[sidst_online]; } ?></td>
    </tr>
    </tr>
    <td><b>Profil point:</b></td>
    <td><? echo $row1[point]; ?></td>
    </tr>
    </table>
    <h3>Profil tekst</h3>
    <?
    if($row1[profil_tekst] > ''){
      include 'fjernetord.php';
      echo str_replace($ord_der_skal_erstattes, $erstat_ord_med, nl2br(htmlspecialchars($row1[profil_tekst])));
    }
    else {
      echo "<i>$row1[brugernavn] har endnu ikke skrevet noget i sin profil tekst.</i>";
    }
    ?>
    </div>
    <?
}
}
}
else {
  include 'ikkebruger.php';
}
?>
Avatar billede arne_v Ekspert
23. marts 2011 - 18:47 #1
Leder du efter join ?
Avatar billede retrixz Nybegynder
23. marts 2011 - 18:55 #2
Det ved jeg ikke.

Jeg kender ikke funktionen.
Avatar billede retrixz Nybegynder
23. marts 2011 - 19:10 #4
#arne_v

Jeg var lige hurtig nok med at skrive "jeg kender ikke funktionen". Fordi, som du selv skriver - kender google funktionen.

Dog kan jeg slet ikke gennemskue, hvordan jeg implantere det i mit eget script. Det skyldes nok min manglende erfaring...
Avatar billede arne_v Ekspert
23. marts 2011 - 19:19 #5
eksempel:

SELECT *
FROM user_system JOIN news ON user_system.id = news.userid
WHERE user_system.brugernavn = 'Arne'
Avatar billede retrixz Nybegynder
23. marts 2011 - 19:29 #6
#arne_v
Som jeg ser dit svar, får jeg ikke det output jeg gerne vil ha.

Nu ser min query sådan her ud: SELECT * FROM bruger_system WHERE ID = '$_GET[ID]' OR brugernavn = '$_GET[Brugernavn]' ORDER BY ID

"brugernavn" er identisk med "author" i tabellen news. Så jeg vil gerne kunne poste, alle de ting i news tabellen, som er identisk med det brugernavn den henter?

Jeg ved ikke, om man kan lave en ny query inde i den allerede eksisterende?
Avatar billede danco Nybegynder
23. marts 2011 - 21:25 #7
SELECT * FROM user_system, news
WHERE news.author = user_system.brugernavn
AND user_system.brugernavn='Danco'

er det ikke bare sådan noget du skal bruge ? :)
Avatar billede arne_v Ekspert
15. april 2011 - 01:47 #8
retrixz?
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
Computerworld tilbyder specialiserede kurser i database-management

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