ugrás a tartalomhoz

Varázslós HTML menü lépések kezelése PHP-ben

Anonymous · 2006. Nov. 6. (H), 21.53
Sziasztok!
Szuksegem lenne par tanacsra, kis segitsegre, egy projekten dolgozok es sehogy sem sikerul megvolositanom azt amit szeretnek.

Van egy HTML oldal egy fenti menuvel. A menut egy Varazslohoz hasonlitanam. Konnyeben ezt elmagyarazni ugy tudom, hogy lepesrol lepesre vezet.

A Menu megtekinteheto itt: http://img211.imageshack.us/img211/1852/urlapdt9.png

Az elso lepesnel megjelenik egy urlap, a felhasznalo az urlapot ki kell toltse, ha minden adat ok es megnyomja a tovabb gombot akkor a masodik lepeshoz kell kuldjem, ahol egy masik urlap nyilik meg. A masodik lepesrol a felhasznalo visszaterhet az elsore ha valamit kifelejtett.

Itt van a menu :

<?php
function jobseeker_show_addcv()
{
?>
<td valign="top" bgcolor="#FFFFFF" width="100%">
<table width=100% bgcolor=#efefef>
	  <tr>
	  <td  bgcolor=#e0f0ff colspan=2>&nbsp;&nbsp;&nbsp;<b></b></td>
	 	<td colspan=6 align=right bgcolor=#e0f0ff> <input type=button value="CV megtekintese"></td>
	 </tr>
	 <tr>
	 <td bgcolor=#efefef align=center width=109>Step 1</td>
	 <td width=109 align=center bgcolor=white>Step 2</td>
	 <td bgcolor=white align=center width=109>Step 3</td>
	 <td bgcolor=white align=center width=109>Step 4</td>
	 <td bgcolor=white align=center width=109>Step 5</td>
	 <td bgcolor=white align=center width=109>Step 6</td>
	 <td bgcolor=white align=center width=109>Step 7</td>
  </tr>
</table>
<br />
<?php
}
?>
Fuggvenyekel dolgozok, amikor szuksegem van a menure meghivom, stb..

Amikor a felhasznalo tovabb lep egy lepesnel, az adatok lementodnek mySQL adatbazisban. Nem viszem at az adatokat hidden mezokben, semmi ertelme.

Nem tudom, hogyan oldjam meg ezt a tobb urlapos dolgot. Csinalni kell egy kulon fuggvenyt minden urlapnaknak es kulon mindegyiket meghivni ?

Amikor a masodik lepesrol visszaterek az elsore, a lap honnen tudja, hogy most nem kell mySQL-be bele rakni az adatokat hanem csak frisiteni?

Ha valami nem vilagos, kerlek irjatok, megprobalom reszletesebben elmagyarazni, csak kerlek segitsetek !

Koszonom !
 
1

switch case

kerzo · 2006. Nov. 6. (H), 22.39
Szerintem most a switch case jó szolgálatot tehet. Egyetlen php oldalt csinálsz. Ha először hívod meg az oldalt, feltehetően üres a $step változó, akkor autómatikusan a $step=1 értéket adod neki. Innen már gyerekjáték:
switch ($step) {
case 1:
   echo "step most 1";
   break;
case 2:
   echo "step most 2";
   break;
}


Megteheted azt is, hogy amikor az 1-es lépésnél lefutott a kód, akkor egy másik változónak igaz értéket adsz pl. $visit=true.
Ha vissza lépsz, akkor persze le kell ellnőrizned, hogy a $visit értéke mi. Ha true, akkor visszalépéssel jutottál ide, ha nem, akkor most vagy ott először.
2

ok

Anonymous · 2006. Nov. 6. (H), 22.54
Ha először hívod meg az oldalt, feltehetően üres a $step változó, akkor autómatikusan a $step=1 értéket adod neki. Innen már gyerekjáték:


Elnezest nem igazan ertem. Automatikusan erteket adni nem a "default"-al kell ?
switch (){
  deafult :
}
3

ok rajottem

Anonymous · 2006. Nov. 6. (H), 23.25
Ok rajottem. De valami erteket nem kene egy hidden mezoben tartani ? Megis tudnia kene, hogy eppen hol van a lap. Vagy ezt lehet adatbazisban csinalni ?

Esetleg vannak valami mas otletek is ?
5

step by step

