Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: onkelma

Sivun loppuun

juhaback [19.11.2003 12:28:55]

#

moi mulla on sellainen sivu jossa on paljon juttuja joita voisi valita checkboxeilla ja ongelma on se kun on valittu jotain ja siirrytään sivulle jossa pitäisi näkyä kaikki ne jutut jotka oli valittu checkboxeilla, mutta sivu näyttääkin kaikki muutkin jotka eivät ole merkattuja, mikä siis neuvoksi että saan näkyviin vain ne jotka on valittu..?

Olga [19.11.2003 13:30:29]

#

eli pistät inputtiin kaikkien checkboxien nimeksi taulukon, esim näin:

<input type="checkbox" name="taulukko[]" value="paita">Paita</input><br />
<input type="checkbox" name="taulukko[]" value="housut">Housut</input>

jne.

sit ku käsittelet formin, sieltä taulukko[]-taulukosta löytyy kaikki valitut vaihtoehdot. Ja muistathan käyttää $_POST- tai $_GET- taulukoita kun syöksyt formia käsittelemään... :)

edit: typo

juhaback [20.11.2003 08:55:38]

#

joo no enpä tainnut ymmärtää mutta mulla on tällaiset koodit, osaatkohan neuvoa näiden avulla miten tämän saa toimimaan, käytän siis apachea ja mySQL:ää..

 <?php
