Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: MySQL

Sivun loppuun

remontti-reiska [11.04.2004 23:06:26]

#

<?php
//muodostetaan yhteys tietokantapalvelimeen
$yhteys = mysql_connect("","","");
//valitaan tietokanta "test"
mysql_select_db("", $yhteys) or die("Tietokantaa ei löytynyt!");
mysql_query("CREATE TABLE Koodipatkat (nimi TEXT, kuvaus TEXT, koodi TEXT)", $yhteys);
mysql_query("INSERT INTO Koodipatkat (nimi, kuvaus, koodi) VALUES ('$kpnimi', '$kuvaus', '$koodi')", $yhteys);
echo "<html><body>";

//haetaan kaikki tavarat
$kysely = "SELECT * FROM Koodipatkat";
//suoritetaan kysely
$haku = mysql_query($kysely, $yhteys) or die("Virhe kyselyssä!");

echo "<table border>";
echo "<tr><td><b>nimi</b></td><td><b>kuvaus</b></td><td><b>koodi</b></td></tr>";
//käydään tavarat läpi
for ($i = 0; $i < mysql_num_rows($haku); $i++) {
   //haetaan nimi, hinta ja määrä muuttujiin
   $nimi = mysql_result($haku, $i, "nimi");
   $hinta = mysql_result($haku, $i, "kuvaus");
   $maara = mysql_result($haku, $i, "koodi");
   //tulostetaan taulukon rivi
   echo "<tr><td>$nimi</td><td>$hinta €</td><td>$maara kpl</td></tr>";
}
echo "</table>";

echo "</body></html>";

mysql_close($yhteys);

?>

<b>Lisäys</b>
<p>Tällä lomakkeella voit lähettää koodinpätkän sivulle.</p>
<form action="lisays_lomake.php" method="post"> <br>
<b>Koodivinkin nimi:</b> <br> <input type="text" name="kpnimi"> <br>
<b>Kuvaus:</b> <br><TEXTAREA NAME="kuvaus" , ROWS=25, COLS=50 value=""></TEXTAREA> <br>
 <b>Koodi:</b> <br><TEXTAREA NAME="koodi" , ROWS=25 COLS=50 value=""></TEXTAREA> <br>
<input type="submit" NAME="ok" value="Lähetä pätkä">
</form>

Miksi tämä koodi ei tulosta tietoja myslistä taulukkoon. Vai laittaako tuo edes mitään tieto mysliin? Ei anna virhettä, mutta ei myöskään tulosta mitään. Kertokaa mikä tuossa on pielessä, kiitos.

Draiz [11.04.2004 23:19:11]

#

Ensinnäkin pitää laittaa, että mihin connectaa, tunnus ja salasana

mysql_connect('sunservu','suntunnus','sunsalasana');

Sinun pitää myös valita tietokanta

mysql_select_db("suntietokanta", $yhteys) or die("Tietokantaa ei löytynyt!");

Tietääkseni myös

<b>Kuvaus:</b> <br><TEXTAREA NAME="kuvaus" , ROWS=25, COLS=50 value=""></TEXTAREA> <br>
<b>Koodi:</b> <br><TEXTAREA NAME="koodi" , ROWS=25 COLS=50 value=""></TEXTAREA> <br>

pitäisi olla näin:

<b>Kuvaus:</b> <br><TEXTAREA NAME="kuvaus" ROWS=25 COLS=50 value=""></TEXTAREA> <br>
<b>Koodi:</b> <br><TEXTAREA NAME="koodi" ROWS=25 COLS=50 value=""></TEXTAREA> <br>

ajv [12.04.2004 03:57:22]

#

Mulla ainakin toimii, pienellä säädöllä tosin:

<?php
//muodostetaan yhteys tietokantapalvelimeen
$yhteys = mysql_connect("localhost","","");
//valitaan tietokanta
mysql_select_db("", $yhteys) or die("Tietokantaa ei löytynyt!");
mysql_query("CREATE TABLE IF NOT EXISTS Koodipatkat(
id int auto_increment primary key,
nimi TEXT,
kuvaus TEXT,
koodi TEXT
)", $yhteys);
//varmistetaan, että kaikki kentät on täytetty
if(($kpnimi = $_POST['kpnimi']) && ($kuvaus = $_POST['kuvaus']) && ($koodi = $_POST['koodi'])){ //lisätään tietokantaan
	mysql_query("INSERT INTO Koodipatkat (nimi, kuvaus, koodi) VALUES (
				'".addslashes($kpnimi)."',
				'".addslashes($kuvaus)."',
				'".addslashes($koodi)."')", $yhteys);
}
echo "<html>\n<body>";

