Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: linkit oman linkkiryhmän alle

Sivun loppuun

Sebu [23.03.2006 23:10:20]

#

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);

???

 ?>

ajv [23.03.2006 23:24:40]

#

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.

Sebu [23.03.2006 23:39:59]

#

Juu auttoi kovasti. Kiitos.

Sebu [26.03.2006 18:38:30]

#

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ä.

ajv [26.03.2006 18:48:20]

#

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

Sebu [26.03.2006 19:33:41]

#

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 />';

}
?>

ajv [26.03.2006 19:40:15]

#

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...

Sebu [26.03.2006 20:25:03]

#

Juu nyt wörkkii. Kiitos taas.


Sivun alkuun

Vastaus

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

Tietoa sivustosta