ugrás a tartalomhoz

Táblába adatok lekérése és felülírása.

zotyarock · 2012. Ápr. 21. (Szo), 13.53
Lenne egy táblázatom, amiben a következő adatok lennének:
képcím
készítette
számláló(itt lenne egy visszaszámláló)
összeg (eleinte kiindulási ár, majd átíródik)
felhasználó neve ( aki utoljára kattintott a gombra)
gomb(végén pedig egy gomb)

Minden ID-vel rendelkező terméket külön táblába jelenítsen meg.
Adatbázis: 2 tábla van: ügyfelek és termékek
ugyfelekben: u_id, veznev, kernev, neme, felhasznev, jelszo, e_mail,….
termekek: t_id, u_id, t_nev,kateg, t_leiras, t_kiindulas_ar, t_licitlepcso,….
A 2 táblát összekötöttem:
$result = mysql_query("SELECT termekek.t_id, termekek.t_nev,termekek.t_kiindulas_ar,termekek.t_licitlepcso  ugyfelek.u_id, ugyfelek.felhasznev FROM termekek INNER JOIN ugyfelek ON termekek.u_id=ugyfelek.u_id")


Termék táblából a termék kiindulási árat és a licitlépcsőt (100,200,500 közül lehet választani) változóvá alakítsa át.
Összeg részben először a kiindulási árat íratja ki, de ha 1 bejelentkezett felhasználó rákattint a licit gombra, akkor a megadott licitlépcső hozzá adja a kiindulási árhoz és felülírja azt, és azt írja ki. Az összeg alatt a licit gomb megnyomása után jelenjen meg a felhasználó neve. (mindig azé, aki megnyomta a gombot)
Ha a visszaszámláló 0hoz ér a nyertes felhasználó kapjon egy e-mailt a termék adataival.

Ezt szeretném megoldani, de sajnos nem tudom, hogy kellene megcsinálni vagy, hogyan álljak neki.
Remélem jól magyaráztam el.
Válaszokat előre is köszönöm.
 
1

hol akadtál el?

Peete · 2012. Ápr. 21. (Szo), 15.17
mármint, ez egy elég korrekt feladat-specifikáció, amit leírtál, csak azt nem tudjuk, hogy meddig jutottál el vele, hol akadtál el, és konkrétan miben kérsz segítséget?
2

Eddig itt tartok:

zotyarock · 2012. Ápr. 21. (Szo), 19.39
Eddig itt tartok:

<?php
$kapcsolat = mysql_connect("","","")or die("nem lehet csatlakozni az adatbázis szerverhez!");
mysql_select_db('');

$result = mysql_query("SELECT termekek.t_id, termekek.t_nev, termekek.t_kiindulas_ar, termekek.t_licitlepcso, ugyfelek.u_id, ugyfelek.felhasznev FROM termekek INNER JOIN ugyfelek ON termekek.u_id=ugyfelek.u_id WHERE t_id=\"26\"") or die (mysql_error());


$_SESSION['felhasznev']=$row['felhasznev'];
?>
<table border="0" id="tabla" align="center">

<?php
while ($row = mysql_fetch_array ($result)) {


echo"<tr>";
echo"<td>";
echo"ID:";
echo"</td>";
echo"<td>";
echo $t_id=$row ['t_id'];
echo"</td>";
echo"</tr>";

echo"<tr>";
echo"<td>";
echo"Képcím:";
echo"</td>";
echo"<td>";
echo $row ['t_nev'];
echo"</td>";
echo"</tr>";

echo"<tr>";
echo"<td>";
echo"Készítette:";
echo"</td>";
echo"<td>";
echo $row ['felhasznev'];
echo"</td>";
echo"</tr>";

echo"<tr>";
echo"<td>";
echo"ITT LESZ A SZÁMLÁLÓ";
echo"</td>";

echo"<tr>";
echo"<td>";
echo"Összeg";//eleinte a kiindulási ár, majd minden gomb nyomásnál felül írodik
echo"</td>";
echo"<td>";
echo $row ['t_kiindulas_ar'];
echo"</td>";
echo"</tr>";

echo"<tr>";
echo"<td>";
echo"Licitáló neve";//amelyik felhasználó lenyomta a gombot annak a nevét írja ki
echo"</td>";
echo"<td>";
echo $_SESSION['felhasznev'];
echo"</td>";
echo"</tr>";

echo"<tr>";
echo"<td>";
echo"Licitáló gomb";//ha megnyomjuk a gombot, akkor az összeg felül íródik a licit változó összegével és a licitáló név kicserélődik
echo"</td>";
echo"<td>";
?>
<input type="submit" name="licit" value="LICIT" formaction="">
<?php
echo"</td>";
echo"</tr>";
}
?>
</table>


