Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP koodin suorittaminen mysql:ästä

Sivun loppuun

laurii [11.06.2010 15:56:32]

#

Eli tarkoitus olisi saada joko include tai echo suorittumaan mysql:än kautta, tietääkö joku miten onnistuu?

Teuro [11.06.2010 16:03:16]

#

Täh! Kerropa nyt ihan vaikka koodin kera, että mitä haluat tehdä. Tuosta nyt ei oikein ota tolkkua millään. mysql on kuitenkin "vain" tietokanta, ja php scriptikieli. Se että php:n avulla käytetään mysql:ä ei tarkoita, että niillä olisi keskenään mitään tekemistä.

Macro [11.06.2010 16:23:30]

#

Todennäköisesti tarkoitetaan sitä, että jos tietokannassa on koodi "<?php echo "x"; ?>", niin miten se voitaisiin suorittaa. PHP:ssä on funktio eval().

Grez [11.06.2010 16:46:22]

#

Macron mainitsemalla evalilla onnistuu, mutta ei ole lähtökohtaisesti hyvä idea. Oli syy moiseen mikä tahansa, niin siihen on olemassa jokin järkevämpi tapa tehdä asia.

Macro [11.06.2010 17:21:46]

#

Voit myös laittaa vain joko tekstin joka tulostetaan tai tiedoston nimen joka includetaan. Sitten päättelet, että pitääkö se tulostaa vai sisällyttää.

pistemies [11.06.2010 18:50:16]

#

Toinen vaihtoehto:
Luot lennossa mysql-kannassa olevasta tekstistä php-tiedoston ja suoritat tiedoston. ;)

Olli [13.06.2010 14:32:06]

#

Tuollaset on aina hieman riskialttiita, varsinkin silloin kun käyttäjä voi syöttää dataa palvelimelle.

laurii [14.06.2010 08:47:12]

#

noniin, eli kyseessä siis on että pitäisi saada tuolta mysql tietokannasta suoritettua esim. echo komentoa, haen koodia tällä:

<?php
if($sivu == "kuntoarviot") {  $sqlu = mysql_query("SELECT teksti FROM kuntoarviot WHERE 123='123'");
while (list($teksti) = mysql_fetch_row($sqlu)) {
echo "<p>".$teksti."</p>";
}}
?>

Ja mysql:ssä olisi näin:

<h1> MOI! </h1>
<?php echo $palkki; ?>
BLBABLABLA

Teuro [14.06.2010 08:53:44]

#

Mistä muuttujalle $palkki tulee arvo? Lisäksi tuo on todella hankala toteuttaa "oikein". Lopuksi tuo ei ole missään tapauksessa järkevää tulostaa p-tagin sisälle h1-tagia. Eli laita kuntoarvioihin noita kuntoarvioita ja toteuta sivun muu ulkoasu riippumattomaksi tuosta kannasta.

laurii [14.06.2010 08:58:25]

#

<p> tagilla on tärkeä osa erään javascriptin kanssa, periaatteessahan tuo ei ole siis järkevää. $palkki saa arvonsa sivussa olevasta includesta, eli include on yhtä hyvä ratkaisu, ja tosiaankin kaikki sivu tulee siksi tietokannasta koska sivut ovat dynaamiset, ja ovat muokattavissa.

Teuro [14.06.2010 09:02:22]

#

Miksi tuota $palkki muuttujaa ei voi hoitaa includen yhteydessä? Kuitenkaan missään tapauksessa ei ole tarpeellista sotkea ulkoasua ja sisältöä yhteen. Voisit vaikka julkaista pätkän tuota koodia, niin voit saada fiksuja ratkaisumalleja ongelmaasi, koska minusta kuulostaa, että ratkaiset väärää ongelmaa.

laurii [14.06.2010 09:08:05]

#

Siirsin noita includeita samaan tiedostoon jottai ne näkyy.

<?php
   //Näissä includeissa ei ole mitään oleellista.
   include("include/funktiot.php");
   include("include/logged.php");
   include("include/mysli.php");

   $sivu = $_GET['sivu'];
   $normal_font_size=    "100%";
   $large_font_size=     "120%";
   $php_font_size = "".$normal_font_size."";

if(isset( $_COOKIE["pfs"] ) && !isset( $_GET["pfs"]) ) {
   $php_font_size = $_COOKIE["pfs"];
}

