Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP, SQL: Monta id:tä samassa sarakkeessa

joah [18.07.2013 18:38:48]

#

Minua on vaivannut noin viikko seuraava asia, googlaus, eikä mikään muukaan auta.

Määränpää:
1. Hakea kirjautuneena olevan henkilön riviltä tieto, ketkä hänellä on kavereita (ID)
2. (Psst... IDeet tallennetaan aina kaverit-kohdassa muotoon {ID} (välilyönti), voidaan muuttaa pilkuun) Muunnetaan explode-funktiolla ID/ID:t array-muotoon
3. Haetaan tietokannasta tällä ID:llä henkilön etu- ja sukunimi
4. Näytetään henkilö(t)

Tässä pitäisi myös tapahtua niin, että KAIKKI nimet pitäisi tulostua, eli while puuttuu asiaan? Eli miten tämä pitäisi toteuttaa...

Kysykää ihmeessä jos epäselvyyksiä. Tässä siis n. Viikko pohdittu asiaa ja tämä paikka ainoa toivoni...

Teuro [18.07.2013 19:09:40]

#

Tee uusi taulu ystävät, josta noudat jokaisen henkilön kaverit yhdellä kyselyllä. Pilkuin tai vastaavin merkein eroteltu data ei ole tietokannalle ominainen tapa tallentaa tietoa.

Antti Laaksonen [18.07.2013 19:11:03]

#

Toivottavasti seuraavasta koodista on apua. Koodi olettaa, että taulussa henkilot on kentät id, etunimi, sukunimi ja kaverit. Kenttä kaverit sisältää kaverien id:t pilkuilla erotettuina.

$omaid = 1;
$kysely = $yhteys->prepare("SELECT kaverit FROM henkilot WHERE id = ?");
$kysely->execute(array($omaid));

$tulos = $kysely->fetch();
$kaverit = $tulos["kaverit"];

if ($kaverit == "") die("Ei kavereita!");

$sql = "SELECT etunimi, sukunimi FROM henkilot WHERE id IN ($kaverit)";
$kysely = $yhteys->prepare($sql);
$kysely->execute();

echo "Kaverit: <ul>";
while ($rivi = $kysely->fetch()) {
    $etunimi = $rivi["etunimi"];
    $sukunimi = $rivi["sukunimi"];
    echo "<li> $etunimi $sukunimi";
}
echo "</ul>";

Huomaathan kuitenkin, että kaverilistan tallentaminen yhteen kenttään ei ole yleensä ottaen hyvä tapa. Tässä neuvoja tietokannan suunnitteluun:

https://www.ohjelmointiputka.net/oppaat/opas.php?tunnus=mysqlphp08

The Alchemist [18.07.2013 21:37:47]

#

Antti Laaksonen kirjoitti:

Huomaathan kuitenkin, että kaverilistan tallentaminen yhteen kenttään ei ole yleensä ottaen hyvä tapa.

Se on yleisesti ottaen typerää. Jos haluat käyttää relaatiotietokantaa, niin käytä sitä oikein. Muutoin älä käytä relaatiotietokantaa. Vaihtoehtojakin on vaikka miten. Yksi suosituimmista on tällä hetkellä MongoDB.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta