Joo melkoinen koodaaja olen :(
eli
miten lähestyisin tälläistä systeemiä, kun pitäisi saada tulostettua linkit - taulussa olevat linkit oman linkkiryhmat - taulussa sijaitsevan linkkiryhmänsä alle.. jonkinlaista ehtolausetta tossa varmaan tarvitaan, mutta mulla loppu ymmärrys kesken. (kokeilin kyllä, enkä heti luovuttanut :) )
... linkit siis syötetään taulukkoo lomakkeen kautta ja niille annetaan nummero sarakkeeseen linkkiryhma valitun linkkiryhmän id:n mukaan.
<?php require "../connect.php"; $yhteys = AvaaTietokanta(); $linkkiryhmat = mysql_query("SELECT id,nimi FROM linkkiryhma ORDER BY nimi DESC",$yhteys); $linkit = mysql_query("SELECT id,nimi,osoite,linkkiryhma FROM linkit ORDER BY nimi DESC",$yhteys); $linkki = mysql_fetch_row($linkit); $linkkiryhma = mysql_fetch_row($linkkiryhmat); ??? ?>
Hitto, olen tiedostanut, että ohjelmointiputkan koodivinkeistä puuttuu koodinpätkä, jossa esitetään miten haku useammmasta taulusta (JOIN) toimii ja olen jopa joskus aloittanut tuon vinkin kirjoittamisen nimenomaan linkkilistan muodossa.
Eli tuo haku tapauksessasi menee jotenkin tähän tyyliin:
<?php $sql = "SELECT r.nimi AS linkkiryhma, l.nimi, l.osoite FROM linkkiryhma AS r LEFT JOIN linkit AS l ON l.linkkiryhma = r.id ORDER BY r.id"; $result = mysql_query($sql); $edellinen = NULL; while($r = mysql_fetch_assoc($result)){ // tarkastellaan milloin linkkiryhmän otsikko vaihtuu if($edellinen != $r['linkkiryhma']){ $edellinen = $r['linkkiryhma']; echo '<b>'$r['linkkiryhma'].'</b><br />'; } echo '<a href="'.$r['osoite'].'">'.$r['nimi'].'</a><br />'; } ?>
Eli tossa idea, toivottavasti auttoi.
Ehkäpä kirjoittelen tuon vinkin valmiiksi vielä jollakin aikataululla.
Juu auttoi kovasti. Kiitos.
Tämmöinen tuli vielä eteen kun tein tohon hallintasysteemiä: miten saan linkin poiston onnistumaan tuolla systeemillä..? Linkkiryhmien poisto kyllä onnistuu mutta en oo tosiaan keksiny keinoa poistaa linkkejä.
Otat siihen kyselyyn mukaan sen linkin id:n ja sitten tulostusvaiheessa
echo '<a href="poista.php?id='.$r['linkki_id'].'">Poista</a><br />';
Sitten tuolla poista.php:ssä otat tuon linkin id:n:
$id = intval($_GET['id'])
ja ajat
DELETE FROM linkit WHERE id = $id
Selkiskö? :P
Joo eli tein noin, mutta tuo id ei tulostunut tuonne linkkiin... eli en saanu toimimaan. Joko en vaan osaa tai sit jossain on vikaa.. tai no... en vaan taida osata joka tapauksessa .
<?php $sql = "SELECT r.nimi AS linkkiryhma, l.id, l.nimi, l.osoite FROM linkkiryhma AS r LEFT JOIN linkit AS l ON l.linkkiryhma = r.id ORDER BY r.id"; $result = mysql_query($sql); $edellinen = NULL; while($r = mysql_fetch_assoc($result)){ // tarkastellaan milloin linkkiryhmän otsikko vaihtuu if($edellinen != $r['linkkiryhma']){ $edellinen = $r['linkkiryhma']; echo '<b>'.$r['linkkiryhma'].'</b><br />'; } echo '<a href="'.$r['osoite'].'">'.$r['nimi'].'</a> | <a href="poista.php?id='.$r['linkki_id'].'">Poista</a><br />'; } ?>
Joo, pikku typo sulla tuolla. Joko muutat kyselyssä tuon id => linkki_id, eli teet sille id-kentälle aliaksen
$sql = "SELECT r.nimi AS linkkiryhma, l.id AS linkki_id, ..."
tai sitten muutat tuossa tulostuksessa tuon linkki_id:n tilalle sen pelkän id:n. Itse suosittelisin ensimmäistä vaihtoehtoa, sillä kun haet kahdesta taulusta dataa, sulla on siellä kummassakin id-kenttä, niin homma pysyy jotenkin selkeämpänä, kun ei tartte sitten myöhemmin miettiä, että olikos tämä nyt sen linkin vai sen kategorian id...
Juu nyt wörkkii. Kiitos taas.
Aihe on jo aika vanha, joten et voi enää vastata siihen.