Hirdetés
- Milyen billentyűzetet vegyek?
- Épített vízhűtés (nem kompakt) topic
- Bluetooth hangszórók
- Milyen TV-t vegyek?
- Kormányok / autós szimulátorok topikja
- Billentyűzet-választó: mechanikus vs membrános – kinek melyik a jobb?
- Projektor topic
- Házimozi belépő szinten
- Lopakodva befutott a Radeon RX 9060
- Majdnem megfelezi a GeForce GPU-k gyártókapacitását az NVIDIA?
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
Állásajánlatok
Cég: Laptopszaki Kft.
Város: Budapest
Cég: BroadBit Hungary Kft.
Város: Budakeszi

Lekérdezés és adattábla módosítása.

