Gå til innhold

Skrive ut alle kommunene til brukeren


Anbefalte innlegg

Hei! Jeg jobber nå med et script hvor jeg ønsker å skrive ut fornavn, etternavn og kommuner som er listet i databasen. Fornavn og etternavn går fint å skrive ut, men nå vil jeg skrive ut alle kommunene som tilhører den og den brukeren. Kanskje ikke så enkelt å forstå, men her er koden min:

 

<?php
$logged_sok = mysql_query('SELECT * FROM sok WHERE logged > ' . (time() - (60*60*24*14)));

while($fetch_logged_sok = mysql_fetch_array($logged_sok)) {
echo mysql_real_escape_string($logged_sok['fornavn']) . ' ' . mysql_real_escape_string($logged_sok['etternavn']) . 
                       ' ' .  . '<a href="index.php?side=sokinfo&id=' . $fetch_logged_sok['id'] . '">Mer informasjon</a>, ';
}
?>

 

Etter mysql_real_escape_string($logged_sok['etternavn']) vil jeg skrive ut alle kommunene som brukeren har.

Kommunene som brukeren har ligger i en tabell som ser slik ut:

 

bruker_id | kommune

-------------------------------

1 | oslo

1 | asker

 

Noen som vet hvordan jeg kan gjøre det? Takk for svar :D

Endret av Rinox
Lenke til kommentar
Videoannonse
Annonse

Fungerer det der? Burde du ikke printe ut:

$fetch_logged_users['fornavn']

$fetch_logged_users['etternavn']

istedet for

$logged_sok['fornavn']

etc..?

Eller tar jeg feil nå?

Kommuneopplegget er jeg litt usikker på.. Du kan jo selvfølgelig kjøre en spørring inni while-løkka, men er sikkert en bedre måte å gjøre det på. Kanskje noe GROUPE BY greier? :hmm:

Endret av EirikO
Lenke til kommentar

Altså du har en bruker, la oss kalle han Ola Bruker. Først vil du skrive ut Fornavn og etter navn og så vil du skrive ut kommuner Ola har.

 

Da er tabellen ordna på denne måten håper jeg.

 

 

--------------------------------------

|Bruker_id| fornavn | etternavn|

--------------------------------------

|1 |Ola |Bruker |

--------------------------------------

 

Og så har du en annen tabell med kommuner? Eller har du de i samme tabell?

Hvis du har det i separate tabeller er et ordna lignende dette?

 

---------------------------

|Bruker_id|Kommuner|

---------------------------

|1 |Eidsvoll |

---------------------------

|2 |Hamar |

---------------------------

 

Hvis du har det er det bare å hente ut bruker id når du heter ut navn. Når det er gjort

henter du ut kommunene fra kommune tabellen med:

PHP
 

select * from kommuner where Bruker_id=$bruker_id...

Her har du da henta ut bruker id'en til Ola og satt $bruker_id lik den.

Lenke til kommentar

En liten ting først, du bruker mysql_real_escape_string på variabler/verdier du skal sette inn i en database, ikke når du henter ut.

Ikke bruk SELECT * FROM hvis ikke du trenger alle feltene i tabellen, spesifiser de du trenger.

 

Du kan gjøre noe slikt

 

PHP
<?php

 

$sql="SELECT t1.brukerid id, t1.fornavn fn ,t1.etternavn en ,t2.kommune k 

FROM sok t1, kommuner t2

WHERE t1.brukerid = t2.brukerid

ORDER BY t1.brukerid";

$result=mysql_query($sql);

 

$id=NULL;

echo '<table>';

while($row=mysql_fetch_assoc($result))

{

   if ($row['id']!==$id)

  {

     echo '<tr><td>'.$row['fn'].'</td><td>'.$row['en'].'</td><td>'.$row['k'].'</td></tr>';

     $id=$row['id'];

  }

  else

    echo '<tr><td> </td><td> </td><td>'.$row['k].'</td></tr>';

 

}

echo '</table>';

 

?>

Endret av crowly
Lenke til kommentar

Ok, la oss si at vi kaller tabellen med for og etternavn for "navn" og den med kommuner kaller vi "kom". I dette tilfellet kan vi god bruke select * siden vi skal bruke alt som er :)

Her søker vi på bruker via etternavn.

 

PHP

<?php

$result mysql_query("select * from navn where etternavn = $sok) or 

die ("error");

while ($row =mysql_fetch_array($result))

 

{

$id = $row["bruker_id"]."<br>";

$fnavn = $row["fornavn"]."<br>";

$enavn = $row["etternavn"]."<br>";

};

 

$result = mysql_query("select from kom where bruker_id $id) or 

die ("error");

while ($row1 =mysql_fetch_array($result1))

{

$kommune $row1[kommune].",";

};

 

echo $fnavn;

echo $enavn;

echo $kommune;

?>

 

Bare slå meg hvis det er noe feil her, jeg pleier å ha en god del feil som jeg retter på underveis og dette var bare noe jeg skrev ned nå, men det burde funke greit er sikkert ikke optimalt på noe vis.

Endret av Hjelpphp
Lenke til kommentar

Hvorfor bruke to sql oppslag når man kan klare seg med ett ?

mysql_fetch_array er mer ressurskrevende enn mysql_fetch_assoc eller mysql_fetch_row, siden _array inneholder både _assoc og _row verdiene. Så lenge man bare henviser til den ene, i dette tilfellet _assoc hvorfor ikke bare bruke mysql_fetch_assoc til å begynne med ;)

Skader ikke å tenke på litt optimalisering, spesielt hvis skriptet skal kjøres på ett webhotell og ikke en dedikert server. Forskjellen her er minimal, men hvis det kjøres på ett webhotell, så "mange bekker små ...".

Endret av crowly
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...