Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: MySQL tietokanta ja tietokannasta haku

Sivun loppuun

Jon31 [08.07.2008 14:48:04]

#

Hei,

PHP:ta osaan jotenkin ja olen luomassa verkkokauppasysteemiä. Jos joku jaksaisi auttaa minua, niin olisin tosi kiitollinen. Eli ihan aluksi olen siis luonut Phpmyadminilla MySQL tietokannan "tuotteet". Sinne olen luonut taulukon, johon tiedot tuotteista (esimerkkeinä voisivat toimia vaikkapa kermakakku ja hillokakku) ja näille kentiksi: id, nimi, kuvaus ja hinta. Seuraavaksi olisi tarkoitus siis hakea tuotteet tietokannasta html koodiin.

<TABLE width="100%" cellpadding=0 cellspacing=0>
<tr>
<td valign="top" rowspan="3">
<img src="tuotteet/kuvat/eikuvaa.jpg">
</td>
<td width="10" rowspan="3">
</td>

<td>
<H3>Tuotteen nimi //tulisi suoraan tietokannasta tähän</H3>
</td>
</tr>

<tr>
<td>
Tuotteen kuvaus //tulisi suoraan tietokannasta tähän
</td>
</tr>

<tr>
<td valign="bottom">
Hinta //tulisi myös suoraan tietokannasta tähän ja tähän pitäisi saada vielä "lisää ostoskoriin" painike, joka lähettäisi tuotteen id:n eteenpäin ostoskoriin.
</td>
</tr>
</TABLE>

Ylläoleva table olisi siis tuotesivulla useampaan kertaan. (toistuisi n 10krt), koska jokaiselle tuotteelle pitäisi saada oma taulukkonsa, johon tulisivat esille tuotteen tiedot jne. ja sitten kun painaisi "Lisää ostoskoriin" -nappia, tuotteen tiedot (nimi ja hinta ja id?) lähetettäisiin eteenpäin.
Olisiko jollain aikaa auttaa ja kertoa mahd. koodilla, että miten tämä toteutettaisiin? Ja olenko tehnyt oikein, kun olen luonut vain yhden taulukon, vai pitäisikö jokaiselle tuotteelle tehdä oma taulukkonsa?

Vasta_alkaja [08.07.2008 14:57:09]

#

Ei ole testattu, mutta pastee virheet tänne.

function TassaTama();


function TassaTama(){
$kysely = "SELECT id, nimi, kuvaus ja hinta FROM tuotteet";
$tulos = mysql_query($kysely);
if(!$tulos){
 echo mysql_error();
}

echo '<table style="width:100%;">';
while($r = mysql_fetch_assoc($tulos)){
  echo '<tr><td>Tuotenumero</td><td>' . intval($r['id']) .'</td></tr>';
  echo '<tr><td>Tuote</td><td>' . htmlspecialchars($r['nimi']) .'</td></tr>';
  echo '<tr><td>Kuvaus</td><td>' . htmlspecialchars(nl2br($r['kuvaus'])) .'</td></tr>';
  echo '<tr><td>hinta</td><td>' . htmlspecialchars($r['hinta']) .'</td></tr>';
}
echo '</table>';
}

tsuriga [08.07.2008 15:01:10]

#

Heti ensin pitää kysyä, että miksi ei käytetä valmista softaa? Osaamistaso on niin kaukana tarvittavasta, että olisi mielekkäämpää valita sopiva valmis webkauppasofta ja muokata sitä tarpeiden mukaan, varsinkin jos tuotos on ihan oikeaan käyttöön tulossa.

Teuro [08.07.2008 15:12:44]

#

Eikö kannattaisi tehdä yksi taulukko, jossa on jokainen tuote omalla rivillään. Sarakkeet voisivat olla nuo mainitsemasi asiat. Viimeisessä sarakkeessa voisi olla linkki lisää koriin.

<?php
/* Haetaan kaikki tuotteet */
$tuotteet = mysql_query("SELECT id, nimi, kuvaus, hinta FROM tuotteet ORDER BY nimi", $yhteys);

echo"<table>\r\n";
echo"<th>nimi</th><th>hinta</th><th>lisää</th>\r\n";
while($rivi = mysql_fetch_array( $tuotteet )){
echo"  <tr>\r\n";
echo"    <td>" . $rivi['nimi'] . "</td>\r\n";
echo"    <td>" . $rivi['hinta'] . "</td>\r\n";
echo"    <td><a href=\"koriin.php\">lisää koriin</a></td>\r\n";
echo"  </tr>\r\n";
}
echo"</table>\r\n";
?>