kerzo · 2006. Nov. 6. (H), 23.37
Erre van a $step változó. Ha ezt url-ben adod át (form.php?step=1), akkor pontosan tudod, hogy "hol van a lap". Inkább a felhasználó azonosítását kellene megoldani, hogy a visszalépésnél tudjad, hogy kinek az adatait kell lekérni. Erre pl jó lehet egy hidden mező, amiben egy azonosítót tárolsz.
4

2*ugyanoda

kerzo · 2006. Nov. 6. (H), 23.30
Azért írtam így, mert kétszer tudsz egy menüponthoz lépni, amikor még nincs kitöltve, és amikor már ki van töltve, de a vissza gombbal lépsz rá. Ez ugye az összes menüre érvényes, tehát célszerű ugyan úgy kialakítani a vezérlést az áttekinthetőség miatt. Így minden case részben két esetet kell kezelni, amikor üres az űrlap, vagy amikor már ki van töltve.

Persze használhatod a default-ot is csak akkor két helyen szerepel az űrlap összeállítása (feltételezve, hogy a vissza gombnál a kitöltött űrlapot kapja vissza, hogy esetleg tudjon javítani), ami egy plusz hibázási lehetőség.
6

Koszonom

Anonymous · 2006. Nov. 6. (H), 23.49
Erre van a $step változó. Ha ezt url-ben adod át (form.php?step=1), akkor pontosan tudod, hogy "hol van a lap". Inkább a felhasználó azonosítását kellene megoldani, hogy a visszalépésnél tudjad, hogy kinek az adatait kell lekérni. Erre pl jó lehet egy hidden mező, amiben egy azonosítót tárolsz.

En is gondoltam eloszor, hogy talan URL-ben kene atadnom az adatot. Ahogy irtam a felhasznalo egy tovabb gombra katint ahoz, hogy tovabb lepjen egy lepesrol a masikra. Egy gomb nem tud URL-ra kuldeni, es ha jol sejtem ezt egy kis JavaScript kodal kene megoldanom, igaz ? a header hasznalatat elszeretnem kerulni :)
7

önmagára hivatkozás

kerzo · 2006. Nov. 7. (K), 00.14
Nem kell túlbonyolítani a dolgot. A gombhoz nyilván kell egy hivatkozás, mert különben csak dísz lenne.

<a href="urlap.php?step=1"><img src="gomb1.jpg" /></a>
<a href="urlap.php?step=2"><img src="gomb2.jpg" /></a>
<a href="urlap.php?step=3"><img src="gomb3.jpg" /></a>

Persze a kép helyett használhatsz sima lista menüt css-el formázva.
8

link

Anonymous · 2006. Nov. 7. (K), 08.11
link megoldasokra nincs szuksegem. Amikor a tovabb gombra katint le is kell elenorizem ha az adatok a lapon jok. Eppen amit egy submit gombal meg lehet csinalni
9

nem ertem

Anonymous · 2006. Nov. 7. (K), 09.56
Bar nem is igazan ertem, hogyan kuldozgettem at a felhasznalot egy lepesrol a masikra:

form?step=1
form?step=2

Amikor a kuldozgetes elott meg le kene elenorizem ha az adatok megfelelnek.
10

adatbazisban kellene megoldani

Barkóczi Roland · 2006. Nov. 7. (K), 10.36
Figyi: gondolni kell arra is, mi tortenik, ha a 3. lepes utan lefagy a gepe/elmegy az aram/ stb? Hogyan fogja folytatni a kitoltest?

Szerintem, ugy kellene csinalni, hogy a megfelelo tablaba, ahova az adatokat mented felvennel egy STEP mezot is, ez mutatna, hogy eppen melyik lapon tart a kitoltesben.
Amikor meghivod az varazslot, megnezed, hogy ennek a tablanak van-e olyan sora , ahol az USER_ID az adott felhasznaloé, es ha van, mennyi a STEP erteke. Ha a STEP erteke nem 7 (7 lepes van, ha jol latom) akkor megjelenited az ehhez az ertekhez tartozo urlapot. Ha nem tartozik sor a userhez, vagy tartozik, de a STEP =7, azaz sikeresen vegigvitte a varazslot, akkor letrehozol neki egy uj sort.

A lepesekhez tartozo urlapokban HIDDEN mezoben tarolod a STEP erteket. amikor bekuldi az urlapot, leellenorzod a bevitt adatokat, es ha minden oke elmented a tablaba, noveled a step erteket egyel, ezt is elmented a tablaba. Utana meg meghivod ismet a STEP-hez tartozo urlapot.

