Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP Tyhjiä rivejä tekstitiedostoon

Sivun loppuun

combo [12.10.2010 10:57:48]

#

Tämä skripti kirjoittaa .dat nimiseen tiedostoon lomakkeen tiedot aina yhdelle riville, mutta taas eilisen jälkeen kun testasin skriptiä niin se teki yhden tyhjän rivin tiedostoon lomakkeen tietojen lisäksi. .dat -tiedostosta ilmeni että kyseessä on samanlainen rivi kuin millainen tulee lomakkeen tiedoista eli tiedostossa oli sama määrä pystyviivoja (|) sekä pisteitä ja viivoja kuten kuuluukin.

Eli miten tuon tyhjien rivien tekemisen pystyy estämään. Tässä koodi:

<?php
if (isset($_POST['len']['1']['nro'])) {
    $len1nro = $_POST['len']['1']['nro'];

}
?>
<?php
if (isset($_POST['len']['2']['nro'])) {
    $len2nro = $_POST['len']['2']['nro'];

}
?>
<?php
if (isset($_POST['len']['3']['nro'])) {
    $len3nro = $_POST['len']['3']['nro'];

}
?>


<?php
if (isset($_POST['len']['1']['mist'])) {
    $l1mist = $_POST['len']['1']['mist'];

}
?>
<?php
if (isset($_POST['len']['1']['mihi'])) {
    $l1mihi = $_POST['len']['1']['mihi'];

}
?>
<?php
if (isset($_POST['len']['2']['mist'])) {
    $l2mist = $_POST['len']['2']['mist'];

}
?>
<?php
if (isset($_POST['len']['2']['mihi'])) {
    $l2mihi = $_POST['len']['2']['mihi'];

}
?>
<?php
if (isset($_POST['len']['3']['mist'])) {
    $l3mist = $_POST['len']['3']['mist'];

}
?>
<?php
if (isset($_POST['len']['3']['mihi'])) {
    $l3mihi = $_POST['len']['3']['mihi'];

}
?>



<?php

$kvt = $_POST['k_v'];

$lspvm = $_POST['lspvm'];
$lsaika = $_POST['lstaika'];
$len = $_POST['lk'];
$muul = $_POST['muulk'];

$pv = $_POST['pv'];
$kk = $_POST['kk'];
$yy = $_POST['vvvv'];


$kas = $_POST['kasittely'];



$lpk1 = $_POST['la1'];
$lpk2 = $_POST['la2'];
$lpk3 = $_POST['la3'];



$laAir1 = $_POST['laa'];



$l = $_SERVER['PHP_AUTH_USER'];

//luodaan rivi teksitiedostoon tallentamista varten
$rivi = "$lspvm|$lsaika|$lenk|$muul|$l1nro |$l1mist -| $l1mihi| $l2nro |$l2mist -| $l2mihi| $l3nro |$l3mist -| $l3mihi|$kas|$pv.|$kk.|$yy|$lpk1|$lpk2|$lpk3<br> \r\n";

   //avataan tietokantatiedosto append-tilassa
   $tiedosto = fopen("$l.dat", "a");

   //kirjoitetaan rivi tiedostoon
   fwrite($tiedosto, $rivi);

   //suljetaan tiedosto
   fclose($tiedosto);



 echo "<td style=\"text-align: left; vertical-align: middle; height: 36px; width: 557px;\">&nbsp;<input class=\"c\" value=\" L&auml;het&auml; \" type=\"submit\">";

 echo "<span style=\"font-weight: bold;\"><br>";

?>

combo [12.10.2010 14:26:15]

#

Onko muuten jotain tapaa laskea tekstitiedostossa olevien tietojen rivien määrän?

Osaako kukaan auttaa tuossa 1. viestin asiassa?

-tossu- [12.10.2010 15:21:01]

#

combo kirjoitti:

Tämä skripti kirjoittaa .dat nimiseen tiedostoon lomakkeen tiedot aina yhdelle riville, mutta taas eilisen jälkeen kun testasin skriptiä niin se teki yhden tyhjän rivin tiedostoon lomakkeen tietojen lisäksi.

Ei tuon koodin pitäisi lisätä tyhjiä rivejä.

Tuo kauhea if(isset($foo)) -viritys on muuten aivan turha. Lisäksi tuossa kannattaisi käyttää silmukoita ja muuttaa lomakkeesta la1, la2 jne. taulukoksi.