Tässä jokaisesta tuotteesta voisi tehdä linkin naytaTuote.php?tuoteId=id sivulle, jossa näytetään tuotteen tarkat tiedot. Erillistä funktiota tuskin tarvitaan tähän tapaukseen.

Jon31 [08.07.2008 15:24:49]

#

Onko tiedossa jotain hyvää softaa, jota kannattaisi käyttää? Olen yrittänyt etsiä. Pitäisi saada "upotettua" omaan ulkoasuuni ja mitään kirjautumis/rekisteröitymis systeemejä ei saisi olla.. Ja maksutavoiksikin tarvittaisiin vain ennakkomaksu/postiennakko.. Onkohan mitään valmista, joka vastaisi vaatimuksiani?:D

Vasta_alkaja [09.07.2008 21:56:21]

#

Maksullisia, mutta ei kalliita

http://www.omaverkkokauppa.fi/epages/OVK.sf?gclid=CMrZ9Z69s5QCFQuKMAodswGIUg
http://www.domainkeskus.com/oscommerce/?gclid­=CKrcxPO8s5QCFRSA1QodvDY7Tg
http://www.zoner.fi/omakauppa.html?gclid­=CLTK17m9s5QCFQuKMAodswGIUg

3kk ilmainen

http://valmiskauppa.fi/etusivu/

tsuriga [09.07.2008 23:04:08]

#

En kehannut aiemmin vastata kun ei omakohtaista kokemusta ole, mureakuhan puolelta voisit löytää paremmin oman käden tietoa. Vasta_alkajan linkkaamat tuotteet ovat valmiita palveluja. Tässä kuitenkin oli kyse integraatiosta, jolloin voisin linkata luultavasti tunnetuimpiin:

-Zen Cart
-osCommerce

Ei se aivan helppoa kuitenkaan ole naittaa kahta toisistaan riippumatonta sovellusta.

Jon31 [09.07.2008 23:30:44]

#

Kiitos. Käytin yhtä keskeneräistä koodia ja lähdin siitä rakentamaan tuota ostoskorisysteemiä. Ihan hyvässä vaiheessa jo. Kyselen lisää täältä, jos tulee joitain ongelmia:) Enää pitäisi saada otettua tiedot tietokannasta tuolle "tuotesivulle", jossa tuotteet esillä ja sitä kautta lähettää tiedot myös eteenpäin.. No katotaan jos saisin onnistumaan jotenkin.

Jon31 [10.07.2008 12:57:05]

#

Nyt enää viimeinen ongelma. Miten saisin listattua kaikki tietokannasta tulevat tiedot

   // Määrittele MySQL-resurssille muuttuja, jos sivustolle tulee joskus toinen samanaikainen tietokantayhteys, voivat queryt mennä väärällä yhteydellä
   $m = mysql_connect("localhost","tunnus","salasana");

   // Käytetään muuttujaa, toisena parametrinä
   mysql_select_db("tietokanta", $m);

   // Kysely - huomaa yhteyden muuttuja toisena parametrinä
   $products = mysql_query('SELECT `id`, `nimi`, `hinta` FROM `taulu`', $m);

   // Kyselystä tuli rivejä
   if(mysql_num_rows($products))

automaattisesti funktioksi

$products = array();
$products[1] = array("id"=>tähän id,"nimi"=>"tähän nimi","hinta"=>tähän hinta);
$products[2] = array("id"=>tähän id,"nimi"=>"tähän nimi","hinta"=>tähän hinta);
$products[3] = array("id"=>tähän id,"nimi"=>"tähän nimi","hinta"=>tähän hinta);

Tietoja ei siis tarvitse mitenkään tulostaa, vaan kerätä ylös vain tuollein..

Jon31 [10.07.2008 15:53:00]

#

Tuli niin epäselvä teksti, että en itekkään ymmärtäis lukea sitä tosta..:D Mutta ajan sitä takaa, että miten saisin tietokannasta tulevat tiedot muutettua taulukko funktioksi ($products = array)..

Tumettaja [10.07.2008 19:28:46]

#

Voit yrittää seuraavanlaista viritelmää.
Tässä siis haetaan jokaisen tuotteet tiedot omaan taulukkoon.

$tuotteet = mysql_query("SELECT id, nimi, kuvaus, hinta FROM tuotteet", $yhteys);

for($i = 0; $i < mysql_num_rows($tuotteet)) {
	$id = mysql_result($tuotteet, $i, "id");
	$nimi = mysql_result($tuotteet, $i, "nimi");
	$hinta = mysql_result($tuotteet, $i, "hinta");
	$products[$i] = array($id, $nimi, $hinta);
}

Jon31 [10.07.2008 19:51:21]

#

Parse error: parse error, unexpected ')', expecting ';' in /var/www/virtual/sivu.domain/htdocs/tuotteet.php on line 12

