Új hozzászólás Aktív témák
-
L3zl13
nagyúr
Ha mindenképpen a szerverrel akarsz adatot cserélni újratöltés nélkül, arra mondjuk az Ajax jelenthet megoldást.
A második kérdésre pedig: POST, GET, COOKIE, SESSION.
Azt mondod az adatbázisba írás már megy. Mivel a form action mezőjébe nem írtál semmit, ezért ugyanezt a php fájlt hívod meg és adod át neki a form adatait. Ha az actionbe beírnál egy másik php fájlt, akkor annak adódnának át az adatok, és ott ugyanúgy felhasználhatnád őket.
Ha egy PHP változót akarsz így átadni, akkor előtte bele kéne íratnod a változó értékét egy form elembe.A többi módszert most nem részletezem. Olvasgass utána akár itt a topicban, akár tutorialokban.
-
szil@'rd
tag
Hali
elég amatőr szinten művelem a phpt még énis most ismerkedek vele ezért valószínűleg túl bonyolítom de így első neki futásra létrehoznék egy cookiet ami az ablak bezárása gomb lenyomásáa után törli a cookiet lefuttat egy refresht az adott url-n és utánna zárja az ablakot.
-
tgabi333
aktív tag
Ez nem php-s kérdés, de a helyedben ezt a kódot tenném egy js függvénybe és a click eseménykor azt hívnám meg:
window.close();
if (window.opener && !window.opener.closed) {
window.opener.location.reload();
}ui: mindenki figyelmébe ajánlom, hogy szabványos (x)html kimenetet kreáljon mert lehetnek meglepetések a későbbiekben. Főleg js terén.
-
tgabi333
aktív tag
néhány szerver esetén előfordul az is, hogy nem azt a kapcsolatot használja amit te létrehoztál a mysql_connect-el.
Minden mysql függvény opcionális paramétere a kapcsolat azonosító, ha ezt kitöltöd a fenti probléma elkerülhető - bizonyos beállítások mellett jelentkezik.
szóval így: mysql_real_escape_string($valtozo,$connection);
-
cucka
addikt
Az implode() függvény az a mysql_real_escape_string() függvény része, vagy használható önállóan is?
Nem létezik ez a fogalom, hogy egy függvény egy másiknak a része. Valószínűleg nem érted a strukturált programozás alapjait és nem tudod, hogy a korábban kapott programkódod mit csinál pontosan.
A mysql_real_escape_string arra való, hogy a paraméterében található string-ben lezárja a speciális karaktereket.
Az implode arra való, hogy egy tömb elemeit egy string-ben felsorolja.pl.
$tomb=array('alma', 'korte', 'barack');
print implode('/', $tomb);
Azt fogja kiírni, hogy "alma/korte/barack".Hogy neked mire van szükséged, azt nem tudom, mint ahogy azt sem, hogy a $_POST[termek1] micsoda.
-
Sk8erPeter
nagyúr
Esetedben mit jelent az, hogy "van-e megadva termék"? Hol? checkbox-szal kipipálva, radio buttont bejelölve, ... ? Az elég nyilvánvaló volt, hogy submit típusú gombbal küldöd el a formot, de igazából a lényeget nem mondtad el, hogy mit csinál a vegrehajt.php fájlod, meg hogyan kell megadva lennie a különböző termékeknek.
Ezenkívül az if(mysql_query(...)) sorral csak annyit csinálsz, hogy megnézed, hogy a lekérdezés sikeresen végrehajtódott-e, azt nem vizsgálod meg vele, hogy létezik-e ilyen elem az adatbázisban. A mysql_query() sikeres lekérdezés esetén mindenképp valamilyen eredményazonosítóval (vagy true-val) tér vissza, ez pedig azt jelenti, hogy akkor is a feltételvizsgálat igaz ága teljesül, ha a megadott lekérdezésre üres eredményhalmazt ad vissza a MySQL, hiszen szintaktikai és egyéb (táblanév, stb.) hibák nem fordultak elő, csak a megadott szempontok szerint nem létezik olyan elem az adatbázisban.
Érdemes lenne inkább azt vizsgálnod, létezik-e olyan elem az adatbázisban. Na meg azért azt is mondd el, mi a célod, úgy könnyebb segíteni. -
1ed
csendes tag
Akkor elég átadni a modosit.php-nek az elsődleges kulcsot, és ott lekérdezni a rekordot. Valahogy így:
...<a href=\"JavaScript:newPopup('modosit.php?id=".$row['id']." ?>');\">...
A "korábban rögzítésre használt" űrlap teljesen jó, csak ha módosítunk valami akkor jó tudni hogy mi az, szóval nem árt ha egy már kitöltött űrlapot kap a felhasználó. -
Tele von Zsinór
őstag
Pedig ha rögtön a táblázatból akarod módosítani, akkor minden sornak külön formot kell csinálnod. Miért ne lehetne ezt autogenerálva?
Így a formba berakod az elsődleges kulcsot (akár a form actionjébe get paraméterben, akár rejtett mezővel), és csak az ahhoz a termékhez tartozó adatokat fogja elküldeni. -
1ed
csendes tag
Szia!
Gomb helyett használj linket:
<a href="update.php?id=<?php echo $row['id'] ?>">Modosít</a>
Ez ugyanazon a cikluson belül van mint, ami a táblázat sorait kiírja és a $row['id'] az adott sorban található termékhez tartozó elsődleges kulcs.
Az update.php lekérdezi az átadott $_GET['id'] alapján az adott rekordot az adatbázisból, és az adatokkal létrehozza a módosításhoz való fomot, mondjuk így:
<form ...>
<label for="mezo1">Mezo1: </label><input id="mezo1" name="mezo1" value="<?php echo $data['mezo1'] ?>" />
... -
Sk8erPeter
nagyúr
include()-old a kívánt oldalakat a megfelelő helyen (vagy létezik még az include_ once(), ill. a require() és require_once() függvény is - a _once végződésűek esetén annyi a különbség az anélküliektől, hogy ha a kódban esetleg több helyen is include-oltad már valamilyen oknál fogva az adott fájlt, akkor ez az első include-olás után figyelmen kívül hagyja a parancsot; a require és require_once esetén pedig megszakad a programfutás, ha nem sikerült include-olni a fájlt [pl. nem létezik a megadott helyen]).
A frame-ek használata pedig tényleg kerülendő, sokat lehet szívni vele, és nagyon jól meg lehet lenni frame-ek nélkül is. -
Tele von Zsinór
őstag
Ahogy te írtad, az "Array" az elvárt működés - mert ez a kimenete az automatikus stringgé alakításnak. Ugyanezért lesz hibás a mysql_real_escape_string() hívás - tömböt nem tud átalakítani.
Függően attól, hogy akarod letárolni adatbázisban, használhatod, amit itt fentebb írtak, ellenben ha sima szövegként le akarod tárolni az értékeket, így a legegyszerűbb:
$sql="INSERT INTO `tablanev` (termekek) VALUES ('" . mysql_real_escape_string(implode(", ", $_POST[termek1])) . "')"; -
Azért array kerül az adatbázisodba, mert multiple select-et valósítassz meg, ahol ugye több elem is lehet. Ezt úgy tudod eltárolni az adatbázisban, hogy a $_POST[termek1]-t bejárod egy foreach ciklussal, és a tömb elemeit tárolod el az adatbázisba.
pl.
foreach($_POST[termek] as $row){
$query = mysql_query("insert into tabla (rekord) values($row));
} -
Tele von Zsinór
őstag
$sql="INSERT INTO 'tablanev' (termekek) VALUES ('$_POST[termek1]')";
Ez így nagyon rossz. A $_POST tömb elemei a felhasználótól jönnek, ergo megbízhatatlanok. Olvass utána az SQL injection nevű támadásnak.
A legegyszerűbb védekezés ellene az, ha nem közvetlenül adod át a mysqlnek a kapott értékeket, hanem escapeled, például így:$sql="INSERT INTO 'tablanev' (termekek) VALUES ('" . mysql_real_escape_string($_POST[termek1]) . "')";
-
Tele von Zsinór
őstag
Hogy érted? Checkboxok közül melyik van kijelölve?
A böngésző csak azokat küldi el, amik be voltak pipálva, így már egyszerűbb a dolgod. Ha pedig [] jeleket használsz a nevében, akkor a php kódban tömbként tudod használni őket. Például:<input type="checkbox" name="fagyi[]" value="vanilia" />
<input type="checkbox" name="fagyi[]" value="csoki" />
<input type="checkbox" name="fagyi[]" value="eper" />Ez php oldalon a $_POST["fagyi"] változóval elérhető, és egy tömb lesz, ha legalább egy be volt pipálva. Ha egy sem, akkor a $_POST-nak nem lesz fagyi kulcsú értéke.
-
Orb1337
tag
Azt meg lehet valahogy oldani, hogy amikor rákattintok a Küldés gombra, akkor a felső részen ne a form action-nél megadott fájlt hívja meg, hanem töltse be újra az egész oldalt, de nem árt, ha az adatokat is bepréseli az adatbázisba.
A form actiont a formot tartalmazó dokumentumra módosítod, ebben az esetben itt kell megoldanod az adatbázisba írást:
if (!isset($_POST['submit'])) //ha megnyomja a gombot
{
//ide jöhet a beolvasás
}
Új hozzászólás Aktív témák
Hirdetés
- BESZÁMÍTÁS! Asus TUF F15 FX506HM Gamer notebook - i5 11400H 16GB DDR4 RAM 512GB SSD RTX 3060 6GB W10
- ÁRGARANCIA!Épített KomPhone i9 14900KF 32/64GB RAM RX 9070 XT 16GB GAMER PC termékbeszámítással
- 118 - Lenovo Legion Pro 5 (16ARX8) - AMD Ryzen 9 7945HX, RTX 4070 - UK billentyűzet
- Geforce GTX 1050, 1050 Ti, 1060, 1650, 1660 - GT 1030 - Low profile is (LP)
- ÁRGARANCIA!Épített KomPhone i5 14600KF 32/64GB DDR5 RAM RTX 5070Ti 16GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged