Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: php+mysql onkelma

abina [08.01.2004 12:05:12]

#

eli idea on tämä: haluan että sivulle tulee kaikki mysql tietokannassani olevat tuotteet. ja sen jälkeen siinä voi valita paidan koon ja montako kappaletta. kun painaa tallenna -nappia niin ohjelma formin avulla tallentaa luvut sessioneihin. ja myös kappale -tekstilaatikkoon laittaa oletukseksi tuon määrän minkä tallenti. mutta en tiedä olenko miten väärään suuntaan menossa kun en ole vielä kovin osaava mutta tässä koodi:

sivun alussa: session_start();

ja itse sivu:

  $yhteys = mysql_connect("localhost", "root", "");
  mysql_select_db("ekauppa", $yhteys);

  $tuotteet = "SELECT * FROM tuotteet";
  $haku = mysql_query($tuotteet, $yhteys) or die("Virhe tuotteiden haussa!");

for ($i = 0; $i < mysql_num_rows($haku); $i++) {
   $nimi = mysql_result($haku, $i, "nimi");
   $hinta = mysql_result($haku, $i, "hinta");
   $kuva = mysql_result($haku, $i, "kuva");
echo "<form action=\"tallennus.php\" method=\"post\">";
echo "$nimi $hinta <a href=\"$kuva\"  target=\"_blank\">kuva</a> ";
echo "<input name=\"hiddenField\" type=\"hidden\" value=\" $i \">";
echo "<select name=\"tkoko $1 \"> ";
echo "<option value=\"s\">s</option>";
echo "<option value=\"m\">m</option>";
echo "<option value=\"l\">l</option>";
$valittukoko = $_session["koko".$fi.""];
echo "</select> valittu koko: $valittukoko";
$value =  $_session["maara".$fi.""];
echo "<input name=\"tmaara".$i."\" type=\"text\" value=\" $value \"> ";
echo "<input type=\"submit\" name=\"Submit\" value=\"tallenna\"> </form><br>";

$_session["maara".$i] = "tmaara".$i;
$_session["koko".$i.""] = "tkoko ".$i."";

   }

nyt rupee menemään jo hermon päälle ku viime yönä 4h nukkunu mutta ei ratkasua löydy. Kiitän ja kumarran avun antajille!

NiKC [08.01.2004 12:36:52]

#

Kokeiles tätä siinä loopissa...

  $_SESSION["tmaara" . $i] = $_POST["tmaara" . $i];

...ja sama koolle, ja muillekin postilla siirtyville tiedoille.

Teme [08.01.2004 13:02:45]

#

Heitetty hatusta, ei testattu:

<?php
session_start();

$yhteys = mysql_connect("localhost", "root", "");
mysql_select_db("ekauppa", $yhteys);

$query = "SELECT * FROM Tuotteet";
$tulos = mysql_query($query) or die("Virhe tuotteiden haussa!");

if (mysql_num_rows($tulos) == 0) { die("Ei tuotteita."); }

$num = 0;
while ($data = mysql_fetch_array($tulos))
{
     // $num++; - Jos numerointi tarvii aloittaa heti
     // 1:sestä, ota kommenttimerkit pois ja poista
     // loopin lopussa oleva samanlainen rivi.
     echo('<form action="tallennus.php" method="post">');
     echo("<b>" . $data['Nimi'] . "</b> - " . $data['Hinta'] . " » <a href=\"" . $data['Kuva'] . "\">Kuva</a>");
     echo("<select name=\"tkoko $num\">\n");
     echo("<option value=\"S\">S</option>\n");
     echo("<option value=\"M\">M</option>\n");
     echo("<option value=\"L\">L</option>\n");
     echo("</select>\n");
     echo("Valittu koko: " . $_SESSION['koko' . $fi] . "\n");
     echo("<input name=\"tmaara\"" . $num . "\" type=\"text\" value=\"" . $_SESSION['maara' . $fi] . "\">\n");
     echo("<input type=\"submit\" value=\"Tallenna!\">\n");
     echo("</form><br>\n");

     $_SESSION['maara' . $num] = "tmaara" . $num; // ??
     $_SESSION['koko' . $num] = "tkoko " . $num; // ??
     // Hmm, mitäköhän noi kaks riviä meinaa?
     // Laitoin kuiteski siihen, ku ne oli sullaki :P

     $num++;
}

mysql_close($yhteys);

?>

Kuten mainitsin, edelleen testaamatonta, hatusta heitettyä koodia. Havaitsin koodaillessani muutamia tyypillisiä virheitä koodissasi, niitä on jokaisella joskus. Toivottavasti tuo koodaamani pätkä auttaa jatkamaan.

