elikkä minulla on ongelmana taulukko muodossa olevan tiedon talletus mysql tietokantaan, kun talletan sinne tiedon nii tietokannassa lukee vaan "array"? pitäisikö tuo jotenkin käsitellä haettaessa taulukosta vai onko talletuksessa jotain vikaa?
talletus koodi:
<?php $taulut="CREATE TABLE $taulukko (id INT( 2 ) NOT NULL AUTO_INCREMENT , nimi TEXT NOT NULL, type TEXT NOT NULL,name1 TEXT NOT NULL, koko1 TEXT NOT NULL, koko2 TEXT NOT NULL, formname TEXT NOT NULL, arvo TEXT NOT NULL,radio TEXT NOT NULL, dropdown TEXT NOT NULL,PRIMARY KEY (id) )" or die ("ei pysty tekee taulua"); for($k=1;$k<=sizeof($nimi);$k++){ $kys = "INSERT INTO $taulukko (nimi, name1, type, koko1, koko2, formname, arvo, radio, dropdown) VALUES ('".$_POST['nimi[ ]']."','".$_POST['name1[ ]']."','".$type[$i]."','".$koko1[$i]."','". $koko2[$i]."','".$formname."','".$arvo[$i]."','".$radio[$i]."','".$dropdown[$i]."')"; } $result = mysql_query($kys); if (!$result) { die("<p>Kysely epäonnistui tällä kerralla".mysql_error()); } else { echo "<p>Tiedot talletettu onnistuneesti tietokantaan!</p>"; mysql_close($yhteys); ?>
tässä haku koodi:
<?php $kys="SELECT nimi, name1, type, koko1, koko2, formname, arvo, radio, dropdown FROM $table ORDER BY id "; $result = mysql_query($kys); if (!$result) { die("<p>Kysely epäonnistui tällä kerralla".mysql_error()); } else { for($i=1;$i<=mysql_num_rows($result);$i++) { echo"<table borde=3>"; $nimi=mysql_result($result,$i,"nimi"); $name1=mysql_result($result,$i,"name1"); $type=mysql_result($result,$i,"type"); $koko1=mysql_result($result,$i,"koko1"); $koko2=mysql_result($result,$i,"koko2"); $formname=mysql_result($result,$i,"formname"); $arvo=mysql_result($result,$i,"arvo"); $radio=mysql_result($result,$i,"radio"); $dropdown=mysql_result($result,$i,"dropdown"); echo "<tr><td>$nimi</td><td>$name1</td></tr> <tr><td>"; echo"</table>";} //echo"<table border=1>"; while($a_row=mysql_fetch_array($result)) { //echo"<tr>\n"; foreach($a_row as $field) echo "$field"; //echo"\t<td>$field</td></tr>"; } //echo"</table>"; mysql_close($yhteys); } ?>
tossa siis mulla on kaks eri vaihtoehtoa hakuu mitä oon yrittäny ....
Katsopa print_r funktiolla missä muodossa se data sieltä tulee.
print_r ei tulosta mitään, toi muuten tulostaa "array array" ja se vaikuttas et se olis string tyyppisenä eli tietona olis "array" teksti
Sun pitää pistää se taulukko sinne silmukalla, eli jokainen arvo erikseen. Tota koodia katsoessa iskee silmään, et silmukassa käytetään muuttujana $k, mutta taulukoiden arvoissa taas $i.
juu toisiaan en huomannu korjata tohon sitä että se oli $k kaikissa...
nyt se on tämän näköinen ja toimii
<?php for($i=0;$i<=sizeof($nimi);$i++){ $kys = "INSERT INTO $taulukko (nimi, name1, type, koko1, koko2, formname, arvo, radio, dropdown) VALUES ('".$nimi[$i]."','".$name1[$i]."','".$type[$i]."','".$koko1[$i]. "','".$koko2[$i]."','".$formname."','".$arvo[$i]."','".$radio[$i]."','".$dropdown[$i]."')"; } ?>
ilmeni uusi ongelma eli tuo tallentaa vain muuttujien viimeiset arvon taulukkoon...
Niiko se ylikirjottaa aina tuon $kys jokaisella looppauksella. mysql_query sinne loopin sisään.
mitähän tolle sit pitäs tehä ettei se ylikirjoittais? eiks kuitenki tuo solu vaihdu tuossa for lauseen mukaan?
Suorita se mysql_query siellä loopin sisällä, aina uuden kyselyn ($kys) muodostamisen jälkeen.
pistin sen sinne ja nyt toimii!!
kiitoksia jälleen kerran avusta
uusi ongelma eli miten sais moniulotteisen taulukon arvot tallettua tuonne tietokantaan?
Riippuu taulukon sisällöstä ja tietokannan rakenteesta. Kerrohan lisäinfoa.
elikkä taulukon sisältö olis:
Array ( [0] => Array ( [1] => tieto1 [2] => tieto2 [3] =>jne.. )
elikkä tuo tieto määrä riipuis siitä montako kenttää käyttäjä haluaa
miten nuo sitten saisi tietokantaan?
ja tietokanta olis sama kuin tuossa yläpuolella,
<?php $kys = "INSERT INTO $taulukko (nimi, name1, type, koko1, koko2, formname, arvo,radio, dropdown ) VALUES ('".$nimi[$i]."','".$name1[$i]."','".$type[$i]."','".$koko1[$i]."','".$koko2[$i]."','".$formname."','".$arvo[$i]."','".$valikko1[$i]."','".$dropdown[$i][$j]."')"; ?>
noniin.. tämmösellä saa jo kaks arvoo tallettua
ja tuo $arvo on pudotusvalikon kenttien määrä..
<?php for($i=1;$i<=sizeof($nimi);$i++) for($j=1;$j<=sizeof($arvo);$j++) { echo "valinta on suuremipi"; $kys = "INSERT INTO $taulukko (nimi, name1, type, koko1, koko2, formname, arvo,radio, dropdown ) VALUES ('".$nimi[$i]."','".$name1[$i]."','".$type[$i]."','".$koko1[$i]."','".$koko2[$i]."','".$formname."','".$arvo[$i]."','".$radio[$i][$j]."','".$dropdown[$i][$j]."')"; $result = mysql_query($kys); } ?>
mutta se ei talleta kuin kaksi arvo vaan vaikka arvo olisi enemmän ja myös muita kenttiä se tallettaa 2 kertaa esim. jos olis nimi kenttä niin se tallettuis kahteen kertaan..
mikähän mahtaa olla ongelma..
onko moniulotteisen talulukon tallentamiseen tietokantaan jotain muuta keinoa kuin tuossa yläpuolella?
Aihe on jo aika vanha, joten et voi enää vastata siihen.