<?php
$rivi = "$lspvm|$lsaika|$lenk|$muul|";
$kentat = array ("nro", "mist", "mihi");
for ($i = 1; $i <= 3; $i++) {
	foreach ($kentat as $k) {
		$rivi .= $_POST ['len'][$i][$k] . "|";
	}
}
$rivi .= "$kas|$pv.|$kk.|$yy|" . implode ("|", $_POST ['la']) . "<br> \r\n";

combo kirjoitti:

Onko muuten jotain tapaa laskea tekstitiedostossa olevien tietojen rivien määrän?

<?php
$f = fopen ("tiedosto.txt", "r");
$riveja = 0;
while (!feof ($f)) {
	fgets ($f);
	$riveja++;
}

combo [12.10.2010 16:01:15]

#

Tuo skripti, jolla pitäisi pystyä laskemaan rivit, ei toimi heittää erroria.

Mitä tuossa ylemmässä skriptissä

$_POST ['la']

meinaa, missä nimi on 'la' ?


Tässä dat -tiedosto, jossa on ns. tyhjiä rivejä, eli ainoastaan pystyviivoja (|), jotka tulostuvat tyhjänä tilana, sivulle jolle lomakkeen tietojen pitäisi tulostua.

11.10.2010|17:17|K170||203 |HKL -| SJY|  | -| |  | -| |Odottaa käsittelyä|11.|10.|2010|181||<br>
11.10.2010|17:17|K170||203 |HKL -| SJY|  | -| |  | -| |Odottaa käsittelyä|11.|10.|2010|181||<br>
11.10.2010|17:18|K170||11 | -| |  | -| |  | -| |Odottaa käsittelyä|.|10.|2010|||<br>
|||| | -| |  | -| |  | -| ||.|.||||<br>
12.10.2010|10:24|K170||20X |HKL -| TPP|  | -| |  | -| |Odottaa käsittelyä|18.|09.|2010|49||<br>
|||| | -| |  | -| |  | -| ||.|.||||<br>
|||| | -| |  | -| |  | -| ||.|.||||<br>
|||| | -| |  | -| |  | -| ||.|.||||<br>
|||| | -| |  | -| |  | -| ||.|.||||<br>
|||| | -| |  | -| |  | -| ||.|.||||<br>
|||| | -| |  | -| |  | -| ||.|.||||<br>
|||| | -| |  | -| |  | -| ||.|.||||<br>
|||| | -| |  | -| |  | -| ||.|.||||<br>
|||| | -| |  | -| |  | -| ||.|.||||<br>
|||| | -| |  | -| |  | -| ||.|.||||<br>
|||| | -| |  | -| |  | -| ||.|.||||<br>
|||| | -| |  | -| |  | -| ||.|.||||<br>
|||| | -| |  | -| |  | -| ||.|.||||<br>
|||| | -| |  | -| |  | -| ||.|.||||<br>
12.10.2010|13:56|K170||0000 |HKL -| SJY|  | -| |  | -| |Odottaa käsittelyä|  .|10.|2010|60||<br>
12.10.2010|13:57|K170|| | -| |  | -| |  | -| |Odottaa käsittelyä|.|10.|2010|||<br>
|||| | -| |  | -| |  | -| ||.|.||||<br>
12.10.2010|14:04|K170||2456 |HKL -| TPP|  |TPP -| HKL|  |HKL -| SJY|Odottaa käsittelyä|88.|10.|2010|NaN||<br>
12.10.2010|14:04|K170||2456 |HKL -| TPP|  |TPP -| HKL|  |HKL -| SJY|Odottaa käsittelyä|88.|10.|2010|NaN||<br>
12.10.2010|14:04|K170||2456 |HKL -| TPP|  |TPP -| HKL|  |HKL -| SJY|Odottaa käsittelyä|88.|10.|2010|NaN||<br>
12.10.2010|14:04|K170||2456 |HKL -| TPP|  |TPP -| HKL|  |HKL -| SJY|Odottaa käsittelyä|88.|10.|2010|NaN||<br>
12.10.2010|14:07|K170||255 |HKL -| TPP| 2777 |TPP -| OUL| 2222 |SJY -| HKL|Odottaa käsittelyä|10.|10.|2010|60|503|831<br>
|||| | -| |  | -| |  | -| ||.|.||||<br>
12.10.2010|14:10|72||222 |rth -| rth|  | -| |  | -| |Odottaa käsittelyä|11.|10.|2010|NaN||<br>
12.10.2010|14:11|K170||rfgthy |yyy -| yhn|  | -| |  | -| |Odottaa käsittelyä|34.|10.|2010|NaN||<br>
12.10.2010|14:11|K170||rfgthy |yyy| yhn|  || |  || |Odottaa käsittelyä |34 |10|2010|NaN||<br>
12.10.2010|14:11|K170||rfgthy |yyy| yhn|  || |  || |Odottaa käsittelyä |34 |10|2010|NaN||<br>
12.10.2010|14:17|K170||211 |HKL| KNF|  || |  || |Odottaa käsittelyä |10 |10|2010|108||<br>
12.10.2010|14:07|K170||255 |HKL| TPP| 2777 |TPP| OUL| 2222 |SJY| HKL|Odottaa käsittelyä |10 |10| 2010|60|503|831<br>
|||| || |  || |  || | | || |||||<br>
|||| || |  || |  || | | || |||||<br>
12.10.2010|15:02|K170||211 |HKL| TPP|  || |  || |Odottaa käsittelyä |9 |10| 2010|38|||.|-<br>
|||| || |  || |  || | | || ||||||<br>
|||| || |  || |  || | | || ||||||<br>
|||| || |  || |  || | | || ||||||<br>
|||| || |  || |  || | | || ||||||<br>
12.10.2010|16:12|K170||2222 |xxx| XXX|  || |  || |Odottaa käsittelyä |88 |10| 2010|300|||.|-|<br>

