Hirdetés
- Luck Dragon: Asszociációs játék. :)
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Brogyi: CTEK akkumulátor töltő és másolatai
- sziku69: Szólánc.
- Meggyi001: Eldugott helyek Párizsban, amiket jó eséllyel még nem láttál... 2. rész.
- sziku69: Fűzzük össze a szavakat :)
- GoodSpeed: Egy bihari a Hajdúságban
- Elektromos rásegítésű kerékpárok
- Parci: Milyen mosógépet vegyek?
- Gurulunk, WAZE?!
Új hozzászólás Aktív témák
-
faster
nagyúr
Valaki meg tudná mondani, hogy 4.0-ás mysqlben hogyan kell lekérdezni a character set beállításokat? Nem a 4.1-es kell, hanem a 4.0-ás!
-
faster
nagyúr
Megjelent a Mysql 5.0 stable:
[link] -
faster
nagyúr
válasz
loszerafin #146 üzenetére
Én is használtam már php-t DDL utasításokhoz, nincs mindenhol mysql konzol.
-
faster
nagyúr
Hát ez előfordul, bár azért szvsz a legtöbb oldalon figyelnek erre. Egyébként többek közt erre való a session kezelés, hogy ne lehessen csak úgy belépni akármilyen URL-re. Amióta a PHP-ben beépítve van a session kezelés, viszonylag egyszerű ezt a problémát orvosolni.
[Szerkesztve] -
faster
nagyúr
Mi nem érthető az sql_query függvényen? végrehajt egy mysql_query-t, aztán pedig megvizsgálja, hogy történt-e hiba a query végrehajtásakor, és ha történt, akkor kiírja az outputra a hiba szövegét.
Magára az include-olásra pedig azt tudom mondani, hogy így is megoldható a kódújrafelhasználás, de csak akkor, ha csak egyetlen funkció van, amit több fájlban akarsz felhasználni. Ha már több ilyen van, akkor persz meg lehet oldani úgy is, hogy minden egyes kódrészletet külön fájba raksz, és aztán azt include-olod be, amelyikre szükséged van, de ez egy idő után sok fájlhoz vezet, nem is beszélve arról, hogy az egyik kódrészletben nehezen lehet felhasználni egy másik kódrészletet.
Ráadásul figyelni kell arra, hogy az include-olt kódban nehogy véletlenül egy olyan nevű változót használj valamire, ami az őt behívó programban már valami egész más funkcióra használsz. Sokkal célszerűbb a függvények (function) használata, mert ez megoldja ezt a problémát is. -
faster
nagyúr
A php és a mysql két külön program. A mysql az adatbázis kezelő, a php az alkalmazás szerver része. Természetesen adattáblát az adatbáziskezelőben kell létrehozni, ezt kétféleképen lehet:
1. belépsz az adatbázis szerver konzoljára, és létrehozod a megfelelő sql utasításokkal a táblát
2. php-ből hozzákapcsolódsz az adatbázis szerverhez, és úgy adod ki a megfelelő sql parancsokat. Ez az eset lett kitárgyalva. -
faster
nagyúr
No problem, én is lusta lennék minden egyes lekérdezéshez még egy plussz mysql_error-t rakni, aztán kiszedegetni. Én is elkövettem már ezeket a hibákat.
Csinálj egy inlcude fájlt a gyakran használt funkcióknak, ilyen pl. az adatbázis kapcsolódás, vagy ez az sql_query, és include-old be minden scripted elejére, akkor nem lesznek ilyen problémák, hogy oda nem raksz mysql_error-t, ahol hibát vétesz (általában senki nem tudja előre, hol fog hibát véteni)
include.php:
<?
sql_connect() {
$server = ''localhost'';
$username = ..
...
mysql_connect(...);
mysql_select_db();
}
sql_query() {
...
}
?>
prog.php:
<?
require_once(''include.php'');
sql_connect();
...
$lekerdezes = sql_query(...);
?>
Én így szoktam csinálni.
[Szerkesztve] -
faster
nagyúr
Szivesen. Akkor viszont a g-betűt a programba beírva se működhetett ez a programrész.
Egyébként fejlesztés idejére érdemes a mysql_query helyett egy saját függvénnyel dolgozni, ami kiírja az adatbázis hibákat pl.:
sql.php:
<?
function sql_query($query) {
$res = mysql_query($query);
if(mysql_errno()) {
echo mysql_error().''<br>'';
echo ''<strong>$query</strong>'';
}
else {
return $res;
}
}
?>
a programban pedig:
...
require_once(''sql.php'');
...
$lekerdezes = sql_query(''...'');
[Szerkesztve] -
faster
nagyúr
Persze azt hozzátenném, hogy pl. ezt a programrészt:
$kapcsolat = mysql_connect($sqlhost, $sqluser, $sqlpass) or die(''Nem lehet csatlakozni: ''.mysql_error().''<br>'');
print ''Sikerült a kapcsolat letrehozasa<br>'';
mysql_select_db($database) or die(''Nem lehet megnyitni az adatbázist: ''.mysql_error().''<br>'');
print ''Sikerült kiválasztani a ''.$database.'' adatbázist<br>'';
átraktam a program elejére, mert nem csak a beszúrásnál kell kapcsolódni az adatbázishoz, hanem a kiolvasás-ellenőrzés előtt is.
[Szerkesztve] -
faster
nagyúr
Tehát, ha jól értem, így nem találja meg a rekordot:
$lekeres2 = mysql_query(''SELECT * FROM probatabla WHERE nev = '$nev' '');
és ez is igaz:
if($nev == ''g'') print ''Ebbe téllen gé van!'';
így viszont megtalálja:
$lekeres2 = mysql_query(''SELECT * FROM probatabla WHERE nev = 'g' '');
mert akkor ez voodoo mágia. -
faster
nagyúr
Ennek a htmlnek minimum így kéne kinéznie:
<form action=''ellenorzes.php'' target=''_blank'' method=''post''>
<tr><td align=''left'' valign=''top''>
<b>NÉV:</b><br>
<input type=''text'' name=''nev'' value='''' maxlenght=''8''> <br><br>
<b>JELSZÓ:</b><br>
<input type=''password'' name=''jelszo'' value='''' maxlenght=''8''>
<input type=''submit'' name=''kuld'' value=''OK''>
</td></tr>
</form>
Az egybecsúszást úgy értettem, hogy az action attribútumot elkezdted idézőjellel, de nem zártad le, a targetnél pont fordítva.
Kifejezetten nehéz hibáktól hemzsegő kódban megtalálni a valódi hibát.
Ez is fölöslegesen van elbonyolítva:
$ilyennincs=''$nev'';
$lekeres2 = mysql_query(''SELECT * FROM probatabla
WHERE nev= '$ilyennincs' '');
if (mysql_num_rows($lekeres2) != 0)
{
while ( $row = mysql_fetch_array( $lekeres2 ) )
{
print ''van már ilyen név'';
}
}
else //minden ezen az ágon fut tovább, ha nincs ilyen név még.
Kezdjük azzal, hogy
$ilyennincs = $nev; // tök fölösleges ide az idézőjel (már másoknál is megfigyeltem, hogy így csinálja ($ilyennincs=''$nev'';) , de fel nem tudom fogni, hogy miért)
elég ennyi is:
$lekeres2 = mysql_query(''SELECT * FROM probatabla
WHERE nev= '$nev' '');
if (mysql_num_rows($lekeres2) != 0)
{
print ''van már ilyen név'';
}
else //minden ezen az ágon fut tovább, ha nincs ilyen név még.
Szóval, beírsz a formon pl. egy g betűt, és az nem lesz jó. Kiírásnál csak egy g-t éátsz, az adatbázisban is van egy g nevű user, mégsem találja meg?Biztso csak egy g betű kerül a $nev nevű változóba? Egy ilyen:
echo strlen($nev);
1-et kell, hogy kiírjon (1 db karakter esetén), ez is stimmel?
[Szerkesztve]
Új hozzászólás Aktív témák
- Milyen billentyűzetet vegyek?
- AMD vs. INTEL vs. NVIDIA
- Absolum teszt
- Szeged és környéke adok-veszek-beszélgetek
- Xiaomi 15T - reakció nélkül nincs egyensúly
- Parfüm topik
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Synology NAS
- GeForce RTX 5060: Ezt kapjuk 150 ezerért
- Futás, futópályák
- További aktív témák...
- Precision 7680 16" FHD+ IPS i9-13950HX RTX 2000 Ada 32GB 1TB NVMe IR kam gar
- MSI Thin 15.6"FHD IPS (144Hz) Intel i5-12450H-8GB DDR4 Ram-512GB SSD-NVidia RTX 2050 4GB GDDR6!
- KZ AN01 Bluetooth fülhorog + KZ AM16 HiFi fülhallgató eladó!
- LG 50QNED85T3A / QNED / 50" - 127 cm / 4K UHD / 120Hz / HDR Dolby Vision / FreeSync Premium / VRR
- LG 65QNED86T3A / QNED / 65" - 164 cm / 4K UHD / 120Hz / HDR Dolby Vision / FreeSync Premium / VRR
- ÁRGARANCIA! Épített KomPhone Ultra 9 285K 32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- HP 200W töltők (19.5V 10.3A) kis kék, kerek, 4.5x3.0mm, 928429-002
- Gamer PC-Számítógép! Csere-Beszámítás! R7 2700X / GTX 1080Ti / 16GB DDR4 / 512 SSD!
- HIBÁTLAN iPhone 13 Pro 128GB Graphite -1 ÉV GARANCIA - Kártyafüggetlen, MS3747, 91% Akkumulátor
- Jogtiszta Microsoft Windows / Office / Stb.
Állásajánlatok
Cég: NetGo.hu Kft.
Város: Gödöllő
Cég: Laptopműhely Bt.
Város: Budapest