webForumDet fria alternativet

få ut info från 2 tabeller

Databaser & SQL

6 svar · 437 visningar · startad av MHZ

Medlem sedan apr. 200555 inlägg
Frågan#1

Hej. Jag har problem med ett nyhetsscript jag ville ha en userbid i. Dom har loggat på sidan och fått kakan(namn).

Men hur skriver och sorterar man sql satsen för att få allas avatarbild i sin nyhet?

Just nu visar den ingenting :(
_______________

tabellen - user

user_id
namn
bild
________________

tabellen - nyheter

id
ref_id
datum
nyhet
________________

<%
Dim user

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("data.mdb")

SQL = "SELECT u.namn, n.nyhet FROM nyheter n RIGHT JOIN user u ON n.id = u.user_id WHERE n.ref_id = u.user_id"

Set RecSet = Connect.Execute(SQL)

user = Request.Cookies("namn") 
%>

<html>

<table width="450" align="center">
  
  <tr>
    <td align="center">Nyheter</td>
  </tr>
  
<table width="450" align="center">  
  
<% Do Until RecSet.EOF%>

  <tr> 
    <td><%=RecSet("bild")%></td>
    <td><%=RecSet("nyhet")%></td>
  </tr>
     
<%	 
RecSet.MoveNext 
Loop

Recset.Close
Connect.Close
Set Recset = Nothing
Set Connect = Nothing
%>

</table>

  <br>
  
<table width="450" align="center">

  <tr>
    <td align="center">Lägg till en nyhet</td>
  </tr>
  
<table width="450" align="center">  
<form name="form1" method="post" action="add.asp">

  <tr>
    <td>Namn:</td>
    <td><input type="text" value="<%=user%>" name="namn"size="30"></td>
  </tr>
  
  <tr> 
    <td>Nyhet:</td>
    <td><textarea name="nyhet" cols="40" rows="5"></textarea></td>
  </tr>
  
<table width="450" align="center">

  <tr> 
    <td><input type="submit" name="Submit"></td>
  </tr>
    
</table>
</form>
</html>
Medlem sedan apr. 200555 inlägg
#2

Ingen som kan? Detta gickinte heller... Den skriver inte ut nyheten alls.

<%
Dim user

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("data.mdb")

SQL = "SELECT u.namn, n.nyhet FROM nyheter n RIGHT JOIN user u ON n.id = u.user_id WHERE n.id = u.user_id"
Set RecSet = Connect.Execute(SQL)

user = Request.Cookies("namn") 
%>

<html>

<table width="450" align="center">
  
  <tr>
    <td align="center">Nyheter</td>
  </tr>
  
<table width="450" align="center">  
  
<% Do Until RecSet.EOF%>

  <tr> 
    <td><%=RecSet("bild")%></td>
    <td><%=RecSet("nyhet")%></td>
  </tr>
     
<%	 
RecSet.MoveNext 
Loop

Recset.Close
Connect.Close
Set Recset = Nothing
Set Connect = Nothing
%>

</table>
</html>
Medlem sedan dec. 2004736 inlägg
#3

Vad har nyhetens ID med user_id att göra? Ska den kopplingen finnas?

Medlem sedan apr. 200555 inlägg
#4

Skriver jag så här:

SQL = "SELECT u.namn, n.nyhet FROM nyheter n RIGHT JOIN user u ON n.ref_id = u.user_id"

Får jag fel på

<td><%=RecSet("bild")%></td>

Den klarar inte att läsa från bild i tabell user då??

Medlem sedan dec. 2004736 inlägg
#5

Du hämtar aldrig ut "bild" ur din user-tabell.
Skriv:

SQL = "SELECT u.namn, [b]u.bild[/b], n.nyhet FROM nyheter n RIGHT JOIN user u ON n.ref_id = u.user_id"
Medlem sedan apr. 200555 inlägg
#6

Nu börjar det likna nått ja :) Jag har nu 5st users och det ser ut såhär nu:

bild1 nyhet
bild2
bild3
bild4
bild5

Den loopar alltså ut alla bilder och inte bara bilden till den skapade nyheten

Medlem sedan dec. 2004736 inlägg
#7

Använd INNER JOIN istället, så ska det nog fungera som du vill!

SQL = "SELECT u.namn, u.bild, n.nyhet FROM nyheter n INNER JOIN user u ON n.ref_id = u.user_id"
264 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)