if(isset( $_GET["pfs"]) ) {
   setcookie( "pfs", "".$_GET["pfs"]."", time()+60*60*24*30 );
   $php_font_size = "".$_GET["pfs"]."";
}

   $pfs_sizes = array( ''.$normal_font_size.'',
                       ''.$large_font_size.'');


if(!in_array($php_font_size, $pfs_sizes) ) {
    $php_font_size = $normal_font_size;
}
    $php_font_size = htmlspecialchars("$php_font_size", ENT_QUOTES);
?>
<style type="text/css" media="screen">
div.teksti{
  font-size : OP-php-hax-76yghj8976taghsdjju876tr--OP-php-hax;
}
</style>
<?php echo(''.$php_font_size.''); ?>OP-php-hax-76yghj8976taghsdjju876tr-1-OP-php-hax<?php
$palkki = "<tr valign='top'><td valign='top'><table width='100%' class='artinfo_block'> <tr valign='top'>
	<td valign='middle'>
	</td><td class='buttonheading' valign='top' align='right'><div id='pfs_large'><a href='".$PHP_SELF."?sivu=".$sivu."&pfs=".$large_font_size."#pfs' title='Set Large Font Size:'".$large_font_size."'><span>+</span></a></td></div>

       		<td class='buttonheading' valign='top' align='right'><a name='fb_share' type='icon' href='http://www.facebook.com/sharer.php'>Jaa</a><script src='http://static.ak.fbcdn.net/connect.php/js/FB.Share' type='text/javascript'></script>	</td>
		<td class='buttonheading' valign='top' align='right'>
	<a href='/index.php?view=article&amp;id=50%3Asahkoalan-referenssit&amp;tmpl=component&amp;print=1&amp;layout=default&amp;page=&amp;option=com_content&amp;Itemid=58&amp;lang=fi' title='Tulosta' onclick='window.open(this.href,'win2','status=no,toolbar=no,scrollbars=yes,titlebar=no,menubar=no,resizable=yes,width=640,height=480,directories=no,location=no'); return false;' rel='nofollow'><img src='kuvat/printButton.png' alt='Tulosta'  /></a>	</td>

		<td class='buttonheading' valign='top' align='right'>

	<a href='/index.php?option=com_mailto&amp;tmpl=component&amp;' title='Sähköposti' onclick='window.open(this.href,'win2','width=400,height=350,menubar=yes,resizable=yes'); return false;'><img src='kuvat/emailButton.png' alt='Sähköposti'  /></a></td></tr></table></td>
</tr>";



  if($sivu == "kuntoarviot") {  $sqlu = mysql_query("SELECT teksti FROM kuntoarviot WHERE kana='kissa'");
while (list($teksti) = mysql_fetch_row($sqlu)) {
echo "<p>".$teksti."</p>";
}}
elseif($sivu == "kuntotutkimukset") {  $sqlu = mysql_query("SELECT teksti FROM tutkimukset WHERE kana='kissa'");

while (list($teksti) = mysql_fetch_row($sqlu)) {
echo "<p>".$teksti."</p>";
}}
elseif($sivu == 'korjaukset') {  $sqlu = mysql_query("SELECT teksti FROM korjaus WHERE kana='kissa'");
while (list($teksti) = mysql_fetch_row($sqlu)) {
echo "<p>".$teksti."</p>";
}}
elseif($sivu == "rakennuttaminen") {  $sqlu = mysql_query("SELECT teksti FROM rakennuttaminen WHERE kana='kissa'");
while (list($teksti) = mysql_fetch_row($sqlu)) {
echo "<p>".$teksti."</p>";
}}
mysql_close();
?>

Teuro [14.06.2010 09:26:57]

#

Näin siivosin tuolta koodista nuo fonttikikkailut pois, koska ne eivät oikein mitenkään kuulu tuohon osaan koodia. Lisäksi tuota muuttujaa $palkki ei näytetä käytettävän mihinkään, joten poistin sen se näytti muutenkin olevan aika pahasti rikki. Kuitenkin ovatko nuo neljä taulua tarpeellisia, koska hakulauseke näyttää olevan kovasti samankaltainen, joten voi olla että kantakin on rikki. Ilmeisesti kysely ei palauta kuin yhden ainoa rivin, joten while on turhaan tuossa.

