Terve.
Aihe: Tallitietokanta
Mitä olen tekemässä: Yrittämässä saada tulostetta HTML-taulukkoon
Ongelma: Aloittelevana ohjelmoijana se on seuraava. Sivulla on monta option-valikkoa, joista sitten lomakkeenkäsittelijässä poistan - merkin explodella. Lomakkeenkäsittelijässä teen option-valikon tuloksista arrayn ja ketjutan ne implodella. Sain ohjeen tuohon implode-ketjutukseen eräältä toiselta henkilöltä, joten en itse osaa muokata SQL-lauseketta haluamaani suuntaan. SQL-lauseke on tehty lomakkeenkäsittelijässä niin hienosti että menee aloittelijan hilseen yli.
Eli osaisiko joku neuvoa miten saisin toteutettua SQL-lausekkeen niin, että voisin tuoda tietoja toisesta taulusta talli_id:n ja hevoskasvatus_id_n perusteella? Eli mihin väliin saisin laitettua AND-ehdon? Ongelmakohta:
if (count($and))
{
$sql = 'SELECT p.tilan_hallinta, p.tilan_koko_ha, p.tallin_toiminta, p.tallin_sijainti,
t.talli_id, t.postinro, t.postitoimipaikka, t.tallinnimi
FROM perustiedot as p, tallit as t
WHERE ' . implode(' AND ', $and)
AND t.talli_id=p.perustiedot_id;
}Tässä weblomake:
<html> <head> <meta http-equiv="Content-type" content="text/html;charset=utf-8" /> </head> <body> <link rel="stylesheet" type="text/css" href="tyyli.css"> <form method=post action="perushae.php"> <h4>Perustiedot</h4> <p>Kaikkiin kenttiin on valittava arvo. Vain täysin hakuarvoihin vastaavat tulokset näytetään.</p> <br> <p>tilan hallinta <br> oma<input name="tilanhall" value="oma" type="radio"> vuokra<input name="tilanhall" value="vuokra" type="radio"> <br> <br> tilan koko ha<br> <select name="tilankok"> <option>0-10</option> <option>11-50</option> <option>51-100</option> <option>101-150</option> <option>151-200</option> <option>201-250</option> <option>251-300</option> <option>301+</option> </select> <br> <br> tallin toiminta <br> harrastustoimintaa<input name="toiminta" value="harrastustoimintaa" type="radio"> yritystoimintaa<input name="toiminta" value="yritystoimintaa" type="radio"> <br> <br> tallin sijainti <br> maatilan yhteydessä<input name="sijainti" value="maatilan yhteydessä" type="radio"> maaseudulla<input name="sijainti" value="maaseudulla" type="radio"> kaupunkitaajamassa<input name="sijainti" value="kaupunkitaajamassa" type="radio"> <br> <br> <br> hevosten ja ponien lkm <br> <br> <select name="hevlkm"> <option>0-10</option> <option>11-50</option> <option>51-100</option> <option>101+</option> </select> <br> <br> pihattopaikkojen lkm</p> <select name="pihplkm"> <option>0-10</option> <option>11-50</option> <option>51-100</option> </select> <br> <br> <input name="haku" value="Hae" input type="submit"> <input type="reset" value="Tyhjennä" ><br></form> <FORM METHOD="LINK" ACTION="index.php"><INPUT TYPE="submit" VALUE="Palaa alkuvalikkoon"><p> </FORM> </body></html>
Lomakkeenkäsitteljä perushae.php:
<html>
<head>
<meta http-equiv="Content-type" content="text/html;charset=utf-8" />
</head>
<body>
<?php
$con = mysql_connect("localhost","xxx","xxxx");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("tallitietokanta", $con);
if( isset($_POST["haku"]) && $_POST['tilanhall']=='oma' || $_POST['tilanhall']=='vuokra') // Hakunappulaa painettu
{
$and = array();
if ($_POST['tilanhall'])
{
$hallinta=$_POST['tilanhall'];
$and[] = "tilan_hallinta = '$hallinta'";
}
if ($_POST['toiminta'])
{
$toiminta= $_POST['toiminta'];
$and[] = "tallin_toiminta = '$toiminta'";
}
if($_POST['sijainti'])
{
$sijainti= $_POST['sijainti'];
$and[] = "tallin_sijainti = '$sijainti'";
}
if($_POST['tilankok'])
{
$koko = explode("-", $_POST['tilankok']);
$and[]= "tilan_koko_ha BETWEEN '$koko[0]' AND '$koko[1]'";
}
if($_POST['hevlkm'])
{
$hevkoko = explode("-", $_POST['hevlkm']);
$and[]= " hevosten_ponien_lkm BETWEEN '$hevkoko[0]' AND '$hevkoko[1]'";
}
if($_POST['pihplkm'])
{
$pihkoko = explode("-", $_POST['pihplkm']);
$and[]= "pihattopaikkojen_lkm BETWEEN '$pihkoko[0]' AND '$pihkoko[1]'";
}
if (count($and))
{
$sql = 'SELECT p.tilan_hallinta, p.tilan_koko_ha, p.tallin_toiminta, p.tallin_sijainti,
t.talli_id, t.postinro, t.postitoimipaikka, t.tallinnimi
FROM perustiedot as p, tallit as t
WHERE ' . implode(' AND ', $and)
AND t.talli_id=h.hevoskasvatus_id;
}
if (!$result=mysql_query($sql,$con)) die("Error: " . mysql_error());
echo "<table border>";
echo"<td><b>Tilan hallinta</b></td>
<td><b>Tilan koko ha</b></td>
<td><b>Tallin toiminta</b></td>
<td><b>Tallin sijainti</b></td>
<td><b>Hevosten ja ponien lkm</b></td>
<td><b>Pihattopaikkojen lkm</b></td>
<td><b>Postinumero</b></td>
<td><b>Postitoimipaikka</b></td>
<td><b>Tallin nimi</b></td>
</tr>";
while ($row = mysql_fetch_array($result))
{
//haetaan nimi, hinta ja määrä muuttujiin
$tilanhallinta = $row["tilan_hallinta"];
$tilankokoha = $row["tilan_koko_ha"];
$tallintoiminta =$row["tallin_toiminta"];
$tallinsijainti = $row["tallin_sijainti"];
$hevostenjaponienlkm = $row["hevosten_ponien_lkm"];
$pihattopaikkojenlkm = $row["pihattopaikkojen_lkm"];
$postinumero = $row["postinro"];
$postitoimipaikka = $row["postitoimipaikka"];
$tallinnimi = $row["tallinnimi"];
echo "<tr><td>$talli_id</td>
<td>$tallinnimi</td>
<td>$katuosoite</td>
<td>$postitoimipaikka</td>
<td>$postinro</td>
<td>$tiedotus</td>
</tr>";
}
echo "</table>";
} // Hakunappulaa painettu
?>
<FORM METHOD="LINK" ACTION="perus.php">
<INPUT TYPE="submit" VALUE="Tee uusi haku">
</FORM>
<FORM METHOD="LINK" ACTION="index.php">
<INPUT TYPE="submit" VALUE="Palaa alkuvalikkoon">
</FORM></body></html>Tuolla on selvennetty hakua kahdesta taulusta:
https://www.ohjelmointiputka.net/keskustelu/
Minä valitsisin noista tauluista kaikki sarakkeet, koska niitä on noin monta ja tulostuksessa vasta määrittäisin sarakkeen.
Tuosta lomakkeesta: Option-jutuille kannattaa lisätä value.
Kiitokset vastauksesta. Kyllähän minä kahdesta taulusta osaan hakea. En vain osaa kirjoittaa tuota SQL-lausetta oikein, koska siinä on käytetty implodea. Siihen tarvitsisin pseudokoodia, että miten sen toteutan?
Aihe on jo aika vanha, joten et voi enää vastata siihen.