//haetaan kaikki tavarat
$vastaus = mysql_query("SELECT * FROM Koodipatkat ORDER BY id DESC");

//käydään tavarat läpi
while($linkki = mysql_fetch_array($vastaus,MYSQL_ASSOC)) {
   $listaus = stripcslashes($linkki['koodi']);
   print "<b>Nimi:</b><br><table width=\"80%\" style=\"border: 1px solid black\">\n <tr>\n  <td>\n  ";
   print stripcslashes($linkki['nimi']);
   print "  </td>\n <tr>\n<table>";
   print "<br>\n<b>Kuvaus</b><br>\n<table width=\"80%\" style=\"border: 1px solid black\">\n <tr>\n  <td>".stripcslashes($linkki['kuvaus'])."</td>\n </tr>\n<table>";
   print "<br>\n<b>Listaus</b><br><table width=\"80%\" style=\"border: 1px solid black\">\n <tr>\n  <td>";
   highlight_string($listaus);
   print "</td>\n </tr>\n<table>";
}

mysql_close($yhteys);
?>

<p><b>Lisäys</b></p>
<p>Tällä lomakkeella voit lähettää koodinpätkän sivulle.</p>
<form action="" method="post">
<b>Koodivinkin nimi:</b> <br> <input type="text" name="kpnimi"> <br>
<b>Kuvaus:</b> <br><TEXTAREA NAME="kuvaus" ROWS=25 COLS=50 value=""></TEXTAREA> <br>
<b>Koodi:</b> <br><TEXTAREA NAME="koodi" ROWS=25 COLS=50 value=""></TEXTAREA> <br>
<input type="submit" NAME="ok" value="Lähetä pätkä">
</form>
</body>
</html>

Itellä olis tommonen vastaava valmiina, tosin hieman kehittyneempi :P

edit: Toiminnassa: http://cgi.evtek.fi/~k0101030/koodi.php

remontti-reiska [12.04.2004 09:55:09]

#

Saanko käyttää tuota. On muuten mahtava :). Moschops: Kukaan täysjärkinen ei pistä tunnusta ja salasanaansa näytille. Otin tuon tietokannankin varmuudeksi pois. Ja virhettä pukkaa tuolla linkin sisällä olevassa koodissa:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in (tiedosto) on line 25

Draiz [12.04.2004 10:27:23]

#

ahaa...no ajattelinkin, että et nois niin "tyhmä". :D

ajv [12.04.2004 12:54:39]

#

Tottakai tota saa käyttää, tosin kannattaa vielä lisätä tohon ainakin jonkun näkönen html:n esto yms.

Hmm... Ei mulla mitään varottele toi koodi. En osaa sanoo missä vika.

Antti Laaksonen [12.04.2004 13:08:41]

#

Hanki myös joku kunnollinen MySQL-hallintaohjelma, kuten esimerkiksi MySQL-Front. Sellaisella voit helposti luoda, muuttaa ja tutkia tauluja sekä kokeilla SQL-kyselyjen toimintaa.

remontti-reiska [12.04.2004 13:32:25]

#