Tehat pszudokodban igy nez ki a programod
if(submit)
{
leellenorizzuk a bevitt adatokat.
if(minden oke){STEP++; mentes /STEP is!/}
if(STEP=7) sikeresen befelyezted a varazslot
}

 select STEP from CV_TABLE where USER_ID=$_SESSION["USER_ID"];
ha(STEP=7 vagy STEP=false)
{
STEP = 1
insert into CV_TABLE (STEP, USER_ID) values (1, $_SESSION["USER_ID"])
}

include "urlap_{STEP}.php";
11

Ok

Anonymous · 2006. Nov. 7. (K), 17.40
Beviszem a STEP erteket adatbazisba. Mondjuk elveszik az aramot a 5-ik lepesnel. Semmi gond, a felhasznalo vissza terhet kesobb az oldalhoz, es amikor rakatint a szerkeztesre automaikusan a 4-ik lepeshez kerul (tegyuk fel az otodik mar nem volt lementve). De mi van akkor ha a felhasznalo hatra megy (rakatint a BACK gombra), es viszater a masodik lepeshez, es ujbol vissza megy a negyedikhez.

Ez azt jelenti, hogy ha a masodik lepesnel vagyok es ujbol elore megyek +1 et hozaad a 4-es ertekhez adatbazisban ?

Nem tudom ha eretd amit mondok de elege logikus. Azt kene elenorizni, hogy ne adjon hoza semmit a STEP ertekhez ha kisebb lepesnel vagyok mint 4.
Ezt jol gondoltam ki ?
12

A back gomb nem probléma

Barkóczi Roland · 2006. Nov. 7. (K), 21.22
mivel az adott laphoz tartozó form tartalmazza a STEP aktuális értéket egy HIDDEN mezőben, így nem probléma, ha vissza is lép a back gombbal, ha ugy gondolja, elrontott valamit és javítani szeretné. Sőt, ahogy te akartad a felső linkekkel is visszaugorhat a hatodikról az első lapra.
13

legördülö menű html ben

papipapo · 2007. Már. 28. (Sze), 14.07
sziasztok

elküldhet né valaki a sablomot v. segithetne hogyan kell csinálni

elöre is kösz
14

igen...

TeeCee · 2007. Már. 28. (Sze), 15.46
...
Mi a kérdés?

Ha konkrét kérdésed van, segítünk.
Tudom, mindig én vagyok a gonosz, de nem lehet úgy segíteni, hogy 'küldjetek egy sablont, vagy segítsetek'. Gondold át, milyen folyamatot kellene felvázolni, hogy a feladatot megoldjad, bontsd le elemi lépésekre, azokat is bontsd még elemibb lépésekre, gondold át, milyen adatstruktúrára lesz szükséged a megoldáshoz, illetve, hogy ezt hogy fogod megvalósítani. Ezekután (tudod a feladat megoldását lépésenként, tudod az adatok struktúrálját) már csak neki kell ülnöd, hogy leprogramozd.

Meddig jutottál? Mivel próbálkoztál? Melyik résszel van gondod? Ha alapvető programozási kérdésed van (ha nem ismered pl. a switch-et az gyanús), akkor először ismerd meg jobban a nyelvet, utána foglalkozz ismét ezzel a kérdéssel...

Ismét hangúlyozom: ha kérdezel válaszolunk, de a "What is the answer to life, the universe and everything?" típusú kérdésre a válasz: 42! (hehe, írd be google-ba és megmondja a választ, tudtad?)
17

LOL

Max Logan · 2007. Már. 30. (P), 11.28
A google-nél vannak vicces emberek :-)
15

talán ez segít

HTibi · 2007. Már. 29. (Cs), 08.28
A kérdésfeltevés módjára TeeCee megadta a választ.
A "legördülö menű html ben"-hez itt egy kis segítség
16

aha...

TeeCee · 2007. Már. 30. (P), 09.37
... szóval az volt a kérdés, hogy hogy is néz ki egy ilyen menü HTMl-ben készen?...

Ha tényleg így van, akkor a következő eset áll fönn: egy olyan dologra szeretne programot írni, amiről nem is tudja, hogy hogy néz ki, illetőleg azt sem tudja, hogy hogy készítse el. ;)
Hangúlyozom: HA ez lenne a kérdés tényleg!

Tudom, tényleg gonosz vagyok...

Akkor.... találkozunk holnap a web.conf-on...
18

vagy igen-vagy nem

HTibi · 2007. Ápr. 1. (V), 13.11
Azt én se tudom, hogy mi volt a kérdés, csak találgattam!
De amint látom, pontosítás még nem érkezett "papipapo" részéröl!