require "aputoiminnot.phtml";
if ($id == "")
{
 if (!$kysely = mysql_query("insert into lainaus (kayttaja,
  tavarat, lainauspvm, palautuspvm)
  values ('$kayttaja','$muu','$lainauspvm','$palautuspvm') ",$yhteys))
 {
  print "<H2>Tallennus epäonnistui!</H2>";
  exit;
 }
 else
 {
   print "<H2>Tallennus onnistui!</H2>";
 }
}
else
{
   if (!$kysely = mysql_query("update lainaus set kayttaja='$kayttaja',
    tavarat='$tavarat', lainauspvm='$lainauspvm',
    palautuspvm='$palautuspvm'
    where id=$id and $tallentaja='$kayttajatunnus' ",$yhteys))
   {
     print "Tallennus epäonnistui!";
     exit;
   }
   else
   {
    print "Tallennus onnistui!";
   }
}
?>

ja sitten tämä on se lomake

<?php
require "aputoiminnot.phtml";
unset($tiedosto);
if (is_numeric($id))
{
  if (!$kysely = mysql_query("select kayttaja from kayttaja
     where tallentaja=kayttaja.tunnus and
     istuntotunnus='$istuntotunnus' ",$yhteys))
   {
      print "<LI>Haku epäonnistui!";
      exit;
   }
   else
   {
      $tiedosto = mysql_fetch_row($kysely);
  }
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
.style1 {
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-weight: bold;
}
body {
	background-color: #FFCC66;
	background-image: url(kamerat/kuvat/sivuntausta.jpg);
}
.style13 {font-size: 10px}
.style15 {font-size: 16px}
.style16 {font-family: Verdana, Arial, Helvetica, sans-serif; font-weight: bold; font-size: 16px; }
.style18 {font-size: 11px}
.style22 {color: #000000}
a:link {
	color: #000000;
}
a:visited {
	color: #000000;
}
a:hover {
	color: #000000;
}
a:active {
	color: #000000;
}
.style23 {font-size: 14px}
.style24 {font-family: Verdana, Arial, Helvetica, sans-serif; font-weight: bold; font-size: 14px; }
.style25 {font-size: 12px}
.style28 {
	font-size: 18px;
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-weight: bold;
}
-->
</style>
</head>

<body>
<br><br><br>
<div align="center">
  <table width="415" height="40" border="1" bordercolor="#000066" cellpadding="0" cellspacing="0">
    <tr>
      <td width="405" bordercolor="#000066" bgcolor="#AFCADF" cellpadding="0" cellspacing="0"><div align="center" class="style28">TAVAROIDEN LAINAUS/VARAUS LISTA </div></td>
    </tr>
  </table>
</div>
<form name="form1" method="post" action="tallenna.phtml">
  <table width="1200" border="2" align="center" cellpadding="0" cellspacing="0" bordercolor="#000066" bgcolor="#AFCADF">
    <tr>
      <td height="21" bgcolor="#AFCADF" class="style1 style15">K&auml;ytt&auml;j&auml;:
      <input type="text" name="kayttaja"></td>
      <td height="21" bgcolor="#AFCADF" class="style1 style15"><span class="style23">LAINAUSPVM:
          <input type="text" name="lainauspvm">
      </span> </td>
      <td height="21" bgcolor="#AFCADF" class="style1 style23"><span class="style1 style15"><span class="style23">PALAUTUSPVM:
            <input type="text" name="palautuspvm">
      </span></span></td>
      <td height="21" bgcolor="#AFCADF" class="style1 style15">&nbsp;</td>
    </tr>
    <tr>
      <td width="25%" class="style1 style23">VIDEOKAMERAT</td>
      <td width="25%" class="style24">DIGIKAMERAT</td>
      <td width="25%" class="style24">&Auml;&Auml;NILAITTEET</td>
      <td width="25%" class="style24">VALOT+MUUT</td>
    </tr>
    <tr>
      <td width="25%" class="style25">
        <input name="Canon MiniDV MV30i" type="checkbox" id="Canon MiniDV MV30i" value="Canon MiniDV MV30i">
        <a href="kamerat/canonmv30i.html" target="_blank" class="style22">Canon MiniDV MV30i</a></td>
      <td width="25%"><span class="style25">
        <input name="Canon PowerShot PC1003" type="checkbox" id="Canon PowerShot PC1003" value="Canon PowerShot PC1003">
        <span class="style22"><a href="kamerat/canonpc1003.html" target="_blank">Canon PowerShot PC1003</a></span></span></td>
      <td width="25%" class="style25">
        <input name="MiniDisc SonyWalkman MZ-R900" type="checkbox" id="MiniDisc SonyWalkman MZ-R900" value="MiniDisc SonyWalkman MZ-R900">
        <a href="kamerat/minidiscmz-r900.html" target="_blank" class="style22">MiniDisc SonyWalkman MZ-R900</a></td>
      <td width="25%"><input name="checkbox4" type="checkbox" value="checkbox"></td>
    </tr>
    <tr>
      <td width="25%" class="style25">
        <input name="Sony MiniDV Digitalcam DSC-PD150P" type="checkbox" id="Sony MiniDV Digitalcam DSC-PD150P" value="Sony MiniDV Digitalcam DSC-PD150P">
        <a href="kamerat/sonydsc-pd150p.html" target="_blank" class="style22">Sony MiniDV Digitalcam DSC-PD150P</a></td>
      <td width="25%" class="style25">
        <input name="Sony CyberShot DSC-F505V" type="checkbox" id="Sony CyberShot DSC-F505V" value="Sony CyberShot DSC-F505V">
        <a href="kamerat/sonydsc-f505v.html" target="_blank" class="style22">Sony CyberShot DSC-F505V</a></td>
      <td width="25%" class="style25">
        <input name="MiniDisc SonyWalkman MZ-R909" type="checkbox" id="MiniDisc SonyWalkman MZ-R909" value="MiniDisc SonyWalkman MZ-R909">
        <a href="kamerat/minidiscmz-r909.html" target="_blank"><span class="style22">MiniDisc SonyWalkman MZ-R909</span></a></td>
      <td width="25%"><input name="checkbox8" type="checkbox" value="checkbox"></td>
    </tr>
    <tr>
      <td width="25%" class="style25">
        <input name="Sony MiniDV DigitalHandycam DCR-PC110E" type="checkbox" id="Sony MiniDV DigitalHandycam DCR-PC110E" value="Sony MiniDV DigitalHandycam DCR-PC110E">
        <a href="kamerat/sonydcr-pc110e.html" target="_blank" class="style22">Sony MiniDV DigitalHandycam DCR-PC110E</a></td>
      <td width="25%" class="style25">
        <input name="Sony DigitalStillCamera DSC-P10" type="checkbox" id="Sony DigitalStillCamera DSC-P10" value="Sony DigitalStillCamera DSC-P10">
        <a href="kamerat/Sonydsc-p10.html" target="_blank" class="style22">Sony DigitalStillCamera DSC-P10</a></td>
      <td width="25%" class="style25">
        <input name="Rycote Microphone" type="checkbox" id="Rycote Microphone" value="Rycote Microphone">
        <a href="kamerat/rycotemicrophone.html" target="_blank" class="style22">Rycote Microphone</a></td>
      <td width="25%"><input name="checkbox12" type="checkbox" value="checkbox"></td>
    </tr>
    <tr>
      <td width="25%" class="style25">
        <input name="Sony MiniDV DigitalHandycam DCR-PC110E(2)" type="checkbox" id="Sony MiniDV DigitalHandycam DCR-PC110E(2)" value="Sony MiniDV DigitalHandycam DCR-PC110E(2)">
        <a href="kamerat/sonydcr-pc110e.html" target="_blank" class="style22">Sony MiniDV DigitalHandycam DCR-PC110E(2)</a></td>
      <td width="25%" class="style25">
        <input name="Sony DigitalStillCamera DSC-P10(2)" type="checkbox" id="Sony DigitalStillCamera DSC-P10(2)" value="Sony DigitalStillCamera DSC-P10(2)">
        <a href="kamerat/Sonydsc-p10.html" target="_blank" class="style22">Sony DigitalStillCamera DSC-P10(2)</a></td>
      <td width="25%" class="style25">
        <input name="Shure UP4" type="checkbox" id="Shure UP4" value="Shure UP4">
        <a href="kamerat/shureup4.html" target="_blank" class="style22">Shure UP4</a></td>
      <td width="25%"><input name="checkbox16" type="checkbox" value="checkbox"></td>
    </tr>
    <tr>
      <td width="25%" class="style25">
        <input name="Sony MiniDV DigitalHandycam DCR-TRV18E" type="checkbox" id="Sony MiniDV DigitalHandycam DCR-TRV18E" value="Sony MiniDV DigitalHandycam DCR-TRV18E">
        <a href="kamerat/sonydcr-trv18e.html" target="_blank" class="style22">Sony MiniDV DigitalHandycam DCR-TRV18E</a></td>
      <td width="25%"><input name="checkbox18" type="checkbox" value="checkbox"></td>
      <td width="25%"><input name="checkbox19" type="checkbox" value="checkbox"></td>
      <td width="25%"><input name="checkbox20" type="checkbox" value="checkbox"></td>
    </tr>
    <tr>
      <td width="25%"><input name="checkbox21" type="checkbox" value="checkbox"></td>
      <td width="25%"><input name="checkbox22" type="checkbox" value="checkbox"></td>
      <td width="25%"><input name="checkbox23" type="checkbox" value="checkbox"></td>
      <td width="25%"><input name="checkbox24" type="checkbox" value="checkbox"></td>
    </tr>
    <tr>
      <td width="25%"><input name="checkbox25" type="checkbox" value="checkbox"></td>
      <td width="25%"><input name="checkbox26" type="checkbox" value="checkbox"></td>
      <td width="25%"><input name="checkbox27" type="checkbox" value="checkbox"></td>
      <td width="25%"><input name="checkbox28" type="checkbox" value="checkbox"></td>
    </tr>
    <tr>
      <td width="25%"><input name="checkbox29" type="checkbox" value="checkbox"></td>
      <td width="25%"><input name="checkbox30" type="checkbox" value="checkbox"></td>
      <td width="25%"><input name="checkbox31" type="checkbox" value="checkbox"></td>
      <td width="25%"><input name="checkbox32" type="checkbox" value="checkbox"></td>
    </tr>
    <tr>
      <td width="25%"><input name="checkbox33" type="checkbox" value="checkbox">      </td>
      <td width="25%"><input name="checkbox34" type="checkbox" value="checkbox"></td>
      <td width="25%"><input name="checkbox35" type="checkbox" value="checkbox"></td>
      <td width="25%">
        <div align="left" class="style18">
          <input name="muubox" type="checkbox" id="muubox" value="checkbox">
          <span class="style1">MUU:</span>          <input name="muu" type="text" id="muu" value="" size="24%">
        </div></td>
    </tr>
    <tr>
      <td width="25%"><input name="Submit" type="submit" class="style1" value="TARKASTUS/VARAUS"></td>
      <td width="25%">&nbsp;</td>
      <td width="25%">&nbsp;</td>
      <td width="25%"><div align="right" class="style13">
        <div align="left">
          <input name="Submit2" type="reset" class="style1" value="TYHJENNÄ LOMAKE">
        </div>
      </div></td>
    </tr>
  </table>
</form>
<ul><a href="index.phtml" class="style1">Paluu etusivulle</a></ul>
</body>
</html>

Olga [20.11.2003 09:47:04]

#

En nyt jaksa alkaa käymään läpi tuota koko koodia, kun ymmärsin että ongelma on nimenomaan noissa checkboxeissa. Lainaanpa pätkän tuosta ylläolevasta:

...
<input name="Canon MiniDV MV30i" type="checkbox" id="Canon MiniDV MV30i" value="Canon MiniDV MV30i">
...
<input name="Canon PowerShot PC1003" type="checkbox" id="Canon PowerShot PC1003" value="Canon PowerShot PC1003">
...

jne.

Koska sulla on noin paljon noita valittavia juttuja, ois varmaan kätevintä käyttää taulukkoa niinku jo aiemmin mainostin. Eli jokaiseen checkboxiin pistät nimeksi taulukon. Esimerkkinä noi ylläolevat seuraavasti:

...
<input name="kamat[]" type="checkbox" id="Canon MiniDV MV30i" value="Canon MiniDV MV30i">
...
<input name="kamat[]" type="checkbox" id="Canon PowerShot PC1003" value="Canon PowerShot PC1003">
...

Nyt sit ku sä käsittelet tuon formin, sieltä $_POST['kamat']-taulukosta löytyy kaikki ne valitut setit. Eli jos vaikka ainoastaan noi ylläolevat on valittu, taulukosta löytyy seuraavaa:

$taulukko = $_POST['kamat'];

// $taulukko[0] = "Canon MiniDV MV30i
// $taulukko[1] = "Canon PowerShot PC1003"

ja niin edelleen. Mutta jos sä pidät nuo nimet tuollaisenaan, et jokaisella checkboxilla on oma nimi, sulla on sit triljoona erinimistä muuttujaa, joiden arvot on joko "on" tai "off".

Toivottavasti selvensi edes vähän.

edit: typoja

juhaback [20.11.2003 15:12:22]

#

Juupajuu.. en taida oikein osata tätä php:ta kun ei vielläkään aukene, mutta jos yksinkertaistaa näin että mulla on tämän näköinen html lomake

<html>
<body>
<form name="form1" method="post" action="tallenna.php">
  <p>
    Nimesi:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <input type="text" name="textfield">
     Kamera1
     <input type="checkbox" name="checkbox" value="checkbox">
     <br>
    Lainausp&auml;iv&auml;:&nbsp;
    <input type="text" name="textfield2">
    Kamera2
    <input type="checkbox" name="checkbox2" value="checkbox">
    <br>
    Palautusp&auml;iv&auml;:
    <input type="text" name="textfield3">
Kamera3
<input type="checkbox" name="checkbox3" value="checkbox">
</p>
  <p>
    <input type="submit" name="Submit" value="L&auml;het&auml;">&nbsp;&nbsp;&nbsp;
    <input type="reset" name="Submit2" value="Tyhjenn&auml;">
</p>
</form>
</body>
</html>

Niin minkälainen pitää olla tuon tallenna.php tiedoston jotta se osaa tallentaa myös nuo checkboxit sinne nimillä kamera1, kamera2, kamera3.. ja mitkä noiden checkboxien nimet pitää olla..?
kiitoksia jo kovasti etukäteen..

Olga [20.11.2003 15:41:53]

#

Okei. Jos haluat että sulla tulee formista liuta muuttujia, joiden nimet on kamera1, kamera2 jne., pistät kyseisten checkboxien name-kohtiin kamera1, kamera2 ja niin edelleen. Esim seuraavasti:

<form action="tallenna.php" method="post">
<input type="checkbox" name="kamera1">Kamera1<br>
<input type="checkbox" name="kamera2">Kamera2<br>
<input type="checkbox" name="kamera3">Kamera3
<input type="submit" value="Lähetä" name="nappula">
</form>

nyt sit tallenna.php - tiedostossa ku sä käsittelet noita formista tulleita muuttujia, jos esim Kamera1 ja Kamera2 on valittuina, $_POST['kamera1']:stä löytyy arvo "on", $_POST['kamera2']:sta löytyy arvo "on", ja $_POST['kamera3']:lla ei oo arvoa lainkaan, sillä sitä ei ole valittu (tämä siis pieni korjaus edelliseen viestiin).

MUTTA:

Jos teet seuraavasti:

<form action="tallenna.php" method="post">
<input type="checkbox" name="tuotteet[]" value="Kamera1">Kamera1<br>
<input type="checkbox" name="tuotteet[]" value="Kamera2">Kamera2<br>
<input type="checkbox" name="tuotteet[]" value="Kamera3">Kamera3
<input type="submit" value="Lähetä" name="nappula">
</form>

Oletetaan jälleen että kamerat 1 ja 2 on valittuina. Tässä tapauksessa $_POST['tuotteet'] on taulukko, josta löytyy arvot "Kamera1" ja "Kamera2".

Toivottasti nyt olin vähän selvempi puheissani :)

juhaback [21.11.2003 08:32:31]

#

Joo no nyt mä ymmärrän jo aika hyvin tämän mutta en oikein osaa tehdä tota talenna.php sivua ja miten tota $_POST:ia käytetään on vähän epäselvää.. mutta kiitos paljon ja koitan etsiä jostain esimerkin jossa tota ois käytetty, niin ehkä tajuan miten teen sen php sivun..=) Toi $_post['tuotteet'] on kyllä paljon selkeämpi, kun se mitä itse yritin..=)

Olga [21.11.2003 11:35:47]

#

Hyvä ku oot reipas ja yrität itse selvittää. Mut jos ei aukene, voin pistää vähän apua pienen esimerkin muodossa.

lomakesivu:

<form action ="tallenna.php" method="post">
Nimesi:
<input type="text" name="nimesi">
<input type="checkbox" name="tuotteet[]" value="kamera1">Kamera1<br>
<input type="checkbox" name="tuotteet[]" value="kamera2">Kamera2<br>
<input type="checkbox" name="tuotteet[]" value="kamera3">Kamera3
<input type="submit" value="Lähetä" name="nappula">
</form>

tallenna.php:

<?php

if(isset($_POST['nappula'])) { // onko lähetä-namiskaa painettu

  $nimi = $_POST['nimesi'];
  $tavarat = $_POST['tuotteet'];

  /* tulostetaan setit */

  print "Heipsan ".$nimi."! ";

  if(count($tavarat)>0) {

    print "Tilasit seuraavat tuotteet:<br><br>";

    for($i=0;$i<count($tavarat);$i++) {
      print $tavarat[$i]."<br>";
    } // for

  } // if

  else
    print "Et tilannut yhtään mitään. Höh.";

} // if

?>

Noin jotakuinkin.

juhaback [21.11.2003 11:59:54]

#

Jeps, kiitti tosi paljon nyt toimii..=)

juhaback [21.11.2003 12:14:34]

#

Joo kiitos viellä edellisestä, mutta osaatko vielä kertoa miten saa tehtyä niin että kun toi nyt näyttää mitä on varattu niin se myös samalla tallentaisi tiedot mySQL tietokantaan..?

Olga [21.11.2003 12:31:35]

#

No hyvä et toimii :) Ja valitettavasti en itse oo koskaan käyttäny MySQL:ää, joten en siinä asiassa voi auttaa. Kenties joku muu?

juhaback [21.11.2003 13:07:50]

#

Ok.. kiitos kuitenkin paljon, ja enhän mä kovin kaukana enää ole oikeasta kun saan jo päivämäärät tulostumaan tietokantaan, mutta tuotteet ja käyttäjä kohdissa näkyy vain array.. jeps mutta kiitos kuitenkin


Sivun alkuun

Vastaus

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

Tietoa sivustosta