Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Mysql taulun muokkaaminen

Sebu [08.06.2006 02:26:39]

#

Rakentelen tällaista simppeliä cms:sää yhdelle sivustolle ja pieni onkelma tuli.

Eli cms:ssä uutta sivua luotaessa luodaan sivulle tietokantaan uusi taulu mihin tulee kaksi kenttää id ja content. Siinä vaiheessa kun tauluun pitäis laittaa kamaa cms:n kautta, niin ei onnistukkaan. Content -kenttä ei päivity silloin se on tyhjä.. tai siis sillon kun siihen ei ole vielä kertaakaan lisätty tekstiä. PhpMyAdminin kautta kun sen on kertaalleen korkannut niin sitten se kyllä toimii.

Eli mitä pitäis tehdä?

tmigi [08.06.2006 07:36:42]

#

Viitsisitkö antaa käyttämäsi queryt, niin voisi helpommin etsiä vikaa miksi lisäys ei onnistu. (Taulun luonti query ja datan lisäys query nyt kysymyksessä)

Toinen asia: Aikamoista tietokannan väärinkäyttöä jos jokaista sivua varten luodaan oma taulunsa. Tee yksi taulu jossa on nuo id ja content kentät. Sitten haet sivujen sisällöt tuosta taulusta id:n avulla ja esität.

Sebu [08.06.2006 08:35:50]

#

taulun luonti

CREATE TABLE 1_$page (id INT(255) DEFAULT $id NOT NULL PRIMARY KEY, content TEXT DEFAULT NOT NULL)

datan lisäys

UPDATE 1_$page SET id='$id',content='$content' WHERE id='$id'

BadSource [08.06.2006 08:52:15]

#

UPDATE ei lisää, vaan muuttaa dataa. Jos haettavaa tietoa ei ole, ei sitä voi muuttaakkaan.

Tiedon lisäys:

INSERT INTO l_$page (id, content) VALUES ('$id', '$content')

INSERT syntax...

tmigi [08.06.2006 09:25:23]

#

En edelleenkään ymmärrä mikä järki on tehdä jokaiselle sivulle taulu jossa ei ole kuin yksi rivi. Samanhan voisi hoitaa tiedostoilla.

Sen sijaan jos tietokantaa halutaan käyttää voisi seuraavanlainen olla aika kova sana.

Tee taulu:

CREATE TABLE pages (id INT(11) NOT NULL PRIMARY KEY, content TEXT NOT NULL)

Seuraavanlaisella PHP skriptillä saat content kenttään tallennetun (X)HTML sivun näytettyä.

<?php

// Vastaanotetaan annetut muuttujat
if (isset($_GET["page"]) && is_int($_GET["page"])) $page=intval($_GET["page"]);

// Tietokantayhteyden tarvitsemat tiedot
$mysql_server="localhost";
$mysql_login="username";
$mysql_passwd="password";
$mysql_db="database";

// Otetaan yhteys tietokantaan
$link=mysql_connect($mysql_server, $mysql_login, $mysql_passwd) or die("<p>Yhteyden luonti tietokantapalvelimeen epäonnistui!</p>");

// Valitaan käytettävä tietokanta
mysql_select_db($mysql_db) or die("<p>Tietokannan valinta epäonnistui!</p>");


// Suoritetaan haku
$query="SELECT content FROM pages WHERE id='".$page."'";
$result=mysql_query($query) or die("<p>Tietokantahaun suoritus epäonnistui!</p>");

// Luetaan saatu tulos muuttujaan
$content=mysql_result($result,0,0);

// Näytetään haettu tulos
echo $content;

// Suljetaan tietokantayhteys
@mysql_close($link);

?>

Tuolla saat tietokannasta haettua sivujen sisältöjä. Esimerkiksi, jos tuo koodi on tallennettu tiedostoon index.php. Ja halutaan näyttää sivu, jonka id on 1 niin osoite on muotoa: http://host.domain.com/index.php?page=1

HUOMAUTUS: Koodissa saattaa tulla ongelmia (X)HTML:n sisältämien lainausmerkkien kanssa, mutta tämä olikin esimerkki ja koodipätkän käyttäjä voi itse selvittää mahdollisen ongelman haluamallaan tavalla... Koodi saattaa sisältää myös bugeja!! En ota vastuuta virheistä. :)

Sebu [12.06.2006 19:26:44]

#

Joo niin kiitos kaikille vinkeistä vinkeistä :) Nyt on taas hieman helpompi jatkaa väkertämistä.

Vastaus

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

Tietoa sivustosta