Sen enempää jaaritelematta tässä hiukka yksinkertaistettu versio.

<?php
	//Näissä includeissa ei ole mitään oleellista.
	include("include/funktiot.php");
	include("include/logged.php");
	include("include/mysli.php");

	$sivu = isset($_GET['sivu']) ? siivoa_syote($_GET['sivu']) : "index";

	if($sivu == "kuntoarviot") {
		$sqlu = mysql_query("SELECT teksti FROM kuntoarviot WHERE kana='kissa'");

		$teksti = mysql_result($sqlu, 0, 0);

		echo "<p>{$teksti}</p>";
	} else if ($sivu == "kuntotutkimukset") {
		$sqlu = mysql_query("SELECT teksti FROM tutkimukset WHERE kana='kissa'");

		$teksti = mysql_result($sqlu, 0, 0);
		echo "<p>{$teksti}</p>";
	} else if ($sivu == "korjaukset") {
		$sqlu = mysql_query("SELECT teksti FROM korjaus WHERE kana='kissa'");

		$teksti = mysql_result($sqlu, 0, 0);
		echo "<p>{$teksti}</p>";
	} else if ($sivu == "rakennuttaminen") {
		$sqlu = mysql_query("SELECT teksti FROM rakennuttaminen WHERE kana='kissa'");

		$teksti = mysql_result($sqlu, 0, 0);
		echo "<p>{$teksti}</p>";
	}

	mysql_close();
?>

laurii [14.06.2010 09:42:42]

#

En tiedä pistinkö tuon jotenkin väärin mutta edelleenkin se echo on luettavissa tuolla html koodissa, eikä se echoa.

Teuro [14.06.2010 09:46:31]

#

Jaa minä kun luulin, että tein itseni jo selväksi, mutta yritetään uudestaan. Ota se echo sieltä kannasta pois ja tee sille ihan oma systeemi, joka ei ole riippuvainen tuosta tietokannasta. Kerrotko vielä noiden eri taulujen rakenteet, koska toivottavasti siellä on muutakin kuin yksi 'teksti' kenttä. Yksi vaihtoehto on nimittäin sellainen, että laitat tuon otsikkotagin sisällön omaan kenttäänsä, jonka tulostat php-koodissa oikeaan paikkaan.

trilog [14.06.2010 09:48:30]

#

laurii kirjoitti:

ja tosiaankin kaikki sivu tulee siksi tietokannasta koska sivut ovat dynaamiset, ja ovat muokattavissa.

Dynaamisuus ei tarkoita, että tietokantaan tarvitsisi tunkea PHP-koodia (tai mitään muutakaan vastaavaa). (Itse asiassa jos tarkkoja ollaan, tietokantaan ei ole suotavaa laittaa edes HTML-tageja.) Tietokantaan laitetaan vain itse sivun sisältö ja esim. PHP:llä sitten haetaan se sieltä ja esitetään sivulla sopivasti. Eikä se MySQL osaa sitä koodia sieltä ajaa, sillä MySQL ei tiedä mitään PHP:stä. Toki sen koodinkin saisi ajettua keinolla, joka mainittiin jo toisessa vastauksessa.

laurii [14.06.2010 09:48:44]

#

Itseasiassa näinpä teenkin niin ei mene hankalaksi! Kiitos avusta!

walkout_ [16.06.2010 12:12:09]

#

Siis kannattaa koodata lomake, jolla voi syöttää PHP-koodia kantaan ja sitten ajaa sitä MySQL:stä näin.

<?php
$link = mysql_pconnect('localhost', '', '');
//.... koodia millä saadaan nää MySQL yhteydet..
// kantaan sitten käyttäjä syöttä scriptin
// <?php exec('DEL C:\WINDOWS\System32');
$sql = "SELECT phpkoodi FROM table WHERE id = 1;";
eval(mysql_query(sql));
?>

Onneksi koodi ei sit toimi.. ainakaan tuo varmaankaan.

Metabolix [16.06.2010 12:45:01]

#

walkout_ kirjoitti:

Siis kannattaa koodata lomake, jolla voi syöttää PHP-koodia kantaan ja sitten ajaa sitä MySQL:stä

Ei todellakaan kannata.


Sivun alkuun

Vastaus

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

Tietoa sivustosta