while($linkki = mysql_fetch_array($vastaus,MYSQL_ASSOC)) {

Tuota valittaa. Pitää hankkia tuo hallintaohjelma...

ajv [12.04.2004 13:36:10]

#

Laita:

while($linkki = @mysql_fetch_array($vastaus,MYSQL_ASSOC)) {

Eli siis tuo "at"-merkki estämään virheilmoitusten tulostuksen ruudulle. Iteltäkin oli nuo unohtunut.

remontti-reiska [13.04.2004 15:38:03]

#

$vastaus = mysql_query("SELECT * FROM Koodipatkat ORDER BY id DESC LIMIT 1");

Pistin tuon tuohon ei linkin sisällä olevaan skriptiin. Miksi se ei käännä järjestystä ja näytä vain yhtä tulostusta?

remontti-reiska [13.04.2004 18:07:01]

#

No ettepä taida tätä juuri nyt nähdä, joten kysyn uudestaan.

$vastaus = mysql_query("SELECT * FROM Koodipatkat ORDER BY id DESC LIMIT 1");

Pistin tuon tuohon ei linkin sisällä olevaan skriptiin. Miksi se ei käännä järjestystä ja näytä vain yhtä tulostusta?

Draiz [13.04.2004 19:03:28]

#

Tuossa ei ole mitään järkeä lähettää melkein samaa viestiä kaksi kertaa. Jos kukaan ei vastaa kysymykseesi niin ei sitten vastaa.

remontti-reiska [13.04.2004 19:58:02]

#

Lähetin sen juuri siksi, että joku siihen vastaisi.

folio [13.04.2004 20:13:07]

#

> Miksi se ei käännä järjestystä ja näytä vain yhtä tulostusta?

Jos saat tuon limitin avulla myslin palauttamaan enemmän kuin yhden rivin niin onneksi olkoon.

Ja vaihda DESC -> ASC niin vaihtuu järjestys.

remontti-reiska [13.04.2004 20:20:03]

#

Siis pitäisi saada tulostettua ruudulle vain ja ainoastaan uusin viesti.
mysql_query("SELECT * FROM Koodipatkat ORDER BY id ASC LIMIT 1");

Tuo ei jotenkin vain pelitä. Voisiko joku antaa korvaavan koodin?

ajv [13.04.2004 20:22:03]

#

$vastaus = mysql_query("SELECT * FROM Koodipatkat ORDER BY id DESC LIMIT 1");

Kyllä tuo taas ainakin minulla toimii aivan niinkuin pitääkin: Näyttää viimeisimmän viestin. Ettei vika ole siinä sun taulussa?

Kokeileppa seuraavaa

$vastaus = mysql_query("SELECT * FROM Koodipatkat ORDER BY id DESC LIMIT 1") or die(mysql_error());

remontti-reiska [13.04.2004 20:27:36]

#

Kyllä, se antaa virheen. Miten nyt pitäisi menetellä?

ajv [13.04.2004 20:33:32]

#

Huoh...
No odota vaikka että me muut arvataan se virhe-ilmoitus.

edit: tuon seuraavan viestin luettuani en sano enää mitään. (huomatkaa myös edellinen viestini)

remontti-reiska [13.04.2004 20:38:25]

#

mysql_query("SELECT * FROM Koodipatkat ORDER BY id DESC LIMIT 1") or die("ei");

Tuo antaa tuon "ei" ilmoituksen, joten antakaa jotakin korjauskoodia.

Olga [13.04.2004 22:04:59]

#

Voi juma. Just ku ollaan ZeBestä päästy eroon, niin sit muut hyppää suuriin saappaisiin. Pistä nyt se mysql_error() sinne perään ja kerro se mitä se virheilmoitus sanoo.

T.M. [13.04.2004 22:10:18]

#

lainaus:

echo "<table border>";

Tossa taitaa olla jotain epävalidia? Eli border juttu pois, tai pist sille joku arvo.

lainaus:

Voi juma. Just ku ollaan ZeBestä päästy eroon, niin sit muut hyppää suuriin saappaisiin. Pistä nyt se mysql_error() sinne perään ja kerro se mitä se virheilmoitus sanoo.

Muailman tasapaino järkkyy jos joku ei ole ZeBe :-) (ying-yang)

remontti-reiska [14.04.2004 13:08:47]

#

Irksome: Kiitos. No katsotaan mitä tuo koodi antaa vai antaako mitään.

Unknown column 'id' in 'order clause'

Tuollaisen ilmoituksen antaa. Nyt voisi joku hieman valaista mitä pitäisi tehdä. Tämä ZeBe elää minussa vain Php:n puolella. En ole kysynyt missän muussa kielessä mitään yhtä tyhmää, mutta kuitenkin vastauksen haulaisin saada. :)

ajv [14.04.2004 13:27:01]

#

Niin, eli kuten arvelinki, siitä sun taulusta puuttuu toi id-kenttä. Poista taulu ja aja tuo minun esimerkkikoodi uudestaan läpi. Se tekee tietokantaasi taulun nimeltä "Koodinpätkät", jos sellaista ei vielä ole (IF NOT EXISTS). Tämän jälkeen pitäisi toimia.

P.S. Omiakin aivojakin saa käyttää

Olga [14.04.2004 13:31:21]

#

remontti-reiska kirjoitti:

Tuollaisen ilmoituksen antaa. Nyt voisi joku hieman valaista mitä pitäisi tehdä. Tämä ZeBe elää minussa vain Php:n puolella. En ole kysynyt missän muussa kielessä mitään yhtä tyhmää, mutta kuitenkin vastauksen haulaisin saada. :)

Tottakai ongelmaan saa ja pitääkin kysyä neuvoa, mutta sen verran pitäisi kuitenkin tajuta ettei me olla mitään ennustajia, eikä voida auttaa josset kerro missä se vika on. Eli tosiaan niitä aivoja saa käyttää, niinkuin ajv tuossa osuvasti mainitsi.


Sivun alkuun

Vastaus

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

Tietoa sivustosta