ďťż

[HTML] Input i właściwość value +PHP

       

Podstrony


telcocafe

Jeśli mam np. taki prościutki input
<input type="text">
Chcę aby jego wartość value (czyli tekst) była wypełniona wartością zmiennej PHP. Mi coś nie wychodzi to. Da się to zrobić?



<?php echo "<input type='text' value='$zmienna' />"; ?>

Ja bym zrobił tak:
<input type="text" value="<?php echo $jakas_tam_zmienna; ?>" />


<?php echo "<input type='text' value='$zmienna' />"; ?>
Dzięki wam oba sposoby działają :)
Tylko mam jedno pytanie do Ciebie Countach. Dlaczego używasz znaczków ' ' zamiast " " w akreślaniu wartości atrybutu np. type='text'? XHTML wymaga chyba " " :P

U mnie ten kod jest niepoprawny dlaczego?
echo "<form action="pan.php">Ilość wyświetlanych komentarzy: <input type="text" value="$ilosc_kom" name="nowa_ilosc_kom"><input type="submit" value="Zmień"></form>";
Wtedy jak pozamieniam " " na ' ' przy wartościach jest w porządku, ale dlaczego to jest błąd, skoro wiem, że najlepiej używać " "
Użytkownik p_p_c++ edytował ten post 17 marzec 2007, 21:18


W PHP najlepiej używać ' (apostrofów).

echo '<form action="pan.php"> Ilość wyświetlanych komentarzy: <input type="text" value="'.$ilosc_kom.'" name="nowa_ilosc_kom"> <input type="submit" value="Zmień"></form>';

Natomiast w twoim kodzie, stosując " w miejscu action="pan.php", PHP traktuje to, jako obiekt wtrącany do łańcucha znaków. Innymi słowy otwórz łańcuch, zamknij łańcuch, pan.php, otwórz łancuch itd.
Użytkownik muffy_3 edytował ten post 17 marzec 2007, 21:36
Przecież można użyć backslasha :/
Np:
<?php echo "<input type=\"text\" value=\"$jakas_tam_zmienna\" />"; ?>
Użytkownik master_dos edytował ten post 17 marzec 2007, 23:03

Przecież można użyć backslasha :/
Np:
<?php echo "<input type=\"text\" value=\"$jakas_tam_zmienna\" />"; ?>

Nie mówiłem, że nie można w ten sposób pisać :-). Jednak apostrofy są wydatniejsze i moim zdaniem przy konstrukcji większych zapytań, np. do bazy MySQL, znacznie łatwiej się we wszystkim połapać - ale to taka rada na przyszłość. Zresztą temat ten poruszany był już x-razy.

Wygląda na to, że xHTML nie wymaga pisania cudzysłowu, czyli można pisać apostrofy, ponieważ validator przy teście nie zgłaszał błędów.


Wygląda na to, że xHTML nie wymaga pisania cudzysłowu, czyli można pisać apostrofy, ponieważ validator przy teście nie zgłaszał błędów.
No chyba że :)
Mam kolejny problem, nie będe zakładaj nowego tematu. Mam plik z zawartoscią : 10
I mam kod który ma nadpisać tą liczbę nową podaną przez użytkownika:
$plik = fopen("plik.txt",'ab'); flock($plik,LOCK_EX); rewind($plik); fwrite($plik,$nowa_liczba); flock($plik,LOCK_UN); fclose($plik);
Sęk w tym, że nowa liczba jest zapisywana i tak na końcu pliku czyli jeśli ma wartość 29 to w pliku jest 1029 o co biega?


No chyba że :)
Mam kolejny problem, nie będe zakładaj nowego tematu. Mam plik z zawartoscią : 10
I mam kod który ma nadpisać tą liczbę nową podaną przez użytkownika:
$plik = fopen("plik.txt",'ab'); flock($plik,LOCK_EX); rewind($plik); fwrite($plik,$nowa_liczba); flock($plik,LOCK_UN); fclose($plik);
Sęk w tym, że nowa liczba jest zapisywana i tak na końcu pliku czyli jeśli ma wartość 29 to w pliku jest 1029 o co biega?

Tryb otwarcia ustaw na w+.

To mi za bardzo nieodpowiada bo jednak w pliku są inne dane, ale dalej, a ja chcę zmieniać zawsze pierwszą linijkę (nadpisywać), a te inne dane dopisują się co wiersz już :)
To jak w takim wypadku będzie :P ?