Ilmoittelethan täällä koodin toimivuudesta yms.?

Edit: Myslin yhteyden sulku unohtui.

abina [08.01.2004 17:03:38]

#

Nyt alkaa olla aika lailla hyvällä mallilla tämä mutta vielä muutama ongelma jota en tahdo löytää, joka varmasti on kuitenkin todella yksinkertainen:

1. "valittu koko: " jälkeen ei tule näkyviin valittua kokoa. vaikka yritän sen laittaa ja sitten hakea sessioneista.

2. tiedot tulee jäljessä. eli kun vaikka laitan että tilaan 12 paitoja niin tekstilaatikkoon ei ilmesty mitään. sitten muutan eli laitan tekstilaatikkoon 10 ja tallenna niin tulee 12. ja sitten 8 niin tulee 10. jne. eli tuohon auttaa varmasti oikea järjestys mutta mikä on se? mikä on väärässä paikassa?

tässä tämänhetkinen koodi: (yläällä session_start();)

 <?php

  $yhteys = mysql_connect("localhost", "root", "");
  mysql_select_db("ekauppa", $yhteys);

  $tuotteet = "SELECT * FROM tuotteet";
  $haku = mysql_query($tuotteet, $yhteys) or die("Virhe tuotteiden haussa!");

for ($i = 0; $i < mysql_num_rows($haku); $i++) {
   $nimi = mysql_result($haku, $i, "nimi");
   $hinta = mysql_result($haku, $i, "hinta");
   $kuva = mysql_result($haku, $i, "kuva");
echo "<form action=\"tallennus.php\" method=\"post\">";
echo "$nimi $hinta <a href=\"$kuva\"  target=\"_blank\">kuva</a> ";
echo "<input name=\"hiddenField\" type=\"hidden\" value=\" $i \">";
echo "<select name=\"tkoko $1 \"> ";
echo "<option value=\"s\">s</option>";
echo "<option value=\"m\">m</option>";
echo "<option value=\"l\">l</option>";
$valittukoko = $_session["tkoko" .$i];
echo "</select> valittu koko: $valittukoko";
$value =  $_SESSION["tmaara" . $i];
echo "<input name=\"tmaara".$i."\" type=\"text\" value=\" ".$value." \"> ";
echo "<input type=\"submit\" name=\"Submit\" value=\"tallenna\"> </form><br>";

  $_SESSION["tmaara" . $i] = $_POST["tmaara" . $i];
  $_SESSION["tkoko" . $i] = $_POST["tkoko" . $i];
   }

   mysql_close($yhteys);
  ?>

NiKC [11.01.2004 17:50:39]

#

Tämä joko toimii tai ei. En oo testannu. Tod näk jotain bugeja löytyy mut ehkä tosta selviää jotain muuten.

<?php
	function printSelect($name, $values, $selected = null)
	{
		printf('<select name="%s">', $name);
		for ($i = 0; $i < count($values); $i++)
		{
			printf('<option value="%s" %s> %s', $values[$i], $values[$i], ($selected == $values[$i] ? "selected" : ""));
		}
		printf('</select>');
	}

	$yhteys = mysql_connect("localhost", "root", "");
	mysql_select_db("ekauppa", $yhteys);

	$tuotteet = "SELECT * FROM tuotteet";
	$haku = mysql_query($tuotteet, $yhteys) or die("Virhe tuotteiden haussa!");

	for ($i = 0; $i < mysql_num_rows($haku); $i++)
	{
		$nimi  = mysql_result($haku, $i, "nimi");
		$hinta = mysql_result($haku, $i, "hinta");
		$kuva  = mysql_result($haku, $i, "kuva");

		$_SESSION["tmaara" . $i] = $_POST["tmaara" . $i];
		$_SESSION["tkoko" . $i]  = $_POST["tkoko" . $i];

		$valittukoko  = $_SESSION["tkoko" . $i];
		$valittumaara = $_SESSION["tmaara" . $i];
		?>
			<form action="tallennus.php" method="post">
				<?php
					printf('%s %s <a href="%s" target="_blank">kuva</a>', $nimi, $hinta, $kuva);
					printf('<input name="hiddenField" type="hidden" value="%s">', $i);
					printSelect("tkoko" . $i, array("s", "m", "l"), $_SESSION["tkoko" . $i]);
					printf('Valittu koko: %s', $valittukoko);
					printf('<input name="tmaara%d" type="text" value="%s">', $i, $valittumaara);
				?>
				<input type="submit" value="Tallenna">
			</form> <br>
		<?php
	}

	mysql_close($yhteys);
?>

Vastaus

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

Tietoa sivustosta