ja rivi 12 on tämä

for($i = 0; $i < mysql_num_rows($tuotteet)) {

ja kokonaisuudessaan tein sen siis näin

<?php

   $yhteys = mysql_connect("localhost","tunnukseni","salasanani");

   mysql_select_db("tietokantani", $yhteys);

   $tuotteet = mysql_query("SELECT id, nimi, hinta FROM tauluni", $yhtys);

for($i = 0; $i < mysql_num_rows($tuotteet)) {
    $id = mysql_result($tuotteet, $i, "id");
    $nimi = mysql_result($tuotteet, $i, "nimi");
    $hinta = mysql_result($tuotteet, $i, "hinta");
    $products[$i] = array($id, $nimi, $hinta);
}
?>

Vastasithan viimeisimpään ongelmaani?:D EDIT: et tainnut vastata..

Newb [10.07.2008 20:00:21]

#

Jon31 kirjoitti:

Parse error: parse error, unexpected ')', expecting ';' in /var/www/virtual/sivu.domain/htdocs/tuotteet.php on line 12

ja rivi 12 on tämä

for($i = 0; $i < mysql_num_rows($tuotteet)) {

Rivin lopusta puuttuu ;

Jon31 [10.07.2008 20:02:03]

#

Ei tuohon riviin tartte ;

Andu [10.07.2008 20:06:25]

#

Itse asiassa tarvitaan. Oikea rivi olisi luultavasti tämä:

for($i = 0; $i < mysql_num_rows($tuotteet); $i++) {

Tumettaja [10.07.2008 20:06:37]

#

Olin jättänyt vahingossa tuon for-silmukan vajaaksi.
Korjattunahan se menee näin:
EDIT: Andu ehti ensin

for($i = 0; $i < mysql_num_rows($tuotteet); $i++) {

Jon31 [10.07.2008 20:09:35]

#

Ahaa:D Noni nyt toimii kunnolla. Kiitokset vielä kerran.
PS. miten saisin tuon muuttuja $i :n lähtemään aluksi vielä yhden numeron pienemmästä? Haluisin vaan tietää..

tsuriga [11.07.2008 02:18:34]

#

Asiakkaan näkökulmasta seikkailullista, jopa mahdollisesti vaarallista touhua jos tämä on oikeaan käyttöön menossa. Viimeisimpään kysymykseen vastaten: Laittamalla alkukohdaksi yhtä pienemmän. Useat oppaat käsittelevät kyllä for-rakenteen ja kyseisen ongelman ratkaiseminen myös omilla kokeiluilla on melko triviaalia. Rivejä voi kysellä kannasta valmiiksi taulukkomuodossa, kts. mysql_fetch_assoc.

reca [11.07.2008 06:08:00]

#

Jon31 kirjoitti:

PS. miten saisin tuon muuttuja $i :n lähtemään aluksi vielä yhden numeron pienemmästä? Haluisin vaan tietää..

https://www.ohjelmointiputka.net/oppaat/opas.php?tunnus=phpj3#forsilmukat

Jon31 [11.07.2008 12:28:48]

#

tsuriga kirjoitti:

Asiakkaan näkökulmasta seikkailullista, jopa mahdollisesti vaarallista touhua jos tämä on oikeaan käyttöön menossa. mysql_fetch_assoc.

Kuinka niin vaarallista?

tsuriga [11.07.2008 14:02:50]

#

Kaupan ollessa kyseessä, raha liikkuu ja sivuston käyttäessä rikkonaista HTML-merkkausta ja aloittelijatason koodia, sivusto on altis virheille, jotka aiheuttavat asiakkaille turhia riskejä. Käytin ilmaisua "mahdollisesti vaarallista" implikoimaan lähinnä potentiaalista tietoturvariskiä - tässä on hyvin mahdollista, että siihen ei ole kiinnitetty riittävästi huomiota. Tarkoituksenani ei ole haukkua ja tätä myöten lannistaa, vaan kannustaa ajattelemaan myös asiakkaan kantilta - asiakkaana tuntuisi turvallisemmalta asioida softalla, joka on testattu ja turvalliseksi todettu. Mitä vastaan voidaan toki argumentoida, että tunnettu softa on myös alttiimpi ollessaan avointa koodia, mutta tapauskohtaisesti ajatellen... Ideaali tilannehan on se, että osaa ja hanskaa oikeaoppisen HTML:n, ulkoasukuvauksen sekä PHP:n ja tunnistaa ja osaa ennaltaehkäistä kaikkia tietoturvariskejä - silloin voi harkita oman softan toteuttamista jos niikseen haluaa.


Sivun alkuun

Vastaus

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

Tietoa sivustosta