Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: MySQL -kysley PHP:llä localhostilla (peruskauraa...)

Sivun loppuun

muori [20.02.2008 13:34:13]

#

Hei! Olen asentanut omalle windows koneelleni apachen, mysql:n ja php:n ja nyt yritän tehdä mysql -kyselyn php:n avulla, mutta saan vaan kokoajan pelkkää valkoista. Ei tule edes mitään virheilmoituksia. Mysql toimii, pääsen siihen käsilsi mysql administraattorin kautta, ja myös phpinfon tulostaminen onnistuu. Olen yrittänyt oppaista, ohjeista ja googlesta selvitellä tätä mutta en vaan tajua mitä teen väärin? Voisiko joku ystävällinen sielu auttaa?

Sivuni näyttää tältä:

<html><body>
<?php

			//yhdistetään palvelimelle
			$yhteys = mysql_connect("localhost", "muori", "*****") or die("Yhdistäminen ei onnistunut!");
			//valitaan tietokanta
			mysql_select_db("yrityshaku", $yhteys) or die("Tietokantaa ei löytynyt!");


			//haetaan kaikki tietueet
			$kysely = "SELECT * FROM perustiedot";

			//suoritetaan kysely
			$haku = mysql_query($kysely, $yhteys);

			echo "<table>";
			echo "<tr><td>Ytunnus</td><td>Toiminimi</td><td>Osoite</td><td>Puhelin</td><td>www</td><td>Toimiala</td></tr>";

			//käydään taulua läpi

			for ($i = 0; $i < mysql_num_rows($haku); $i++) {

   			//haetaan ytunnus, toiminimi, osoite, puhelin, www ja toimiala muuttujiin


   			$ytunnus = mysql_result($haku, $i, "ytunnus");
   			$toiminimi = mysql_result($haku, $i, "toiminimi");
   			$osoite = mysql_result($haku, $i, "osoite");
   			$puhelin = mysql_result($haku, $i, "puhelin");
   			$www = mysql_result($haku, $i, "www");
			$toimiala = mysql_result($haku, $i, "toimiala");

   			//tulostetaan taulukon rivi
   			echo "<tr><td>$ytunnus</td><td>$toiminimi</td><td>$osoite</td><td>$puhelin</td><td>$www</td><td>$toimiala</td></tr>";
		}

			echo "</table>";

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


			//suljetaan yhteys
			mysql_close($yhteys);
?>
</body></html>

JyKKemus [20.02.2008 13:38:18]

#

miksi tulostaa kaksi kertaa tagit

 </body></html>

muori [20.02.2008 14:05:03]

#

oho joo, ei ole syytä, otin ne pois. Mutta tämä ei vielä ratkaissut ongelmaa..

mrkebab [20.02.2008 14:06:57]

#

En tiedä mikä järjestelmä sinulla on, mutta jos linux, niin luultavasti
error.log sisältää tiedon, mikä on pielessä.

Blaze [20.02.2008 14:12:13]

#

Väännä php.inistä virheilmotukset päälle:
error_reporting = E_ALL
display_errors = On

Teuro [20.02.2008 14:16:58]

#

Suurehkolla todennäköisyydellä yrität tulostaa jotakin mitä ei löydy kannasta. Laita kyselyn jälkeen

<?php
echo mysql_error();
?>

Muutoinkin kannattaa tehdä näin

<?php
while($rivi = mysql_fetch_array($haku)){
  echo $rivi['tunnus'] //jne...
}
?>

Tällöin ei tarvitse käyttää mysql_result funktiota.

Wizard [20.02.2008 14:33:38]

#

Kuten Blaze jo sanoikin, niin ongelmasi on se, että virheentulostukset on pois päältä (oletuksena). Tämän takia et näe virheilmoituksia.

Blazen ratkaisu tuottaa sinulle virheitä ruudulle ja osaat korjata.

-W-

muori [20.02.2008 15:59:43]

#

Kiitokset avusta! Sain vikailmoitukset päälle :) ja ongelman taustalla oli se että minulla ei ollut libmysql.dll ja php_mysql.dll -tiedostoja kopioituna tuonne Windows\System32 kansioon. Nyt toimii ja voin alkaa pohdiskelemaan tuota php:tä tarkemmin.

tsuriga [20.02.2008 16:18:53]

#

Kauhee purkkaratkaisu :), pistä mieluummin PHP:n hakemisto PATH-ympäristömuuttujaan.

EDIT: Nojoo, ainut argumentti, mitä keksin tähän hätään, että voipi ajella sitten PHP:tä mistä tahansa. Lisäksi ehkä hienoinen semanttinen syy. Haistan turhan kiistan aiheen, väitelkäämme.

Blaze [20.02.2008 16:30:51]

#

tsuriga kirjoitti:

ainut argumentti, mitä keksin tähän hätään

Tässä sulle toinen: päivitettäessä PHP:tä ei tarvi muistaa kopsia noita filuja sinne Windows\System32:een.

muori [20.02.2008 17:24:52]

#

jaahans, eli sinne system32:hon ei tarvii mitään kopsata? mitäköhän mä tein sitten että se alko toimimaan, kun sain nimittäin virheilmoituksen "fatal error: Call to undefined function mysql_connect" -> googletin avuja ja lisäsin php.iniin extension=php_mysql.dll + koppasin noi kaksi tiedostoa system32 kansioon.

Mitä tuo "PHP:n hakemisto PATH-ympäristömuuttujaan" tarkoittaa? Ei ymmärrä. Onks toi sama juttun kun tuo extension=php_mysql.dll ?

Hakoulinen [20.02.2008 19:22:55]

#

http://www.tol.oulu.fi/~ilkka/JAVA_matskut/Ymparistomuuttujat.pdf

Lue tämä ja lisää polku PATH-ympäristömuuttujaan.

HUOM. Muista puolipiste.

muori [21.02.2008 09:51:09]

#

Kiitos, mulla oli vähän eri tavalla tuo, mulla oli "system variablessa" PATH-kohdassa tällanen litania:

C:\PHP\;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\MySQL\MySQL Server 5.0\bin;

Lisäsäin siihen "user variables for muori" kohtaan sitten PATH C:\PHP\;

---
Olen nyt poistanut sieltä system32 kansiosta ne kaksi fileä, ja tuntuu toimivan jokatapauksessa. Nyt on vaan sellainen ongelma että debuggauksessa saan herjan "Module 'mysql' already loaded in Unkown on line 0" (näyttää kuitenkin sivun ok). Tarkistin että php.inissä ei ainakaan ole sitä "extension=php_mysql.dll" kohtaa kahteen otteeseen.. mitä muuta tässä voisi olla? Tämä herja tuli jo ennekuin muutin tuon PATH jutun sinne ympäristömuuttujiin.

MUOKS: komento takaisin, multa puuttuikin vain yksi täppä sieltä debuggausohjelmasta =)


Sivun alkuun

Vastaus

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

Tietoa sivustosta