<?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.
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>
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
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
ahaa...no ajattelinkin, että et nois niin "tyhmä". :D
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.
Hanki myös joku kunnollinen MySQL-hallintaohjelma, kuten esimerkiksi MySQL-Front. Sellaisella voit helposti luoda, muuttaa ja tutkia tauluja sekä kokeilla SQL-kyselyjen toimintaa.
while($linkki = mysql_fetch_array($vastaus,MYSQL_ASSOC)) {
Tuota valittaa. Pitää hankkia tuo hallintaohjelma...
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.
$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?
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?
Tuossa ei ole mitään järkeä lähettää melkein samaa viestiä kaksi kertaa. Jos kukaan ei vastaa kysymykseesi niin ei sitten vastaa.
Lähetin sen juuri siksi, että joku siihen vastaisi.
> 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.
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?
$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());
Kyllä, se antaa virheen. Miten nyt pitäisi menetellä?
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)
mysql_query("SELECT * FROM Koodipatkat ORDER BY id DESC LIMIT 1") or die("ei");
Tuo antaa tuon "ei" ilmoituksen, joten antakaa jotakin korjauskoodia.
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.
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)
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. :)
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ää
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.
Aihe on jo aika vanha, joten et voi enää vastata siihen.