odczytaj zawartość całego pliku, zapisz ją do jakiejś zmiennej, no a potem usuń pierwszą linijke, i dodaj na początek zmiennej to co chcesz napisać. I gotowe!

<? $s = ''; $fn = 'plik.txt'; $l = file($fn); $l[0] = 'pierwsza linijka :P'; for ($i=0; $i<count($l); $i++) $s .= trim($l[$i])."\r\n"; file_put_contents($fn,$s); ?>
Pisane z pamięci, ale chyba będzie działać ;) W każdym razie masz sposób działania :)

To też nie za bardzo mi pasuje. A jak będe miał plik 2 MB to żeby zapisać pierwszą linijkę, będe musiał odczytać całość wstawić na początek coś tam i zapisać ponownie całość. Trochę to bezsensowne... albo raczej czasochłonne dla skryptu :)
Chodzi mi o kod logusia :P
Użytkownik p_p_c++ edytował ten post 18 marzec 2007, 10:06
No to jest takie coś ja "baza danych" :P Właśnie bazy są do przechowywania dużej ilości informacji. Pliki tekstowe to tylko taka "prowizorka", jak myślisz poważnie o przechowywaniu informacji to poczytaj o bazach.

Użyć bazy MySQL? Byłoby o 50 % łatwiej


<? $s = ''; $fn = 'plik.txt'; $l = file($fn); $l[0] = 'pierwsza linijka :P'; for ($i=0; $i<count($l); $i++) $s .= trim($l[$i])."\r\n"; file_put_contents($fn,$s); ?>
Pisane z pamięci, ale chyba będzie działać ;) W każdym razie masz sposób działania :)

Nie wiem czy ten kod jest dobry, w każdym razie przerobiłem go na takie coś bo nie mogę używać w swoim serwisie file_put_contents:
$plik = fopen("plik.txt",'ab'); flock($plik,LOCK_EX); $s = ''; $fn = 'plik.txt'; $l = file($fn); $l[0] = $nowa_wartosc; for ($i=0; $i<count($l); $i++) { $s .= trim($l[$i])."\r\n"; fwrite($plik,$s); } flock($plik,LOCK_UN); fclose($plik);
Ten kod po prostu wpisuje jeszcze raz to samo do pliku - duplikuje jego zawartość, chociaż sam już nie jestem pewny śmieci są :P

@up: po primo masz złe parametry, a po drugo w pętli powtórnie zapisujesz cały czas zawartość zmiennej $s :P

Więc tak winno być:<? $s = ''; $fn = 'plik.txt'; $l = file($fn); $l[0] = 'Linijka numer 1'."\r\n"; for ($i=0; $i<count($l); $i++) $s .= $l[$i]; $h = fopen($fn, "w+"); fwrite($h, $s); fclose($h); ?>

PS Jeśli chcesz operować na plikach, to nie słyszałem o możliwości operowania na jednej linijce tekstu, bez wczytania całego pliku :P
Użytkownik DJ_ProG edytował ten post 18 marzec 2007, 12:46

Użyć bazy MySQL? Byłoby o 50 % łatwiej
Może raczej o 99% lub 100% :P

//edit

Bardziej optymalny i szybszy kod:
$s = ''; $fn = 'plik.txt'; $l = file($fn); $l[0] = 'Linijka numer 1'."rn"; $h = fopen($fn, "w+"); for ($i=0; $i<count($l); $i++) fwrite($h, $l[$i]); fclose($h); ?>
Ale jeśli chodzi o operacje na plikach to lepsza jest baza danych...
Użytkownik andrzej_aa edytował ten post 19 marzec 2007, 09:50
Tak na moje kulawe oko, to mój kod jest optymalniejszy, bo tylko raz odbywa się fwrite(), a u Ciebie robi się to w pętli... A z całą pewnością, dodanie tekstu do stringu jest optymalniejsze niż zapis do pliku :P

edit@down: nie popadajmy w obłęd - ważne, że funkcjonuję! Przecież ułamki msek Cię nie zbawią ;)
Ja jedynie wyraziłem moje zdanie na ten temat :P
Użytkownik DJ_ProG edytował ten post 21 marzec 2007, 09:42
Tak? Nie pomyślałem :P To mam trochę do zrobienia na mojej stronce bo używam tego sposobu :(

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.