Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: MYSQL/PHP ja taulukkomuotoinen tuloste

urpokarhu [24.04.2007 14:52:10]

#

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&aumlysin hakuarvoihin vastaavat tulokset n&aumlytet&auml&aumln.</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&auml<input name="sijainti" value="maatilan yhteydess&auml" 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&auml" ><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>

pistemies [24.04.2007 18:04:33]

#

Tuolla on selvennetty hakua kahdesta taulusta:
https://www.ohjelmointiputka.net/keskustelu/14512-mysql-haku-kahdesta-taulusta

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.

urpokarhu [25.04.2007 17:03:57]

#

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?

Vastaus

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

Tietoa sivustosta