mysql_fetch_array ja foreach-silmukka

PPietari

Hei!

Olen opettelemassa php-ohjelmointia ja edessä on pieni ongelma. Olen käyttänyt while-silmukkaa tähän tyyliin:

mysql_connect($host, $user, $password) or die ('Error ' . mysql_error());
mysql_select_db($db) or die ('Error ' . mysql_error());
$result = mysql_query("SELECT * FROM data") or die(mysql_error());
//Piirtää htlm-taulukon sisältöineen
echo "";
echo "IdTyönantajaVirkaKontaktihenkilöPuhelin/Mail
Viimeinen hakupäiväPvmKommentteja";

while ($db_field = mysql_fetch_array($result)) {
echo "";
echo $db_field['id'];
echo "";
echo $db_field['työnantaja'];
echo "";
print $db_field['virka'];
echo "";
print $db_field['kontaktihenk'];
echo "";
print $db_field['puhelin'];
echo "";
print $db_field['viimeinenhakup'];
echo "";
print $db_field['date'];
echo "";
print nl2br($db_field['kommentti']);
echo "";
}
echo ""
?>

Olen miettinyt pääni puhki, kuinka saman voi tehdä foreach-silmukalla mutta en onnistu. Voiko saman tehdä foreach-silmukalla? Ihan noin vaan uteliaisuuden vuoksi.

6

