- VR topik (Oculus Rift, stb.)
- Először égett le egy újságnál a GeForce RTX 5090
- Hobby elektronika
- Melyik tápegységet vegyem?
- Milyen TV-t vegyek?
- Milyen billentyűzetet vegyek?
- Milyen RAM-ot vegyek?
- TCL LCD és LED TV-k
- Nvidia GPU-k jövője - amit tudni vélünk
- Rendkívül ütőképesnek tűnik az újragondolt Apple tv
Aktív témák
-
fordfairlane
veterán
válasz
fordfairlane #1482 üzenetére
Csak sikerült elrontanom. A kommenteket kiszedtem, hogy rövidebb legyen.
<?
if($_SERVER["REQUEST_METHOD"] == "POST") {
if(!$_POST["nev"]) {
$error["nev"] = "A név üres";
} else {
$res = mysql_query('SELECT COUNT(*) FROM felhasznalok WHERE nev="'.mysql_escape_string($_POST["nev"]).'"');
if($res && mysql_num_rows($res)) {
list($no) = mysql_fetch_row($res);
if($no) $error["nev"] = "Ez a felhasználónév már foglalt!";
}
}
if(!$error) {
$query = 'INSERT INTO felhasznalok SET ';
$query .= 'nev="'.mysql_escape_string($_POST["nev"].'"';
mysql_query($query);
header("Location:".$_SERVER["SCRIPT_NAME"]."?ok=1");
exit;
}
}
if($_GET["ok"]) {
include("fejlec.php");
?><p>Minden oké</p><?
include("lablec.php");
exit;
}
else {
include("fejlec.php");
?>
<form method="post">
<input type="text" name="nev" value="<?=htmlspecialchars($_POST["nev"])?>" /> <?=$error["nev"]?><br />
<input type="submit" value="Regisztráció" />
</form>
<?
include("lablec.php");
?>A fájl elejéről hiányzik az adatbázishoz kapcsolódás(mysql_connect), azt lehet az első if($_SERVER[]...) után is, mert csak abban a blokkban vannak adatbázis műveletek.
-
fordfairlane
veterán
Mutatok egy egymezős skeleton modellt, én így csinálnám:
<?
if($_SERVER["REQUEST_METHOD"] == "POST") {
if(!$_POST["nev"]) {
$error["nev"] = "A név üres";
} else {
$res = mysql_query('SELECT COUNT(*) FROM felhasznalok WHERE nev="'.mysql_escape_string($_POST["nev"]).'"');
if($res && mysql_num_rows($res)) {
list($no) = mysql_fetch_row($res);
if($no) $error["nev"] = "Ez a felhasználónév már foglalt!";
}
}
// további ellenőrzések
if(!$error) {
$query = 'INSERT INTO felhasznalok SET ';
$query .= 'nev="'.mysql_escape_string($_POST["nev"].'"';
// további mezők queryhez fűzése
mysql_query($query);
header("Location:".$_SERVER["SCRIPT_NAME"]."?ok=1");
exit;
// ez az átirányítás azért kell, hogyha az oké üzenetre refresht nyom,
// ne kapjon hibaüzenetet, miszerint ez a felhasználónév már foglalt.
// felhasználók lassú reagálású oldalnál hajlamosak refreshelni
}
} elseif($_GET["ok"]) {
include("fejlec.php");
?><p>Minden oké</p><?
include("lablec.php");
} else {
include("fejlec.php");
?>
<form method="post">
<input type="text" name="nev" value="<?=htmlspecialchars($_POST["nev"])?>" /> <?=$error["nev"]?><br />
<input type="submit" value="Regisztráció" />
</form>
<?
include("lablec.php");
}
?>Remélem nem maradt ki semmi, nem próbáltam ki. 19 mezőnél persze nem biztos, hogy célszerű így ömlesztve, de a vezérlési szerkezetet ebben a formában szoktam csinálni. Így egy oldalban benne van:
1. form kirakása, hiba esetén a mező tartalma megmarad, és a mező mellett megjelenik a hibaüzenet.
2. Ha minden oké, kirakja az oké szöveget, meg ami kell.
3. refresh esetén nem produkál mást, mint első betöltődésnél, ez a sikeres submit után okozhat problémát, a felhasználó megzavarodhat a nem várt üzenetektől.Fejlécet és láblécet külön fájlból szedi be, ez ízlés szerint változtatható (include("fejlec.php") és include("lablec.php"));
-
fordfairlane
veterán
Ezek szerint ajax+post nem is működhet egyszerre?
Működhet, de az nem világos, hogy miért az ajaxot akarod használni a felhasználónév ellenőrzésére? Nem mondom, hogy olyan bonyolult lenne, de nem is egyszerű dolog, különösen neked nem, hiszen most kezdtél el foglalkozni a PHP-vel. Ahhoz, hogy bánni tudj az ilyen összetettebb dolgokkal, sok tapasztalat kell, jobban át kell látnod, hogyan zajlik a böngésző - szerver interakció, és nem csak szerve-, hanem kliensoldali programozásra is szükséged lesz.
Szerintem első körben a form - submit után hajtsd végre a felhasználónév foglaltságának ellenőrzését, és ha foglalt, jelenítsd meg a formot a begépelt adatokkal, és a hiba üzenettel. Erre amúgy is szükséged lesz, hiszen lehet más probléma is a felvitt adatokkal, pl. nem töltött ki kötelezően kitöltendő mezőket stb... Ez egy klasszikus form - validálás feladat, ha kell, segítek a részletekben, de a haladó technikát (AJAX) inkább csak akkor ajánlom, ha már ezek az alapvető dolgok rutinszerűen mennek.
-
fordfairlane
veterán
válasz
Medcomp #1452 üzenetére
Az adattáblák módosítását az adatbáziskezelővel kell csinálni, ez független dolog a PHP-tól. Ha mysql-t használsz, akkor erre több lehetőség is van, vagy használod a mysql konzolt vagy valami adatbáziskezelő frontendet. Sqlyog, phpmyadmin stb, stb... Mivel nem írtál semmi konkrét dolgot, ezért nehéz konkrétan válaszolni is, hogy neked ebben a helyzetben pontosan hol és mit kell átírnod. Nem tudni például, hogy miféle program az, amibe bele kell nyúlni. Egy összetett programban, amit valaki más készített, ha megváltoztatsz egy programrészt, nem várt problémákat szülhet.
Mysql konzolban adattábla módosítására az ALTER TABLE sql paranccsal lehetséges. Az pedig , hogy a PHP-ban hol az a lekérdezés, ami listáz, azt csak te tudod megkeresni.
Vagy esetleg tudnál valami linket adni, ahol utánnanézhetnék?
mysql help, php help, php tutorialok, stb, stb...
-
fordfairlane
veterán
Ez a sor szerintem mindenképp hibás:
$eredmeny = mysql_query( "SELECT * FROM fotabla WHERE felhnev = $sz ");
Kell valami $sz köré, ha a felhnev oszlop szöveg (varchar, text) típusú:
$eredmeny = mysql_query( "SELECT * FROM fotabla WHERE felhnev = '$sz' ");
vagy
$eredmeny = mysql_query( 'SELECT * FROM fotabla WHERE felhnev = "'.$sz.'"');
Az más téma, hogy van-e olyan felhnev érték, amire a query találatot ad. Nálad nem az a gond, hogy nincs találat, hanem hogy hibás a query.
-
fordfairlane
veterán
Az előtte levő lekérdezés valami oknál fogva nem ad ereményt, így $eredmeny változó nem mysql result set típusú lesz. Lehet, hogy $sz változó üres, így a query string nem lesz helyes szintaktikailag. Illetve most nézem, bizonyára felhasználónév lesz benne. Akkor ez így nem jó, a queryben idézőjelek közé kell kerüljön a string.
-
fordfairlane
veterán
Ezzel mindent lehet, új táblát létrehozni, meglévőt átvariálni, tartalmat szerkeszteni, keresni benne stb... de minimális relációs adatbázis ismeret, pl. MS Access nem árt hozzá. Kifejezetten Excel stílusú grides szerkesztőt nem ismerek. Én a SQLyogot használom [link], de ez nem webes, hanem telepíthető Win32 alkalmazás, és ez sem olyan, mint egy Excel.
-
fordfairlane
veterán
Ilyenre gondoltál? Phpmyadmin
-
fordfairlane
veterán
-
fordfairlane
veterán
CREATE TABLE customer
(First_Name char(50),
Last_Name char(50),
Address char(50),
City char(50),
Country char(25),
Birth_Date date);Ez egy mysql query, nem php parancs, ennek megfelelően kell kezelni:
mysql_query("CREATE TABLE customer
(First_Name char(50),
Last_Name char(50),
Address char(50),
City char(50),
Country char(25),
Birth_Date date);"); -
fordfairlane
veterán
Ezt a könyvet többen is dicsérték, én nem olvastam:
Aktív témák
Hirdetés
- PlayStation 5
- Debrecen és környéke adok-veszek-beszélgetek
- VR topik (Oculus Rift, stb.)
- Először égett le egy újságnál a GeForce RTX 5090
- Milyen autót vegyek?
- Netflix
- Kerékpárosok, bringások ide!
- E-roller topik
- Kodi és kiegészítői magyar nyelvű online tartalmakhoz (Linux, Windows)
- Kínai és egyéb olcsó órák topikja
- További aktív témák...
- Lenovo LEGION Pro 5 / Pro 7, Lenovo Yoga Pro gépek (RTX 4060 / 4070 / 4080 / 4090)
- BESZÁMÍTÁS! MSI B450M R5 5600 16GB DDR4 512GB SSD RX 6700XT 12GB Zalman N4 FSP 700W
- Eladó karcmentes Huawei Nova 8i 6/128GB / 12 hó jótállással
- MacBook Pro 16 2021 M1 Max 32GB 512GB 1 év garancia
- ÁRGARANCIA!Épített KomPhone Ryzen 7 5700X 16/32/64GB RAM RTX 5060 Ti 16GB GAMER termékbeszámítással
Állásajánlatok
Cég: FOTC
Város: Budapest