$kiindulasar=mysql_query("SELECT t_kiindulas_ar FROM termekek WHERE t_id=\"26\"");
$t_licitlepcso=mysql_query("SELECT t_licitlepcso FROM termekek WHERE t_id=\"26\"");
$osszead=$kiindulasar+$t_licitlepcso;


Azzal próbáltam kezdeni, hogy kiindulási árból és a licitlépcsőből változót csinálok, de ez se akar jó lenni. Az adatbázisból a t_id=26 sort ragadtam ki egyelőre, hogy ezen ellenőrizzem a próbálkozásaimat.
Igazából a gomb lenyomása folyamatánál akadtam el. Ha rákattint a gombra akkor miket hajtson végre.
3

Túl hosszú

Pepita · 2012. Ápr. 22. (V), 19.51
Ha php kérdésed van, megkímélhetnél az ilyen sorok sokaságától: echo"<td>";!
Nem győzzük kiválogatni a rengeteg echo közül azt a néhány adatkezeléssel kapcsolatos sort.
Javaslatok:
- Ha nem is MVC alapján programozol (pedig jobb lenne), mégis jobb a kiindulási adatokat először "legyártani", és csak ha mind kész van, akkor kiíratni a táblázatot, stb-t. Az ilyen sorok echo $t_id=$row ['t_id']; nagyon megnehezítik a hibakeresést.
- Egyelőre ne foglalkozz a HTML táblázattal, írd csak ki soronként a változókat, majd ha mindegyik rendben műxik, ráérsz rajta csinosítani.
- A kódod eleje: nem értem, mitől kapna értéket a $row tömb ez előtt: $_SESSION['felhasznev']=$row['felhasznev'];. Ha a $result-ból szeretnéd, akkor kéne elé egy mysql_fetch_assoc vagy mysql_fetch_row értékadás. Ezután használhatod mint sort.
- Mivel a lekérdezés kizárja a többsoros eredményt (t_id=\"26\""), teljesen felesleges a while ciklus. Illetve - ha itt a saját termékeit akarod kilistázni, akkor - a t_id feltétel rossz és nem kell a licit gomb.
- Ahogy az elsőben jól megcsináltad a Query-t, az adatokhoz is hasonló kell. Nem kell külön-külön változó mindennek, nagyon jó a tömb.
- Licitáláskor ugye POST(GET)/SESSION adatként tudnia kell a feldolgozó szkriptnek, hogy ki (username) melyik termékre (t_id) licitált. Tehát a licitgombnak (formnak) ki kell egészülnie t_id-vel. (Nem lenne hátrány a Júzer által utoljára látott aktuális árat is elküldeni, így ha közben más is rányomott, vissza lehetne kérdezni, hogy tényleg akarja-e a licitet). Egyébként célkitűzés az, hogy egy lapon több terméket megjeleníts licitálásra? Klattyolni (Ajax nélkül) csak egyre lehet úgyis.
- Amikor klattyol, akkor kikeresed a terméket (a hozott t_id alapján), összehasonlítod az aktuális árat a GET/POST adattal,
ha ez egyforma:
Átírod (UPDATE) az aktuális árat, felhasználót meg amit akarsz még a táblában;
Kirakod újra a táblázatot (egy terméket) úgy, mint elején. Esetleg rakhatsz egy plusz üzit is, hogy licitált.
ha ez nem egyforma:
Nem csinálsz semmit a táblában;
Kiírsz egy üzit, hogy az akt. ár nélküle változott, nyomjon újra ha még akar;
Kirakod újra a táblázatot (egy terméket) úgy, mint elején.
- Láthatod, hogy a feldolgozásnak u.az a vége, mint az egész eleje, tehát ezért is érdemes a megjelenítést a végére hagyni, mindenestül el fog férni egy szkriptben (mondjuk ez nem feltétel).

Szerk.: a színezőnek adj értéket: <colorer=php>, persze szögletesben.
4

köszönöm

zotyarock · 2012. Ápr. 23. (H), 11.43
Köszönöm, sokat segítettél!