-tossu- [12.10.2010 16:19:44]

#

combo kirjoitti:

Tuo skripti, jolla pitäisi pystyä laskemaan rivit, ei toimi heittää erroria.

Kyllä se minulla toimi. Otithan huomioon, että skriptistä puuttuu rivien lukumäärän tulostaminen ja PHP:n lopetustagi.

combo kirjoitti:

Mitä tuossa ylemmässä skriptissä
...
meinaa, missä nimi on 'la' ?

tossu kirjoitti:

... ja muuttaa lomakkeesta la1, la2 jne. taulukoksi.

Ei sitä la:ta ole vielä missään, mutta muuta siitä lomakkeesta nuo kaikki la:t yhdeksi taulokoksi. Eli muuta la1, la2 ja la3 la[] :ksi.

Edit:

combo kirjoitti:

Tässä dat -tiedosto, jossa on ns. tyhjiä rivejä, eli ainoastaan pystyviivoja (|), jotka tulostuvat tyhjänä tilana, sivulle jolle lomakkeen tietojen pitäisi tulostua.

Eihän lomake ja sen käsittely ole samalla sivulla? Mikäli näin on, tiedostoon tulee tyhjä rivi joka kerta kun lomakesivu ladataan.

combo [12.10.2010 16:36:30]

#

-tossu- kirjoitti:

Edit:

combo kirjoitti:

Tässä dat -tiedosto, jossa on ns. tyhjiä rivejä, eli ainoastaan pystyviivoja (|), jotka tulostuvat tyhjänä tilana, sivulle jolle lomakkeen tietojen pitäisi tulostua.

Eihän lomake ja sen käsittely ole samalla sivulla? Mikäli näin on, tiedostoon tulee tyhjä rivi joka kerta kun lomakesivu ladataan.

Kyllä on samalla sivulla, onko tämä ratkaisu ongelmalle?

-tossu- [12.10.2010 16:47:35]

#

combo kirjoitti:

Kyllä on samalla sivulla, onko tämä ratkaisu ongelmalle?

Ennen lomakkeen käsittelyä pitää tarkistaa, onko lomake lähetetty.

<?php
if (!empty ($_POST)) {
	//lomakkeen käsittely
}

Metabolix [12.10.2010 19:13:40]

#

Viisaampaa olisi laittaa lomake ja käsittely kokonaan eri sivuille ja ohjata käyttäjä käsittelyn jälkeen takaisin lomakkeelle Location-otsikolla.

combo [12.10.2010 19:23:21]

#

Vaikkapa niin.

Täytyy kokeilla

eija [15.10.2010 04:29:41]

#

Tuo rivien lasku koodi:

<?php
$f = fopen ("tiedosto.txt", "r");
$riveja = 0;
while (!feof ($f)) {
    fgets ($f);
    $riveja++;
}

Minun vanhassa oppikirjassani tuo read eli r on laitettu hipsukoihin 'r' eikä lainaismerkkeihin "r".

Mod. lisäsi kooditagit

tsuriga [15.10.2010 08:59:13]

#

Eio väliä. Rivien laskemiseen toimii myös helpompi file, mikäli tiedosto ei ole massiivinen.


Sivun alkuun

Vastaus

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

Tietoa sivustosta