Keskustelut - PHP - Miten estän tyhjän rivin


editoitu: 02:04 26.1.10
Garbanzo 13:50 25.1.10 
Melkein nolottaa kysyä, kun tiedän että tän pitäis olla helppo, mutta kun nyt on semmonen jumitilanne ja tää PHP on mulle aika uutta.....
Ongelma on aika vähäpätöinen, mutta perfektionismini ei salli sitä. :)

Eli mulla on dropdown josta valitut tiedot siirretään PHP:n kautta tekstitiedostoon.
Nyt kun dropdownin tiedot päivitetään, niin uudelleenluettaessa dropdownissa on tyhjä rivi.
Tiedän että rivinvaihto tekee tuon, mutta miten saan tuon kierrettyä?
Kokeilin ehtolausetta jossa rivinvaihto lisätään vain jos filussa on vielä tietoa jäljellä, mutta PHP-funktiohan lopettaa automaattisesti viimeiseen, jolloin rivinvaihto on jo lisätty edellisellä "kierroksella".

Yksi vaihtoehto tietty olisi eka laskea montako riviä taulukossa on ja lisätä rivinvaihto muihin paitsi viimeiseen.
Mutta olisiko helpompaa keinoa?

Ja koodinpätkä;

PHP
<?php
if(isset($_REQUEST['select'])) {
        $file = fopen("netti.txt", "w") or exit("Unable to open file!");
       
                foreach($_REQUEST['select'] as $string)
                        {              
                        $tieto= $string . "\n";                               
                     fwrite($file,$tieto);
                        }
fclose($file);
}

?>
Grez 14:01 25.1.10 
Perfektionismiä edustaisi myös kooditagien käyttö.

Jos haluaisin saman toiminnallisuuden mutta ilman lopun rivivaihtoa, niin tekisin varmaan ennemmin seuraavasti:


PHP
<?php
if(isset($_REQUEST['select'])) {
        $file = fopen("netti.txt", "w") or exit("Unable to open file!");
        fwrite($file, implode("\n",$_REQUEST['select']));
        fclose($file);
}
?>


Tosin tiedoston lopettaminen ilman rivinvaihtoa lopussa on rumaa.
Asdin 14:02 25.1.10 
Lisäämisvaiheessa voit laskea vaikka tuon taulukon koon ja countilla ja pitää kirjaa missä mennään ($i++) ja jos nykyinen kierros ei ole viimeinen niin lisätään rivinvaihto.
Joskin itse kirjoittaisin aina sen rivinvaihdon viimeisen rivin perään, jotta jatkossa kun jatketaan kirjoitusta niin homma jatkuu uudelta riviltä.

Eli tekisinkin korjauksen dropdownin luomisen yhteydessä. Ilmeisesti looppaat sisällön dropdown-listaan samasta tiedostosta, tarkista vaikka strlenillä, että rivissä on sisältöä.
if(strlen($string) > 0) { /* Lisätään node */ }
weicco 14:30 25.1.10 
Kun oikea vastaus on jo saatu, niin lisätään, että itse taas en käyttäisi tekstitiedostoa laisinkaan :)
editoitu: 14:38 25.1.10
Garbanzo 14:32 25.1.10 
No tulipa nopsaan vastauksia, kiitokset.
Tein tuolla Asdinin menetelmällä (strlen). Ja tiedoston kokohan ei kasva tyhjillä riveillä koska ne luetaan dropdownista. Käväs vaan sekunninosan itsellä mielessä... :)

Sorkkeli kun en hoksannut tuota kooditagihommaa, mutta tähänkin Mureakuha kertoi vastauksen mitä se tarkoittaa.
Anteeksi maalaisuuteni, huomenna muutan kaupunkiin. :)

edit: Nyt kun opin tuon kooditagien käytön, niin ei toimi. Ja suoraan C/P:llä.
eis 14:51 25.1.10 
Garbanzo kirjoitti:
Nyt kun opin tuon kooditagien käytön, niin ei toimi.


Mikä ei toimi? Kooditagit?

strlen("\n") on 1. Ehkä Asdin tarkoitti, että tuossa olisi tullut olla

PHP
if (strlen(trim($string)) > 0)
 
Asdin 14:54 25.1.10 
eis kirjoitti:

strlen("\n") on 1. Ehkä Asdin tarkoitti, että tuossa olisi tullut olla

PHP
if (strlen(trim($string)) > 0)
 


Mutta se \n on edellisellä rivillä, uusi rivihän on täysin tyhjä, joten toimii tuolla nollalla.
chiman 18:03 25.1.10 
Garbanzo kirjoitti:
edit: Nyt kun opin tuon kooditagien käytön, niin ei toimi. Ja suoraan C/P:llä.

Mutta suoraan copy-pastella Ohjelmointiputkasta. Täällä Mureakuhassa on erilaiset tagit.
Grez 18:28 25.1.10 
Tuossa alhaalla on tuollainen "Ohjeita viestien kirjoittamiseen", josta löytyy ohje.
eis 19:16 25.1.10 
Asdin kirjoitti:
Mutta se \n on edellisellä rivillä, uusi rivihän on täysin tyhjä, joten toimii tuolla nollalla.


Ok. Omassa tarkkaavaisuudessa sit vika :)
Garbanzo 02:08 26.1.10 
Vielä tähän samaan littyen;

Miten saisin helpoiten välitettyä koko dropdown listan tallentavalle php-skriptille?
Nyt se onnistuu jos valitsen ensin kaikki, mutta loppukäyttäjältä voi helposti unohtua.
Tietty jos luuppaan noi eka kaikki taulukkoon, mutta on kait kätevämpikin tapa.

Nykyisin;

HTML
<form name='form1' action="tallennus.php" method="post">
<select name='select[]' multiple id="netti" style='width:150px' size='10' >"
 





PHP
<?php

if(isset($_REQUEST['select'])) {
        $file = fopen("netti.txt", "w") or exit("Unable to open file!");
       
                foreach($_REQUEST['select'] as $string)
                        {              
                       
                        $tieto= $string . "\n";                               
                     fwrite($file,$tieto);
                        }
fclose($file);
}

?>
 

root 13:39 27.1.10 
http://www.qodo.co.uk/blog/javascript-select-all-options-for-a-select-box/

Helpoiten homma taitaa onnistua jos bindaat tuon selectAll() funkkarin formin onsubmit-eventtiin:

HTML
<form name='form1' action="tallennus.php" method="post" onsubmit="selectAll('netti', true)">