ugrás a tartalomhoz

Űrlap adatok megjegyzése submit után megjelenő oldalon

mastrelove · 2006. Ápr. 19. (Sze), 15.43
Hello!

A következő kérdésem lenne. (ja előljáróban annyi hogy kezdő vagyok a témában nagyon...)
Van egy php file amin - többek között - van egy form, a formon belül több elem, kereső, legördülő menük (List menu ha így hívák).
Ezek kitöltése illetve kiválasztása esetén, a "submit" gombra kattintva szépen elvégez egy mysql adatbázisban egy lekérdezést a program (ahol form elemeiből veszi át a változókat), és szépen megjelenít egy táblázatot, ugyan ezen oldalon, tehát a form elemei is ott maradnak az oldalon. A problémám a következő (többek között, de egyenlőre csak ez a kérdés :) )
A form elemi visszaállnak alphelyzetbe a submit gomb lenyomásakor...
Én pedig azt szeretném hogy úgy maradjon ahogy a lenyomás elött beálította a kedves user...
Remélem érthetően fogalmaztam ...
(mondjuk az xpress.hu nagyon jó példa, a " keresés műfajra" beállításánál visszaugrik a menü (ahogy nálam), viszont a "rendezés" menü alatt szépen megjegyi az előzőleg kiválasztottat (ahogy szeretném)...
 
1

Kis logika

-zsolti- · 2006. Ápr. 19. (Sze), 16.24
Van ugye olyan tulajdonsága az input mezőknek, hogy value (vagy checked="checked", vagy selected jelölő). Vagyis amikor újratöltődik az oldal, ezeket kéne beállítani az értékek szerint ahoz, hogy "emlékezzen rá". Pl:
<input type="text" name="lakcim" value="<?= $_POST['lakcim']; ?> " />
Ez így viszont támadható, hiszen akár html kódot is írhatok a "lakcim" mezőbe, akkor máris megborult az oldalad. Úgyhogy spec. karakterekre is figyelni kell még:
<input type="text" name="lakcim" value="<?= htmlspecialchars($_POST['lakcim']); ?> " />
A legördülő menünél pedig beteszel egy if-et a megfelelő helyre, hogy ha pl. a "neme" az, hogy "fiu", akkor abba az option-be írja be, hogy selected, stb.
2

Így meg nem is fut... :(

Anonymous · 2006. Ápr. 19. (Sze), 17.38
Köszi a választ, de... :(
Sajnos ha kicserélem a mostani input mezőt a Te általad írottra, le se fut a kód...
(üres képernyő) Nincs benne valami szintaktikai hiba? Vagy mi lehet a probléma?
(a copy paste-t is próbáltam hátha én írtam el valamit de semmi)...
Ja és mind a kettőt próbáltam... :(
3

ez nem a PHP-n belülre való

Táskai Zsolt · 2006. Ápr. 19. (Sze), 17.54
ez HTML, PHP betéttel. esetleg az lehet a gond, hogy már megkezdett "<?"-n belülre írtad.
esetleg
4

No igen, akkor ez a gond...

mastrelove · 2006. Ápr. 19. (Sze), 17.59
Jah... Hát igen kezdőségem látszik nagyon...
Persze hogy php kódba írtam (nem is értettem a "<?" dolgot, de mondom beírom ha ez kell.. Khm... No akkor mindjárt próbálom átírni...)
5

Itt tartok a megoldásban...

mastrelove · 2006. Ápr. 19. (Sze), 18.16
ez működik:
<INPUT TYPE="text" NAME="kereso1" VALUE="'.$_POST['kereso1'].'" size=25 maxlength=120><br>
És meg is jegyzi...
Ez nem működött (nem futott a php):
<INPUT TYPE="text" NAME="kereso1" VALUE="$_POST['kereso1']" size=25 maxlength=120><br>
Ide tartozik hogy van egy reset is, ami elvileg ugye alaphelzetbe állítaná, törölné a mezőket (ha jól gondolom), de persze ez sem működik...:
<INPUT NAME="reset" TYPE="reset" VALUE="Törlés"></p>
A legördülő menüt még elemzem, de sajna félek tőle hogy kevés lesz ennyi segítség amit ahhoz kaptad, de még próbálom...
6

"" + <?php ?>

erenon · 2006. Ápr. 19. (Sze), 18.29
ami szerintem kell:
a html attribútomok (pl size) után ". Nem felétlen szükséges, de jó ha ottvan.
Ami fontosabb, hogy a php dolgok előtt <?php és után ?>
helyesen:
<input type="text" value="<?php echo $_POST['keresol']" size="25">
Minden kicsivel, mert úgy szabványos, és a htmlspecialcharst nem elfelejteni!
<input type="text" value="<?php echo htmlspecialchars($_POST['keresol'])" size="25">
8

php

mastrelove · 2006. Ápr. 19. (Sze), 18.42
Igen, de az egész egy php kód része, ezért nem kellenek a <?php dolgok (tehát a file nem .html hanem .php az elejétől a végéig - vagyis nem teljesen mert van egy html fejléc de azt leszámítva). Tehát a <?php már régen ki van rakva, ezért nincs a sorban...
Bár ugy ezt többen félreértették lehet hülyeség végig php kódban dolgoznom?
12

:]

Anonymous · 2006. Ápr. 20. (Cs), 12.04
Ami fontosabb, hogy a php dolgok előtt <?php és után ?>
helyesen:

<input type="text" value="<?php echo $_POST['keresol']" size="25">


és szépen kihagytad a záró ?> taget. :]

<input type="text" value="<?php echo $_POST['keresol']; ?>">
a size attribútum pedig szerintem felesleges, css-ből is meg lehet határozni.

gex
7

Nem

-zsolti- · 2006. Ápr. 19. (Sze), 18.32
A reset nem töröl, hanem alapértelmezésre állítja a mezőket. Tehát ha volt alapértelmezett értéke (value) a "keresol" mezőnek, akkor arra állítja vissza.

Ha a második példa nem működik, nyilván nem jó. Ha úgy kezdődik a kiíársod a php-ben, hogy echo ' vagy print(' stb. akkor az első sor jó megoldás. (Csak a htmlspecialchars-t ne hagyd le.)

Más: szokd meg még most, hogy minden HTML-taget kisbetűvel írsz, illetve figyelj a szintaktikára (ne felejtsd le sehol a " jelet, pl size=25).

Update: látom egyszerre írtunk. meThaler: tudtommal a <?= is helyes forma egy soros kiírásoknál.
9

Ez kezd világosodni...

mastrelove · 2006. Ápr. 19. (Sze), 18.56
Akkor a reset dolog világos... (bár az zavar a legkevésbé)

Igen, echoval kezdődik (mivel csak úgy tudom kiiratni a formot nem? Máskülönben meg sem jelenne (legalábbis php kódon belül, gondolom?)
Akkor a htmlspec...-t majd berakom, bár most még az a legkevesebb gondom...

Amit nagybetűvel írtam az azért van úgy mert a könyv amiből "tanulok", így írta (Adatbázis kezelés mysql és php használatával) (nem egy tökéletes példány, jócskán van benne elírási hiba is... )
de akkor kijavítom...
Köszi a jótanácsokat...

Viszont a menüs dologgal persze egyáltalán nem boldogulok...
Most tök egyszerűen így néz ki:
<select name="holkeres">
    <option value="hun_cim">Szoveg1</option>
    <option value="ori_cim">Szoveg2</option>
    <option value="mufaj">Szoveg3</option>
  </select>
Próbáltam itt is POST-al variálni, de már ott megcsüngtem de nagyon...
Nem hogy feltételvizsgálat (ha jól emlékszem olyasmit írtál az elején)...

De volt valami ilyesmi is a kódban (megintcsak a könyvből), de ez már magas volt (egy sor a select menüből):
<option '. (@array_search("menupont1", $_POST['hordozo']) === false? ' ' : 'Selected').'class="kat2">menupont1</option>
17

hmm

erenon · 2006. Ápr. 20. (Cs), 15.03
Én úgy tudom, hogy a <?= a legutóljára használt rövidcímkét vezeti be... bocs, nem vagyok guru.
2: Bocs, h lehagytam a ?>-t.
3: ha az egész <?php és ?> közé van szorítva, akkor kell váltókarakter a "-ek elé, kivéve, ha '-t használsz. (csak a dolgok tisztázása végett.)
10

if helyett

Anonymous · 2006. Ápr. 20. (Cs), 09.49
legördülő menünél pedig beteszel egy if-et a megfelelő helyre


Feltételes operátorral inkább.

Mac
11

Feltételes...

mastrelove · 2006. Ápr. 20. (Cs), 09.52
No most már tudom az elméletett :) ...
Ha esetleg kisegítenétek valami konkrétummal, a fentebb belinkelt kodrészletben, akkor azt megköszönném. (meghálálni sajna nem nagyon tom... :( )
13

select

Anonymous · 2006. Ápr. 20. (Cs), 13.14

<select name="holkeres">
    <option value="hun_cim" <?echo($_POST['holkeres'] == 'hun_cim' ? 'selected' : '');?>>Szoveg1</option>
    <option value="ori_cim" <?echo($_POST['holkeres'] == 'ori_cim' ? 'selected' : '');?>>Szoveg2</option>
    <option value="mufaj"   <?echo($_POST['holkeres'] == 'mufaj'   ? 'selected' : '');?>>Szoveg3</option>
  </select>
18

xhtml

erenon · 2006. Ápr. 20. (Cs), 15.05
XHTML 1.0 óta nincsenek érték nélküli paraméterek, tehát selected="selected".
14

select

Anonymous · 2006. Ápr. 20. (Cs), 13.17
Ha mondjuk a value értékeket és a szöveget egy PHP tömbben tárolod, akkor egy ciklussal le lehet generálni a select tag-et és ha utólag változtatsz az értékeken (vagy bővíted őket) akkor sem kell esetlegesen több helyen átírnod, csak a tömb értékeket.

Mac
(ez előző is én, csak elfelejtettem aláírni)
15

select array

Anonymous · 2006. Ápr. 20. (Cs), 13.35
Na ne csak a szám járjon:

<select name="holkeres">
<?
$keres_hol = Array(
	array(0 => 'hun_cim', 1 => 'Szoveg1'),
	array(0 => 'ori_cim', 1 => 'Szoveg2'),
	array(0 => 'mufaj'  , 1 => 'Szoveg3'),
);
foreach ($keres_hol as $elemek)
	printf("<option value='".$elemek[0]."' ".($_POST['holkeres'] == $elemek[0] ? "selected" : "").">".$elemek[1]."</option>\n");
?>
</select>
Mac
16

köszi...

mastrelove · 2006. Ápr. 20. (Cs), 14.01
Köszi a válaszokat mindenkinek, ezekkel már biztos el tudok indulni.

No mégegyszer köszi, és sikerül is a dolog, az apró szintaktikai változtatással (mivel ugye az egész egy php kódban van) Egy sor:
<option value="hun_cim" '.($_POST['holkeres'] == 'hun_cim' ? 'selected' : '').' selected>Hun cím</option>
A tömbös megoldással nem próbálkoztam (vagyis egy kósza próbát tettem, de aztán hamar feladtam :) )

Fenti formájára megpróbáltam a chexboxal is eljátszani a dolgot, ami nagy nehezen össze is jött :) Habár kicsit fapados lett, de műkszik...:
    <input name="nezd[0]" type="checkbox" value="hun_cim" '.($_POST[nezd][0] == 'hun_cim' ? 'checked' : '').' checked>hun cím
    <input name="nezd[1]" type="checkbox" value="mufaj" '.($_POST[nezd][1] == 'mufaj' ? 'checked' : '').'>műfaj
    <input name="nezd[2]" type="checkbox" value="forma" '.($_POST[nezd][2] == 'forma' ? 'checked' : '').'>forma
    <input name="nezd[3]" type="checkbox" value="ori_cim" '.($_POST[nezd][3] == 'ori_cim' ? 'checked' : '').'>ori cim
Tudom nem a legelegánsabb dolog, de működik :) ...
Egy apró kis problémába futottam bele , amit nem értek (bár nem jelentős a dolog, csak kisebb bosszúság), hogy ha a checked mellé beírom hogy disabled (tehát hogy ne lehessen a pipát kiszedni az adott checkboxból, vagyis adott checkbox alapból és kikapcsolhatalanul értéket vegyen fel) a checkbox úgy viselkedik mintha csak a disabledet irtam volna oda (vagyis külsőre jó, halvány pipás négyzet de) nem adja át a változót... mintha egy sima üres kocka lenne disabledezve... (remélem érthetően írtam) Ennek gondolom nem így kellene lennie...

És megvan az elegánsabb megoldás a checkboxra: (és itt volt az orrom előtt végig a megoldás, de csak rávezettetek :) ):
<input name="nezd[]" type="checkbox" value="film_id" '.(@array_search('film_id', $_POST['nezd']) === false ? '' : 'checked').'>Sorszám
<input name="nezd[]" type="checkbox" value="hun_cim" '.(@array_search('hun_cim', $_POST['nezd']) === false ? '' : 'checked').' checked>Hun