672

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • PPietari

      Tiedoksi että näköjään palstan editori strippaa kaiken html-koodin echo-komennoista viestistä.

    • juhakorkeapudas
      • PPietari

        Se pukkaa vaan tällaista vikailmoitusta: "Warning: Invalid argument supplied for foreach()"

        Siis kun käyttää tätä foreach-silmukaa niin ei tarvitse käyttää mysql_fetch_array() -toimintoa?


      • Teman
        PPietari kirjoitti:

        Se pukkaa vaan tällaista vikailmoitusta: "Warning: Invalid argument supplied for foreach()"

        Siis kun käyttää tätä foreach-silmukaa niin ei tarvitse käyttää mysql_fetch_array() -toimintoa?

        Tervehdys!

        Aloitetaanpa siitä, ettei tuo homma hoidu tuon foreach-rakentaan avulla todellakaan noin yksinkertaisesti kuin nimerkki juhakorkeapudas antaa ymmärtää. Hänen koodinsa ei voi millään toimia, sillä tuo result-muuttuja on pelkkä resurssi, eikä varsinaisesti sisällö kuin viitteen varsinaiseen dataan. Jotta foreach-rakennetta voi käyttää, tarvitaan taulukko, jossa on kaikki sql-lausekkeella haetut rivit. Mitään valmista funktiota tämä tekemiseen ei ole. Hommaa ei muutenkaan kannata tehdä foreach-kanssa, sillä jos tietokannasta haettavaa tietoa on paljon, voi php:n memory_limit-täyttyä. Paras rakenne tietokannan tietojen käsittelyyn on tuo while, sillä ei lataan muistaa kaikkea tietoa, vaan hakee sitä rivi kerralla. Tein kuitenkin esimerkin, joka käyttää foeach-rakennetta. Tein siis itse funktion, joka hakee kaikki sql-kyselyn mukaiset samaan taulukkoon. Painotan kuitenkin, ettei tätä kannata käyttää oikeasti.

        HTML on merkitty entiteeteillä, joten sen pitäisi näkyä normaalisti.


      • Teman
        Teman kirjoitti:

        Tervehdys!

        Aloitetaanpa siitä, ettei tuo homma hoidu tuon foreach-rakentaan avulla todellakaan noin yksinkertaisesti kuin nimerkki juhakorkeapudas antaa ymmärtää. Hänen koodinsa ei voi millään toimia, sillä tuo result-muuttuja on pelkkä resurssi, eikä varsinaisesti sisällö kuin viitteen varsinaiseen dataan. Jotta foreach-rakennetta voi käyttää, tarvitaan taulukko, jossa on kaikki sql-lausekkeella haetut rivit. Mitään valmista funktiota tämä tekemiseen ei ole. Hommaa ei muutenkaan kannata tehdä foreach-kanssa, sillä jos tietokannasta haettavaa tietoa on paljon, voi php:n memory_limit-täyttyä. Paras rakenne tietokannan tietojen käsittelyyn on tuo while, sillä ei lataan muistaa kaikkea tietoa, vaan hakee sitä rivi kerralla. Tein kuitenkin esimerkin, joka käyttää foeach-rakennetta. Tein siis itse funktion, joka hakee kaikki sql-kyselyn mukaiset samaan taulukkoon. Painotan kuitenkin, ettei tätä kannata käyttää oikeasti.

        HTML on merkitty entiteeteillä, joten sen pitäisi näkyä normaalisti.

        Lisäys edelliseen viestiin:

        Kun seuraavalla kerralla teet jotain PHP:n sekä MySQL:n kanssa, niin panosta taulujen sarakkeiden nimeen, sillä nyt ne ovat suorastaan kauheat!


      • juhakorkeapudas
        Teman kirjoitti:

        Tervehdys!

        Aloitetaanpa siitä, ettei tuo homma hoidu tuon foreach-rakentaan avulla todellakaan noin yksinkertaisesti kuin nimerkki juhakorkeapudas antaa ymmärtää. Hänen koodinsa ei voi millään toimia, sillä tuo result-muuttuja on pelkkä resurssi, eikä varsinaisesti sisällö kuin viitteen varsinaiseen dataan. Jotta foreach-rakennetta voi käyttää, tarvitaan taulukko, jossa on kaikki sql-lausekkeella haetut rivit. Mitään valmista funktiota tämä tekemiseen ei ole. Hommaa ei muutenkaan kannata tehdä foreach-kanssa, sillä jos tietokannasta haettavaa tietoa on paljon, voi php:n memory_limit-täyttyä. Paras rakenne tietokannan tietojen käsittelyyn on tuo while, sillä ei lataan muistaa kaikkea tietoa, vaan hakee sitä rivi kerralla. Tein kuitenkin esimerkin, joka käyttää foeach-rakennetta. Tein siis itse funktion, joka hakee kaikki sql-kyselyn mukaiset samaan taulukkoon. Painotan kuitenkin, ettei tätä kannata käyttää oikeasti.

        HTML on merkitty entiteeteillä, joten sen pitäisi näkyä normaalisti.

        Hyvä huomio.
        Pois jäi maininta, että foreachia voi käyttää tuon whilen sisällä mutta ei yksinään.


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Tukalaa kuumuutta

      Tietäisitpä vaan kuinka kuumana olen käynyt viime päivät. Eikä johdu helteestä, vaan sinusta. Mitäköhän taikoja olet teh
      Ikävä
      42
      2702
    2. Mansikkatiloilla hyväksikäytetään ukrainalaisia

      Työolot ovat surkeita ja palkka kelvoton. https://yle.fi/a/74-20172942
      Maailman menoa
      339
      2418
    3. Sinä, ihastukseni

      Mitä haluaisit tehdä kanssani ensimmäisenä?
      Ihastuminen
      35
      2114
    4. Ensi kesänä

      Näin kesän viimeisenä minuutteina ajattelen sinua. Olisiko seuraava kesä "meidän" kesä? Tänä vuonna ei onnistuttu, mutta
      Ikävä
      47
      1806
    5. Tiedät ettei tule toimimaan.

      Mielenterveys ei kummallakaan kestä.
      Ikävä
      24
      1675
    6. Okei, myönnetään,

      Oisit sä saanut ottaa ne housutkin pois, mutta ehkä joskus jossain toisaalla. 😘
      Ikävä
      25
      1569
    7. Onko kaivatullasi

      himmeä kuuppa?
      Ikävä
      44
      1440
    8. Sokea "ystävälle"

      Oletko oikeasti noin sokea?
      Ikävä
      100
      1409
    9. En ymmärrä käytöstäsi

      Se on ollut eräänlaista hyväksikäyttöä. Että seura kyllä kelpaa palstan välityksellä silloin kun ei ole parempaakaan tek
      Ikävä
      139
      1355
    10. On jo heinäkuun viimeinen päivä.

      En taida nähdä sinua koskaan.
      Rakkaus ja rakastaminen
      36
      1156
    Aihe