- Intel Core i5 / i7 / i9 "Alder Lake-Raptor Lake/Refresh" (LGA1700)
- TCL LCD és LED TV-k
- AMD Ryzen 9 / 7 / 5 / 3 5***(X) "Zen 3" (AM4)
- Elkészült Oroszország első litográfiai berendezése
- Fejhallgató erősítő és DAC topik
- MSI blog: válasszunk notebookot akciósan!
- Melyik tápegységet vegyem?
- Vezetékes FEJhallgatók
- Samsung LCD és LED TV-k
- Milyen Android TV boxot vegyek?
Hirdetés
-
Hauntii teszt
gp Ki gondolta volna, hogy az élet és halál közti rés ennyire élvezetes lehet? Igaz, szín nem sok fért ebbe a birodalomba, de a Hauntii hangulatával, harcaival és apró fejtörőivel is képes elvarázsolni.
-
AMD Radeon undervolt/overclock
lo Minden egy hideg, téli estén kezdődött, mikor rájöttem, hogy már kicsit kevés az RTX2060...
-
EU: a bankoké a felelősség, ha AI-t használnak
it Az EU tőzsdefelügyelete szerint ha AI-t használnak a bankok és befektetési cégek, akkor övék a felelősség.
Új hozzászólás Aktív témák
-
Angel82
csendes tag
Sziasztok!
MySQL-ben szeretném azt elérni, hogy die(mysql_error()) esetén ne hibaüzenetet írjon ki, hanem ugorjon x.php oldalra (ahova én írom a hibaüzit). Tudom, hogy die(''Szöveg'')-et lehet csinálni, de sajnos ebben az esetben nem formázható a szöveg, meg ilyenek. Ha valaki tudna segíteni, kérem írjon.
Thx előre is!ASUS A6JA-Q001H
-
L3zl13
nagyúr
Ne die függvényt használj, hanem valami mást...
Ha még semmit nem írtál ki az oldalra, akkor header() -rel átirányítod, és GET-tel átadod a mysql_error() visszaadott értékét.
Bár nem tom miért kell egyátálán átirányítani. Ugyanezen az oldalon is kiírhatnád a hibaüzit.
[Szerkesztve]Aki hülye, haljon meg!
-
Angel82
csendes tag
Itt igazából arról van szó, hogy get-tel kap az oldal egy paramétert, ami alapján megjelenít szépen táblában 30 lekérdezés után egy rakat adatot. Azt szeretném elérni, ha semmit se kap paraméterként, akkor írjon ki valamit.
Íme a kód:
<?php
$colname_tk = ''1'';
if (isset($_GET['id')) {
$colname_tk = (get_magic_quotes_gpc()) ? $_GET['id' : addslashes($_GET['id');
}
mysql_select_db($database_myconn, $myconn);
$query_tk = sprintf(''SELECT * FROM sajt WHERE id = %s'', $colname_tk);
$tk = mysql_query($query_tk, $myconn) or die(mysql_error());
$row_tk = mysql_fetch_assoc($tk);
$totalRows_tk = mysql_num_rows($tk);ASUS A6JA-Q001H
-
Angel82
csendes tag
Tehát a gettel kapott id alapján csinál egy lekérdezést, de ha nincs id akkor írjon ki vmit
ASUS A6JA-Q001H
-
VladimirR
nagyúr
egyreszt Bővebben: link
masreszt
if (isset($_GET['id'])) {
//ide jon a lekerdezes es az eremeny kiiratasa
} else {
print ''aggyal meg parametert'';
} -
-
Angel82
csendes tag
Köszi a segítséget, de teljesen félreérted a lényeget. Messze nem hibakeresést kértem, köszönöm! Van egy keresés oldal, ami átad egy értéket url paraméterként a megjelenítésért felelős oldalnak. Még mielőtt gondot csinálsz belőle, azért url paraméter és nem más, mert ez az oldal több helyről is megkaphatja ezt, többek között önmagától, így post, session stb... kizárva. Annyi volt a gondom, hogy ha nem kap paramétert az oldal, akkor le sem futott a legelső lekérdezés, hanem mysql_error-ral befejezte az oldal futtatását. Ezt szerettem volna kiküszöbölni valami értelmes megoldással.
Mégegyszer köszönöm a segítséget!ASUS A6JA-Q001H
-
L3zl13
nagyúr
De nem érted?
Minek kell megvárnod a mysql errort? Már az sql lekérdezés előtt is meg tudod nézni kaptál-e paramétert vagy sem.
Ha nem kaptál akkor úgyis hibás lesz a lekérdezés, akkor meg minek futtatod le?
Ennél a lekérdezésnél csak annyi múlik rajta, hogy mysql errort lát a felhasználó, vagy pedig hibaüzenetet, de máskor esetleg hazavághatja az adatbázisod egy ellenőrizetlenül felhasznált paraméter.
Nézz csak bele a PHP kérdések topicba. Pont mostanság írogatott valaki az SQL inject támadásról...
[Szerkesztve]Aki hülye, haljon meg!
-
Angel82
csendes tag
Ok, értem mire gondolsz! Végülis akkor az isset alapján döntsem el a dolgot és ha kell, irányítsam át ahova jólesik, nem?
Nagyjából átolvastam az inject-es részt. Lényegileg tehát arról van szó, hogy egy végtelenített lekérdezést/insertet stb.. hoznak létre kedves emberkék a változó megadásával.
Néhány kérdés:
Hogyan láthatják a változóim nevét?
Ebben az esetben sztem bármilyen változót megadhatna paraméterként, legfeljebb nem lenne eredménye a lekérdezéshalmaznak, nem?
Ha ráérsz, várom válaszod!ASUS A6JA-Q001H
-
b14
senior tag
Kerem, valaki segitsen feltelepiteni a gepemre az sqlt.
Msn cimem: email cimem.
A tavsegitseg lenne a legjobb.''...de a konfigjából kiindulva, nem hiszem, hogy 40 éves családos ember lenne...'' -- by Slax
-
Akcept
tag
Üdv mindenkinek!
MySql biztonsági kérdésem van. A config fájlt védem a következő kódrészlettel:
if (eregi(''config.php'',$_SERVER['PHP_SELF')) {
Header(''Location: valami.php'');
die();
A config-ban található név-jelszó-adatbázisnév birtokában hozzáférnek az adatbázishoz, és azt tehetnek amit akrnak, ellenkező esetben nem.
A kérdésem a következő: miért kell az adatbázisban titkosítva tárolni a jelszavakat amikor a configban (vagy máshol) úgyis titkosítás nélkül van a fent említett triumvirátus? És még mit tegyek a nagyobb biztonságért?
Előre is kössz. -
L3zl13
nagyúr
Szvsz config.php-ban azért van titkosítatlanul, mert a kódot úgyis csak az látja, akinek fájl szintű hozzáférése van a szerverhez. Az meg úgyis megtehet bármit.
Adatbázisbéli titkosítás pedig szerintem kimondottan csak azoktól véd akik SQL injecttel vagy hasonló módon hozzáférnek az adatbázishoz.
A beírt kódnak meg őpszintén szólva nem sok értelmét látom...Aki hülye, haljon meg!
-
jeszi
tag
Van egy nagy orvos adatbázis Access-ben, amit napi szinten karban kell tartanom. Ezenkívül gyakran kérnek tőlem különböző listákat. Pl.: Háziorvosok Bp-en, tel. szükséges stb.
Írnom kéne egy olyan alkalmazást, amellyel ezeket a feladatokat el tudom látni. Intranetes megoldást szeretnék, php+Apache+MySql használatával.
Első lépésben át akarom konvertálni az Access adatbázist MySql-re. Az adatok áthelyezése csak akkor megy, ha már a táblákat létrehoztam MySql-ben. Lenne olyan módszer, ami a táblákat is létrehozza? És akkor nem kell nekem manuálisan beirogatni a táblákat, mezőneveket, típusokat.Nem félek a haláltól, majdcsak túlélem valahogy!
-
muad_dib
tag
Egy időben szívtam olyas dolgokkal, hogy adatbázisszerkezetet kellet objektumokra bontva bizergélni, és a neten van néhány olyan progi, aminek megadhatsz valós adatbázist, csinál okos ojjektumokat (táblákat, view-kat, meg ilyenek) és tudja a kész cuccot exportálni. Sajna nem ugrik be egy név sem, amit tudok, hogy nekünk itt cégnél van egy MS Visio nevű cucc - ami általában prezi készítésre használatos felénk - és ő tutira tudott ilyet csinálni, bár feltételezem egyszerűbb megoldást is találsz...
Hogyan nősül a hálózati játék fanatikus? - Holtomiglan holtodiglan...
-
muad_dib
tag
Nemtom ezt nézted-e már..
http://www.kitebird.com/articles/access-migrate.htmlHogyan nősül a hálózati játék fanatikus? - Holtomiglan holtodiglan...
-
Törzsfőnök
tag
Hello
A mysql-ben még egyelőre nem vagyok járatos, viszont a standard SQL-hez értek alap szinten .
Azt halottam, hogy a mysql-ben nem lehet egymásbaágyazott SQL lekérdezést írni. Informátorom azt is hozzátette, hogy 4.xx verziót használja, és ott sem lehet még. Néztem a neten az 5-ös verzióra vonatkozó ficsöröket, de közöttük sem találtam arra való utalást. Akkor hogy lehet megvalósítani egy eredetileg egymásbaágyazott lekérdezést egyszerűen mysql-ben? -
muad_dib
tag
válasz Törzsfőnök #34 üzenetére
nemtom, lehet h hulye vok, de szerintem 4ben siman lehet ilyet csinalni... most epp nem erek ra de megprobalom megnezni ha meg erdekel esetleg.
Hogyan nősül a hálózati játék fanatikus? - Holtomiglan holtodiglan...
-
Tele von Zsinór
őstag
Nekem magával a MySQL szerverrel kapcsolatban lenne kérdésem: egy cégnek írok adatbázis kezelő progit (mi mást, ha itt kérdezek? ), a szervergépre felraktam MySQL szervert, csináltam egy farszer adatbázist, bele 3 táblát, jogokat kiosztottam (''grant all privileges on farszer.* to 'ODBC'@'%' '', ne menjünk most bele ennek a veszélyeibe, nincs net a szerveren, támadástól egyelőre nem kell tartani), és ekkor ment is a progi rendesen, hálózaton keresztül. Viszont ekkor jött még néhány új igény, aminek a következménye sok-sok alter table lett. A describe helyesen jelzi a tábla felépítését. A progi a korábban is létező mezőkkel rendesen működik, de amikor az újakba próbál írni, nem történik semmi. Ha MySQL konzollal módosítok egy rekordot, akkor azt helyesen látja, de írni így se tudja. Találkozott már valaki hasonlóval?
-
L3zl13
nagyúr
-
muad_dib
tag
válasz Törzsfőnök #36 üzenetére
lehet, megneztem
select ize from valami where masikeredmeny = (select masikeredmeny from masikize) and eznekemjo=true;
a zarojel fontos, maskepp nem eszi meg
[Szerkesztve]Hogyan nősül a hálózati játék fanatikus? - Holtomiglan holtodiglan...
-
Tele von Zsinór
őstag
válasz Tele von Zsinór #39 üzenetére
up!
-
Zoltán
őstag
Sziasztok!
Írtam ezt a kódot:
<?php
$database=''db_ak48'';
$sqlhost=''localhost'';
$sqluser=''ak48'';
$sqlpass=''...törölve...'';
$kapcsolat=mysql_connect($sqlhost, $sqluser, $sqlpass);
if (! $kapcsolat) die (''Nem lehet csatlakozni'');
print ''Sikerült a kapcsolat!'';
mysql_select_db($database)
or die (''Nem lehet megnyitni az adatbázist:''.mysql_error() );
print ''Sikerült kiválasztani a $database adatbázist!'';
mysql_close ($kapcsolat)
CREATE TABLE elsotablam
(
azonosito INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (azonosito),
nev VARCHAR (8),
jelszo VARCHAR (10),
email VARCHAR (250),
datum VARCHAR (20),
ip VARCHAR (250));
)
?>
De a 17. sorra ( Create table........) hibát ír. Addig biztos, hogy jó, amíg csatlakozik az adatbázishoz, csak a tábla fejlécét nem tudom létrehozni. Mit írhattam el?
Köszi előre is! -
Zoltán
őstag
válasz Tele von Zsinór #43 üzenetére
''ad1'' -Erre nem tudok, mit mondani, egyszerűen ilyen töketlen vagyok. Elnézést kérek.
''ad2'' -mert nem tudom, hogyan kell. Megírnád? Köszi!
[Szerkesztve] -
Zoltán
őstag
Szóval itt tartok:
<?php
$database=''db_ak48'';
$sqlhost=''localhost'';
$sqluser=''ak48'';
$sqlpass=''törölve'';
$kapcsolat=mysql_connect($sqlhost, $sqluser, $sqlpass);
if (! $kapcsolat) die (''Nem lehet csatlakozni'');
print ''Sikerült a kapcsolat!'';
mysql_select_db($database)
or die (''Nem lehet megnyitni az adatbázist:''.mysql_error() );
print ''Sikerült kiválasztani a $database adatbázist!'';
mysql_query(
CREATE TABLE elsotablam //ez lesz itt a tábla neve
(
azonosito INT NOT NULL AUTO_INCREMENT, //INT-egész szám
PRIMARY KEY (azonosito),
nev VARCHAR (8),
jelszo VARCHAR (10),
email VARCHAR (250),
datum VARCHAR (20),
ip VARCHAR (250));
)
);
mysql_close ($kapcsolat)
?>
Kedves Hozzáértők: Mondjátok el légyszi, hogy hogyan kellene helyesen használni a my_sql_query- t! Kökő!
[Szerkesztve] -
-
Zoltán
őstag
Most sikerült kapcsolódni az adatbázishoz, de semmit sem ír kia a $sorok-ra.
<?php
$database=''db_ak48'';
$sqlhost=''localhost'';
$sqluser=''ak48'';
$sqlpass=''3660qHhJyNkw6'';
$kapcsolat=mysql_connect($sqlhost, $sqluser, $sqlpass);
if (! $kapcsolat) die (''Nem lehet csatlakozni'');
print ''Sikerült a kapcsolat!'';
mysql_select_db($database)
or die (''Nem lehet megnyitni az adatbázist:''.mysql_error() );
print ''Sikerült kiválasztani a $database adatbázist!'';
mysql_query(''
CREATE TABLE probatabla
azonosito INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (azonosito),
nev VARCHAR (8),
jelszo VARCHAR (10),
email VARCHAR (250),
datum VARCHAR (20),
ip VARCHAR (250));
'');
$nev=''Anna'';
$jelszo=''bingo777'';
$email=''annana@franconmail.hu'';
$datum=''2004.11.27. - 17:20'';
$ip=''555.666.777.888'';
$parancs = ''INSERT INTO probatabla
(azonosito, nev, jelszo, email, datum, ip)
VALUES
('$azonosito','$nev','$jelszo','$email','$datum','$ip')'';
$sorlekerdez = mysql_query(''SELECT * FROM probatabla'');
$sorok= mysql_num_rows($sorlekerdez);
print ''$sorok'';
mysql_close ($kapcsolat)
?>
Tudtok ajánlani valami jó mysql tutorialt, mert amit én találtam az semmire se jó, mint az fentebb látszik. Köszi. -
muad_dib
tag
Azért lehet, mert ugyan összerakod a $parancsot, de nem annyira futtatod le
jah, amúgy javaslat: ugyan nem kötelező de azért rakd csak ki a ;-t a mysql parancsok után...
okos php doksi
Bővebben: link
[Szerkesztve]Hogyan nősül a hálózati játék fanatikus? - Holtomiglan holtodiglan...
-
muad_dib
tag
-
muad_dib
tag
Hmmm...
erdekes.
Ha nem countot nezel meg akkor is vacak?
azaz
$result=mysql_query(''select nev, ip from probatabla;'');
while($retval=mysql_fetch_array($result){
echo($retval->nev.'' ''.$retval->ip);
}
ha ez se ad semmit akko nincs semmi a tabladba az fix...
lehet meg tranzakcio problema esetleg, mysql conf tol fugg...
jah, ha select * -ot irsz, akkor arra vigyazz, hogy a php egy helyen betumeret erzekeny, espedig az objektumoknal,,, azaz, ha a tablaban a mezo neve 'kutya'
akkor $retval->kutya, es nem $retval->Kutya
viszont, ha select akarmi as AkArMi, akkor meg $result->AkArMi ami neked kell....
probalkozz olyannal is, hogy a mysql_query utan nyomsz egy echo(mysql_error()); -t
ami jol megmondja ha esetleg vmit elszurtalHogyan nősül a hálózati játék fanatikus? - Holtomiglan holtodiglan...
-
muad_dib
tag
-
muad_dib
tag
aham... arra gyanakszom, hogy eleve a query hibat ad vissza - kvazi nem letezik a tabla, ezert a fetch elkuld a fenebe... szoval
if($result=mysql_query('select....;'){
while(....){
....
}
} else echo('lekerdezes nem faja');Hogyan nősül a hálózati játék fanatikus? - Holtomiglan holtodiglan...
-
Zoltán
őstag
Így (is) próbálom létrehozni a táblát:
mysql_query(''
CREATE TABLE probatabla
(azonosito INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (azonosito),
nev VARCHAR (8),
jelszo VARCHAR (10),
email VARCHAR (250),
datum VARCHAR (20),
ip VARCHAR (250);)
'');
Csatlakozni tudok az adatbázishoz, de a tábla nem jön létre. -
muad_dib
tag
ahham.
bocsesz a kimaradasert, csak leleptem melobol... most meg menek sore
amit javaslok: a primary key az utolso legyen (marmint a prmary key 'szo') nem hiszem h ez a baj, de mar nem tudok mire gondolni. Kozvetlenul a create utan irass ki egy mysql errort, illetve vizsgald le a mysql query visszateresi erteket... az is lehet, h jogosultsag gubanc, de az errornak meg kell mondani... ha ez se megy, akkor:
mysql_query(''start transaction;'');
mysql_query(''tequeryd'');
mysql_query(''commit;'');
de ezt hagyd utoljara... valami furan lehet konfolva nalad vagy nemtomHogyan nősül a hálózati játék fanatikus? - Holtomiglan holtodiglan...
-
Zoltán
őstag
''bocsesz a kimaradasert,'' -ugyan, én örülök, hogy segítesz, amikor tudsz.
You have an error in your SQL syntax near ';) ' at line 10
Ezt a hibát írja ki.
Csak az a furcsa, hogy a 10. sorban még olyan kód van, hogy csatlakozzon az adatbázishoz, ami sikerül is, ki is írja, hogy oké! -
Zoltán
őstag
Most így próbáltam:
<?php
$database=''db_ak48'';
$sqlhost=''localhost'';
$sqluser=''ak48'';
$sqlpass=''.....'';
$kapcsolat=mysql_connect($sqlhost, $sqluser, $sqlpass);
if (! $kapcsolat) die (''Nem lehet csatlakozni'');
print ''Sikerült a kapcsolat!'';
mysql_select_db($database)
or die (''Nem lehet megnyitni az adatbázist:''.mysql_error() );
print ''Sikerült kiválasztani a $database adatbázist!'';
mysq_query(''create table probatabla ( id int(10) not_null, nev varchar(8), jelszo varchar(10), email varchar (250), datum varchar (20), ip varchar (250), primary key(id));'');
echo(mysql_error());
$nev=''Anna'';
$jelszo=''bingo777'';
$email=''annana@franconmail.hu'';
$datum=''2004.11.27. - 17:20'';
$ip=''555.666.777.888'';
$parancs = ''INSERT INTO probatabla
(id, nev, jelszo, email, datum, ip)
VALUES
('$id','$nev','$jelszo','$email','$datum','$ip')'';
mysql_query($parancs);
echo(mysql_error());
$sorlekerdez = mysql_query(''SELECT * FROM probatabla'');
$sorok= mysql_num_rows($sorlekerdez);
print ''$sorok'';
echo(mysql_error());
mysql_close ($kapcsolat)
?>
ez eddig a legjobb, mert lefut, semmi hibát nem ír ki a sok echo(mysql_error()); ellenére sem, meg kiírja, hogy sikerült csatlakozni, viszont még mindig nem írja ki a $sorok -at. Pedig utána van egy echo(mysql_error()); és így sem ír ki hibát.
Ki érti ezt? A tvn.hu -n próbálkozom. -
VladimirR
nagyúr
na, igy probald meg, ez nalam mukodik:
<?php
$database=''test'';
$sqlhost=''localhost'';
$sqluser=''root'';
$sqlpass='''';
$ujtabla = ''CREATE TABLE `probatabla` (''
. '' `id` INT(10) NOT NULL, ''
. '' `nev` VARCHAR(8) NOT NULL, ''
. '' `jelszo` VARCHAR(10) NOT NULL, ''
. '' `email` VARCHAR(250) NOT NULL, ''
. '' `datum` VARCHAR(20) NOT NULL, ''
. '' `ip` VARCHAR(250) NOT NULL, ''
. '' PRIMARY KEY (`id`)''
. '' )'';
$nev = ''Anna'';
$jelszo = ''bingo777'';
$email = ''annana@franconmail.hu'';
$datum = ''2004.11.27. - 17:20'';
$ip = ''555.666.777.888'';
$parancs = ''INSERT INTO `probatabla` ''
. ''(`id`, `nev`, `jelszo`, `email`, `datum`, `ip`) ''
. ''VALUES ''
. ''('$id', '$nev', '$jelszo', '$email', '$datum', '$ip')'';
$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>'';
mysql_query($ujtabla, $kapcsolat) or die(''Hiba a tabla letrehozasanal: ''.mysql_error().''<br>'');
print ''Sikerült letrehozni az uj tablat az adatbazisban<br>'';
mysql_query($parancs, $kapcsolat) or die(''Hiba a lekerdezes kozben: ''.mysql_error().''<br>'');
print ''Sikerült beilleszteni az adatokat az adatbazisba<br>'';
$sorlekerdez = mysql_query(''SELECT * FROM `probatabla`'') or die(''Hiba a lekerdezeskor: ''.mysql_error().''<br>'');
print ''Sikerült lekerdezni az adatokat az adatbazisbol<br>'';
$sorok= mysql_num_rows($sorlekerdez) or die(''Itt a bibi, valami nem jo'');
print ''Sorok szama: ''.$sorok;
mysql_close($kapcsolat);
?>
[Szerkesztve] -
Zoltán
őstag
válasz VladimirR #65 üzenetére
Begépeltem betűről-betűre, le is fut, csatlakozik is az adatbázishoz (mint eddig mindig) viszont tovább most se jut, ezt írja ki:
Sikerült a kapcsolat létrehozása
Sikerült kiválasztani a db_ak48 adatbázist
Hiba a tabla létrehozásánál: You have an error in your SQL syntax near ''probatabla' ( 'id' int(10) not_null, 'nev' varchar(8) not null, 'jelszo' varc' at line 1 -
VladimirR
nagyúr
dupla aposztrofokat mindenutt lecserelted idezojelre?
itt a kod maga => Bővebben: link es igy tudod letolteni => Bővebben: link
jah es az nem not_null, hanem NOT NULL
[Szerkesztve] -
Zoltán
őstag
válasz VladimirR #67 üzenetére
NOT NULL-t kijavítottam, de még mindig ezt írja ki:
Sikerült a kapcsolat létrehozása
Sikerült kiválasztani a db_ak48 adatbázist
Hiba a tabla létrehozásánál: You have an error in your SQL syntax near ''probatabla' ( 'id' int(10) NOT NULL, 'nev' varchar(8) NOT NULL, 'jelszo' varc' at line 1
Idézőjelek-aposztrófok persze ki lettek rendesen cserélve. Az általad linkelt oldalakat pedig sajnos nem tudom elérni.
Már arra is gondoltam, hogy ilyen nevű tábla esetleg már létezik, azért nem tudom létrehozni. Hogyan tudom ellenőrizni, hogy milyen táblák vannak?
[Szerkesztve] -
Zoltán
őstag
válasz VladimirR #67 üzenetére
Na most fogtam magam és egyszerűen becopypastéztem a Te kódodat (és persze kicseréltem az aposztrófokat) és most jó! Csak azt nem értem, hogy ha Én írom be pontosan ugyanezt (szintaktikai hiba nélkül, hisz lefut, nem szól a php, hogy ebben és ebben a sorban hiba van), akkor miért nem jó? Meg 2 könyvet is megnéztem, hogy hogyan kell pontosan mit-hova írni és úgy csináltam. Nem értem. Örülök, hogy végre jó, csak bosszant, hogy nem tudom, hol volt a hiba. (Az meg mégsem mehet, hogy minden egyes mysql ténykedésemkor rohanjak ide, hogy írd le légyszi helyettem, mert csak úgy megy )
Köszönöm szépen!!
MOD: Most vettem észre, hogy az általad írt aposztróf máshogy néz ki, mint az általam írt! A tied döntött, az enyém (1-es fölötti shiftel) meg egyenes. (Összehasonlítottam a két kódot, (két notepadot egymás után gyorsan kapcsolgatva) így vettem észre). Ez meg mi a szösz lehet? Fontosak az aposztrófok vagy elhagyhatók, esetleg idézőjellel helyetesíthetők?
Köszi
[Szerkesztve] -
Zoltán
őstag
Megpróbáltam a következő sor adatot is feltölteni a táblába, de ezt írta ki:
Sikerült a kapcsolat letrehozasa
Sikerült kiválasztani a db_ak48 adatbázist
Hiba a lekerdezes kozben: Duplicate entry '0' for key 1
Gondolom azért, mert nem növeli autómatikusan a sorok számát. Erre jó az AUTO_INCREMENT , ugye?
Hogyan tudom ezt utólag belerakni a táblába?
Egyébként így próbáltam a 2. sort beletenni:
<?php
$database=''db_ak48'';
$sqlhost=''localhost'';
$sqluser=''ak48'';
$sqlpass=''37Ws8wHH2QdRg'';
$ujtabla = ''CREATE TABLE `probatabla` (''
. '' `id` INT(10) NOT NULL, ''
. '' `nev` VARCHAR(8) NOT NULL, ''
. '' `jelszo` VARCHAR(10) NOT NULL, ''
. '' `email` VARCHAR(250) NOT NULL, ''
. '' `datum` VARCHAR(20) NOT NULL, ''
. '' `ip` VARCHAR(250) NOT NULL, ''
. '' PRIMARY KEY (`id`)''
. '' )'';
$nev = ''Belapapa'';
$jelszo = ''rugoka'';
$email = ''berugos@franconmail.hu'';
$datum = ''2004.11.27. - 18:10'';
$ip = ''111.222.333.444'';
$parancs = ''INSERT INTO `probatabla` ''
. ''(`id`, `nev`, `jelszo`, `email`, `datum`, `ip`) ''
. ''VALUES ''
. ''('$id', '$nev', '$jelszo', '$email', '$datum', '$ip')'';
$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>'';
mysql_query($parancs, $kapcsolat) or die(''Hiba a lekerdezes kozben: ''.mysql_error().''<br>'');
print ''Sikerült beilleszteni az adatokat az adatbazisba<br>'';
$sorlekerdez = mysql_query(''SELECT * FROM `probatabla`'') or die(''Hiba a lekerdezeskor: ''.mysql_error().''<br>'');
print ''Sikerült lekerdezni az adatokat az adatbazisbol<br>'';
$sorok= mysql_num_rows($sorlekerdez) or die(''Itt a bibi, valami nem jo'');
print ''Sorok szama: ''.$sorok;
mysql_close($kapcsolat);
?>
Tehát csak annyit csináltam, hogy kivettem a táblakészítést és kicseréltem a feltöltendő sor adatait. -
VladimirR
nagyúr
a dontott idezojel arra jo, hogy ha ''foglalt szot'' (pl mysql fuggvenynevek, parancsnevek, akarmik) szeretnel adni tabla-, vagy mezonevnek, akkor ilyenek koze kell irni
elhagyhato, ha nem ilyen foglalt kifejezest hasznalsz, de en igy szoktam meg, mert phpmyadminbol nezehgettem ki a php-s sql kodokat, s az mindenhova tesz
a hibat azert kapod, mert mar van 0 erteku key1 (sorban az elso, vagyis az id)
ezt ketfelekeppen kerulheted ki:
-lekerdezed, hogy mi az aktualis legnagyobb id, es attol egyel nagyobbat adsz meg
-autoincrementet hasznalsz, es a lekerdezesbol kiveszed az id-t, tehat ez lesz a beszurasod:
$parancs = ''INSERT INTO `probatabla` ''
. ''(`nev`, `jelszo`, `email`, `datum`, `ip`) ''
. ''VALUES ''
. ''('$nev', '$jelszo', '$email', '$datum', '$ip')'';
ekkor az id automatikusan fopg novekedni
beallitamni meg igy tudod:
ALTER TABLE `probatabla` CHANGE `id` `id` INT(10) NOT NULL AUTO_INCREMENT
az file-ok meg azert ne voltak elerhetoek, mert nem ment a gepem, igy nem volt elerheto a webszerverem, de most mar ujbol megy (ritka az olyan, hogy kikapcsolom a gepet, de ki kellett szednem a hdd-t ) -
Zoltán
őstag
válasz VladimirR #71 üzenetére
Oké , köszi, akkor ez most rendben van. Letöröltem a 2 táblát és kezdtem előről. Most van egy ''probatablam'' , abban benne van az első sor (az Annás), autoincremant van, így id -t nem adok meg. Aztán az alábbi kóddal be akartam tenni a következő sort is, úgy tűnik bele is rakta, de nem tudja kiválasztani a ''Belapapa'' -s sort. Így próbáltam:
<?php
$database=''db_ak48'';
$sqlhost=''localhost'';
$sqluser=''ak48'';
$sqlpass=''37Ws8wHH2QdRg'';
$ujtabla = ''CREATE TABLE `probatabla` (''
. '' `id` INT(10) NOT NULL AUTO_INCREMENT, ''
. '' `nev` VARCHAR(8) NOT NULL, ''
. '' `jelszo` VARCHAR(10) NOT NULL, ''
. '' `email` VARCHAR(250) NOT NULL, ''
. '' `datum` VARCHAR(20) NOT NULL, ''
. '' `ip` VARCHAR(250) NOT NULL, ''
. '' PRIMARY KEY (`id`)''
. '' )'';
$nev = ''Belapapa'';
$jelszo = ''rugoka'';
$email = ''berugos@franconmail.hu'';
$datum = ''2004.11.27. - 18:10'';
$ip = ''111.222.333.444'';
$parancs = ''INSERT INTO `probatabla` ''
. ''(`nev`, `jelszo`, `email`, `datum`, `ip`) ''
. ''VALUES ''
. ''('$nev', '$jelszo', '$email', '$datum', '$ip')'';
$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>'';
mysql_query($parancs, $kapcsolat) or die(''Hiba a lekerdezes kozben: ''.mysql_error().''<br>'');
print ''Sikerült beilleszteni az adatokat az adatbazisba<br>'';
$nev = ''Belapapa'';
$sorlekerdez = mysql_query(''SELECT * FROM `probatabla` WHERE nev like `$nev` '') or die(''Hiba a lekerdezeskor: ''.mysql_error().''<br>'');
print ''Sikerült lekerdezni az adatokat az adatbazisbol<br>'';
$sorok= mysql_num_rows($sorlekerdez) or die(''Itt a bibi, valami nem jo'');
print ''Sorok szama: ''.$sorok;
mysql_close($kapcsolat);
?>
Erre ezt írta ki:
Sikerült a kapcsolat letrehozasa
Sikerült kiválasztani a db_ak48 adatbázist
Sikerült beilleszteni az adatokat az adatbazisba
Hiba a lekerdezeskor: Unknown column 'Belapapa' in 'where clause'
Tehát úgy tűnik bele tette a 2. sort, de Belapapa nevűt nem talál.
MOD: biztos, hogy betette a 2. sort, mert a sorok számát jól le tudom kérdezni, de Belapapa-t sehol sem talál. Hogyan keressem? Illetve tudnál ajánlani egy rendes mysql (elektronikus) könyvet, mert úgy tűnik semmi sincs jól abban amit én találtam. Köszi!
[Szerkesztve] -
VladimirR
nagyúr
igy probald:
$lekerdez = ''SELECT * FROM `probatabla` WHERE nev like '$nev' '''
$sorlekerdez = mysql_query($lekerdez) or die(''Hiba a lekerdezeskor: ''.mysql_error().''<br>'');
(a $nev mellet levo aposztrofot csereltem ki)
tipp: szedj le egy phpmyadmin-t (Bővebben: link) es azon keresztul tudod managel-ni az adatbazisod - valamint megmutatja a lekerdezesek sql es php kodjat is, igy tanulni is eleg jol lehet belole -
Zoltán
őstag
Egy éve még Én is hazajárogattam hétvégére.... Régi szép idők. Bár ha belegondolok, most is elég jó Te hova utaztál haza? Én Kvárra. Na, nosztagia OFF.
Szóval köszi, hogy számontartottad. Meg amúgy is jó, hogy benézett ide még egy hozzáértő arc, mert VladimirR segítőkészségével már kezdtem visszaélni... -
Zoltán
őstag
Olyat szeretnék csinálni, hogy a mysql táblázatomba ne lehessen már meglévő néven regisztrálni. Tehát adott egy tábla, amiben mondjuk van egy név és egy jelszó egy sorban. Egy űrlapon valaki meg akarja adni a nevét ($nev) és a jelszavát ($jelszo), ezek bekerülnek a táblázatba egy új sorba, a $nev a ''nev'', a $jelszo meg a ''jelszo'' oszlopba. De nekem ellenőriznem kell, hogy van-e már ilyen név. Arra gondoltam, hogy egy ilyennel oldanám meg:
$ellenorzes = mysql_query( ''SELECT * FROM tabla
WHERE nev='$nev' '');
$nev -ben ugye a most megadott név van. Ha ez sikeresen lefut, tehát nem talál ilyen nevet, akkor tenném csak be a most megadott nevet és jelszót a táblázatba, egyébként kiírnám, hogy ilyen már van. Csak az a problémám, hogy nem tudom, hogy mi van, ha talál ilyen sort a SELECT? Vagy ha nem talál? Akkor mit csinál a SELECT? -
Zoltán
őstag
Köszi!
Közben kipróbáltam, hogy mi van akkor, ha olyat akarok a SELECT-el kiválasztani, ami nincs:
$ilyennincs=''ilyennincs'';
$lekeres2 = mysql_query(''SELECT * FROM probatabla
WHERE nev= '$ilyennincs' '');
if ($lekeres2 !='''')
print (''$lekeres2'');
else
print ''0'';
( Biztos vagyok benne, hogy nincs olyan nevű emberke, hogy ''ilyennincs'' )
Ez szépen le is fut, de ezt írja ki:
Resource id #9
Ami azért furcsa, mert a 9. ID-jű emberke neve: ''őő'' , amint azt ki is írja, lásd: Bővebben: link
Ha tudod, hogy miért van ez, írd meg légyszi! Köszi! -
VladimirR
nagyúr
ez azert van, mert a mysql_query egy resqurce ertekkel ter vissza, amit eloszor fetch-elni kell, pl a mysql_fetch_assoc, vagy mysql_fetch_array fuggvennyel
majd utana ki tudod iratni
abbol a resource_id-bol nem sok mindent tudsz meg, inkabb valami ilyesmi kellene (mint Szalma is irta)
$ilyennincs=''ilyennincs'';
$lekeres2 = mysql_query(''SELECT * FROM probatabla
WHERE nev= '$ilyennincs' '');
if (mysql_num_rows($lekeres2) = 0) {
while ($row = $result->fetch_assoc()) {
print $row[''nev'';
}
else
print ''0'';
[Szerkesztve] -
L3zl13
nagyúr
Resource ID, amit a mysql_query visszaad, a select eredményeképp kapott resultset azonosítója. Akkor is létezik, ha nincs találat. Egyedül akkor nem lesz értéke, ha hibás volt a query. Ezért lehet ilyenkor or die(mysql_error())-t alkalmazni.
Természetesen ennek a resource ID-nek nincs semmi köze a táblák illetve a lekérdezés eredményében szereplő adatokhoz. SZóval resource id=9 nem a 9. sor, vagy a kilencedik ember vagy akármi. Hanem egyszerűen ezen az azonosítón keresztül lehet lekérni mondjuk PHP-ben az eredményt.Aki hülye, haljon meg!
-
Szalma
őstag
(''mysql_num_rows($lekeres2) = 0'' <- Ez itt szintaktikusan hibás. A forrás alapján szerintem így helyes ''mysql_num_rows($lekeres2) != 0''... A hiányzó ''}'' helyét pedig egy jó editor megmondja. Ha nem mond semmit, akkor ideje keresni egy jót... (vim))
Szeretettel:
Szalma
szerk.: És milyen lassan gépelek...
[Szerkesztve] -
Zoltán
őstag
válasz VladimirR #82 üzenetére
Akkor most jól megy, ha olyat írok be ami nem létezik, de ha létező nevet, akkor nem ír ki semit, sőt a később jövő sorok sem futnak le. Most így áll:
$ilyennincs=''g'';
$lekeres2 = mysql_query(''SELECT * FROM probatabla
WHERE nev= '$ilyennincs' '');
if (mysql_num_rows($lekeres2) != 0)
{
while ($row = $result->fetch_assoc())
{
print ($row[''nev'');
}
}
else
{
print ''<br>nincs még ilyen név0'';
}
''g'' nevű emberke van és semmit sem ír ki. Meg az ezek utáni sorok sem futnak le (egy másik lekérdezés, ami eddig jól ment, meg akkor is jó, ha olyat adok meg $ilyennincs -nek, ami nincs.
Most mé' nem jó ? -
Zoltán
őstag
válasz VladimirR #92 üzenetére
Helyzet így is ugyanaz, mint a #91-ben. Nem írja ki a nevet és a progi sem fut tovább, tehát nem listázza ki az egész táblát (az jönne ezután). Ha nemlétező nevet írok be, akkor jól kiírja, hogy ilyen nincs és fut tovább a progi, tehát egy táblázatban kiírja, hogy mik vannak a táblában.
MOD: Na, rájöttem, így a jó a while:
while ( $row = mysql_fetch_array( $lekeres2 ) )
{
print $row[''nev'';
}
Most jó, örülök. Köszi mindhármótoknak!
[Szerkesztve] -
Zoltán
őstag
Agyam eldobom! Ha nem egy konkrét nevet adok meg, hanem egy véltozóban lévőt, akkor mindenképpen úgy érzékeli, hogy nincs még ilyen név:
Az user megad egy nevet, amin regelni szeretne, ez lenne a $nev
$ilyennincs=$nev;
$lekeres2 = mysql_query(''SELECT * FROM probatabla
WHERE nev= '$ilyennincs' '');
if (mysql_num_rows($lekeres2) != 0)
{
while ( $row = mysql_fetch_array( $lekeres2 ) )
{
print ''Már van ilyen név!'';
}
}
else
{
print ''<br>nincs még ilyen név0'';
}
Eddig jól ment, ha mondjuk: $ilyennincs=''g'';
ekkor jól kiírja, hogy ilyen nevű (g) már van. De ha változót írok oda, akkor meg mindenképpen úgylátja, hogy még nincs és engedi regelni.
Hogyan adhatok meg változót $ilyennincs-nek? -
Zoltán
őstag
Mit jelent trimmelni? Én vagyok a felhasználó és én adom meg egy űrlapon a nevet. Az űrlap:
<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'></FORM> -
Zoltán
őstag
-
Zoltán
őstag
Jelenleg ez a php kód:
<?php
$datum= date(''Y.m.d. - H:i'',time()); //a dátum kinyerése
$ip=''$REMOTE_ADDR''; //az ip kinyerése
$email= ''aaa@fff.pl''; //csak úgy megadok most egy e-mail címet.
$nev = $_POST['nev'; // ez ugye a html űrlapról jön át
$jelszo = $_POST['jelszo'; // ez ugye a html űrlapról jön át
print ''$nev''; //ellenőrzés, tényleg az van benne, amit a html űrlapon megadok.
$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.
{
print ''<br>nincs még ilyen név0'';
$uzenet='''';
if ($nev=='''')
$uzenet .= ''Nem adtad meg a nevedet!<br>\n'';
if (strlen ($nev )>8)
$uzenet .=''Ne má' a név max. 8 karakter lehet!<br>\n'';
if ($jelszo=='''')
$uzenet .= ''Nem adtad meg a jelszavad!<br>\n'';
if (strlen ($jelszo )>8)
$uzenet .=''Ki bírja ezt megjegyezni???<br>\n'';
if ($uzenet !='''')
{
print (''
<font color=#aa0000 size=+1>
<b>$uzenet</b></font>'');
exit();
}
else //ha hibaüzi sincs, akkor fut tovább
{
$database=''db_ak48'';
$sqlhost=''localhost'';
$sqluser=''ak48'';
$sqlpass=''37Ws8wHH2QdRg'';
$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>'';
mysql_query (''INSERT INTO probatabla (nev, jelszo, email, datum, ip)
VALUES ('$nev', '$jelszo', '$email', '$datum', '$ip')'',
$kapcsolat);
exit();
}
}
?> -
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] -
Zoltán
őstag
Az idézőjelet, mit fölöslegesnek írsz Én is annak tartom, nem is írtam eredetileg oda, de már mindenhogyan próbáltam. Ha egy darab ''g'' (vagy akármi más) nevet adok meg a fenti űrlapon, akkor jól ki is írja, hogy ''g'' és az echo strlen($nev); is ''1'' -et ír ki. Tehát biztos, hogy jó. A HTML űrlapot is kicseréltem az általad javasoltra. A php kódot is egyszerűsítettem, ahogy írtad. De továbbra is ugyanaz a helyzet: Tehát, ha megadom neki konkrétan, hogy ''g'' az amit ellenőrizni kell, hogy van-e, akkor jól megy, de ha ez a ''g'' a $nev változóban van, akkor úgy veszi ellenőrzés után, hogy nincs még ilyen és enged tovább az else ágon. Föl nem foghatom.
-
Zoltán
őstag
Itt egy táblázat, hogy jelenleg mi van az adatbázisban. Jól látszik, hogy van egy raklap ''g'' meg ''f'' nevű user. Bővebben: link
-
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. -
Zoltán
őstag
Pontosan.
MOD: Várjunk csak! Most akkor sem találja meg, ha konkrétam megadom a ''g'' -t!!!! Eddig emlékszem, jól ment, ha csak az ellenőrzést futtattam le , és akkor konkrétam megadtam a ''g''-t. Tehát akkor még ezt az ellenorző részt nem raktam be az ellenorzes.php -ba, így ott magában, nem tudtam változóval kipróbálni. TEhát nem az a gond, hogy változóban van a ''g'', hanem az, hogy beillezstettem ebbe a teljes PHP kódba. Mert önmagában működött, fentebb magyaráztátok el, hogy hogyan kell és jó is volt. Aztán illesztettem be a teljes PHP kódba, tehát az ellenorzes.php -be.
[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] -
Zoltán
őstag
index3.php (ebben van a tábla) forrása: (ebben működik a $lekeres2 !!!!!!)
<?php
$database=''db_ak48'';
$sqlhost=''localhost'';
$sqluser=''ak48'';
$sqlpass=''37Ws8wHH2QdRg'';
$ujtabla = ''CREATE TABLE `probatabla` (''
. '' `id` INT(10) NOT NULL AUTO_INCREMENT, ''
. '' `nev` VARCHAR(8) NOT NULL, ''
. '' `jelszo` VARCHAR(10) NOT NULL, ''
. '' `email` VARCHAR(250) NOT NULL, ''
. '' `datum` VARCHAR(20) NOT NULL, ''
. '' `ip` VARCHAR(250) NOT NULL, ''
. '' PRIMARY KEY (`id`)''
. '' )'';
$nev = ''Belapapa'';
$jelszo = ''rugoka'';
$email = ''berugos@franconmail.hu'';
$datum = ''2004.11.27. - 18:10'';
$ip = ''111.222.333.444'';
$parancs = ''INSERT INTO `probatabla` ''
. ''(`nev`, `jelszo`, `email`, `datum`, `ip`) ''
. ''VALUES ''
. ''('$nev', '$jelszo', '$email', '$datum', '$ip')'';
$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>'';
$nev = ''Belapapa'';
$sorlekerdez = mysql_query(''SELECT * FROM `probatabla` WHERE nev like '$nev' '') or die(''Hiba a lekerdezeskor: ''.mysql_error().''<br>'');
print ''Sikerült lekerdezni az adatokat az adatbazisbol<br>'';
$sorok= mysql_num_rows($sorlekerdez) or die(''Itt a bibi, valami nem jo'');
print ''Sorok szama: ''.$sorok;
$email= ''aaa@fff.pl'';
$sorlekerdez2 = mysql_query(''SELECT * FROM `probatabla` WHERE email like '$email' '') or die(''Hiba a lekerdezeskor: ''.mysql_error().''<br>'');
print ''Sikerült lekerdezni az adatokat az adatbazisbol<br>'';
$sorok2= mysql_num_rows($sorlekerdez2) or die(''Itt a bibi, valami nem jo'');
print '' 'aaa@fff.pl' e-mailek szama: ''.$sorok2;
$ilyennincs=''g'';
$lekeres2 = mysql_query(''SELECT * FROM probatabla
WHERE nev= '$ilyennincs' '');
if (mysql_num_rows($lekeres2) != 0)
{
while ( $row = mysql_fetch_array( $lekeres2 ) )
{
print $row[''nev'';
}
}
else
{
print ''<br>nincs még ilyen név0'';
}
$lekeres = mysql_query( ''SELECT * FROM probatabla
ORDER BY id DESC LIMIT 0,100 '');
while ($egysor = mysql_fetch_array( $lekeres ) )
{
$id=$egysor[id];
$nev=$egysor[nev];
$jelszo=$egysor[jelszo];
$datum=$egysor[datum];
$email=$egysor[email];
$ip=$egysor[ip];
print (''<br><table width=750 cellpadding=4 cellspacing=0
border=1 bordercolor=#000000>
<tr>
<td align=left>'');
print (''
<b>$id</b></td>
<td align=center><b>$nev</td>
<td align=center>
<b>$datum</b></td>
<td align=center>$jelszo</td>
<td align=center>$email</td>
<td align=center>$ip</td>
</tr>'');
}
print ''</table>'';
$ilyennincs=''ilyennincs'';
$lekeres2 = mysql_query(''SELECT * FROM probatabla
WHERE nev= '$ilyennincs' '');
if ($lekeres2 ='''')
{
print (''bocs, ilyen nincs'');
}
mysql_close($kapcsolat);
?> -
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] -
Zoltán
őstag
válasz steveetm #114 üzenetére
Igen, mostmár megvan. CSak azért nem vettem ezt észre, mert eddig jól ment és mikor átraktam abba a progiba, ahol előtte nincs aadatbáziscsatlakozás, akkor egy más változtatás is volt (változó lett megadva konkrét érték helyett) és arra gyanakodtam. Illetve: mi a fenéért nem szól, hogy nem tud ellenőrizni, mert nincs kapcsolat az adatbázissal???!!!!??? Ehelyett miért kell azt csinálni, hogy úgytesz mintha ellenőrzött volna, és annak megfelelően fut tovább az egyik ágon. Ne fusson semerre, ha rossz!!
-
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] -
Edguy
csendes tag
Mi itt a hiba :
<?php
include (''connect.php'');
CREATE TABLE tablaneve - itt van a gond
(
azonosito INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (azonosito),
nev VARCHAR (8),
jelszo VARCHAR (10),
email VARCHAR (250),
datum VARCHAR (20),
ip VARCHAR (250));
?>
Ezt az üzenetet kapom : Parse error: parse error, unexpected T_STRING -
VladimirR
nagyúr
az, hogy a create table nem php, hanem sql utasitas, s mint ilyet, csak a megfelelelo fuggvenyekkel tudod meghivni
<?php
$query = ''CREATE TABLE tablaneve ( ''
. ''azonosito INT NOT NULL AUTO_INCREMENT, ''
. ''PRIMARY KEY (azonosito), ''
. ''nev VARCHAR (8), ''
. ''jelszo VARCHAR (10), ''
. ''email VARCHAR (250), ''
. ''datum VARCHAR (20), ''
. ''ip VARCHAR (250) ''.
. ''); '';
mysql_query($query); // <-- ez fogja majd tenylegesen vegrehalytani a lekerdezest
?>
[Szerkesztve] -
VladimirR
nagyúr
-
VladimirR
nagyúr
<?php
$db = mysql_connect(''localhost'', ''root'', ''jelszo'') OR die (''Connection Error to Server''); // itt kapcsolodsz az adatbazis szerverhez, a localhost, az az, hogy a sajat gepeden van az adatbazis, a root, az a felhasznalo, a jelszo meg a root felhasznalohoz tartozo jelszo -- ezeket az ertekeket csereld le a Nalad hasznalatosokhoz
mysql_select_db(''adatbazis'') OR die(''Connection Error to Database''); // itt valasztod ki, hogy melyik adatbazist kivanod hasznalni
$query = ''CREATE TABLE tablaneve ( ''
. ''azonosito INT NOT NULL AUTO_INCREMENT, ''
. ''PRIMARY KEY (azonosito), ''
. ''nev VARCHAR (8), ''
. ''jelszo VARCHAR (10), ''
. ''email VARCHAR (250), ''
. ''datum VARCHAR (20), ''
. ''ip VARCHAR (250) ''
. ''); ''; // ez a lekerdezes maga, amit vegre kivansz hajtani
mysql_query($query, $db); // ez pedig a lekerdezes vegrehalytasa, a fenti kapcsolaton
?> -
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. -
Zoltán
őstag
A connect-áló függvényt értem, de a function sql_query($query) függvényt nem. Mondjuk mindegy, most nem sürgős. Jelenleg van egy ilyen connect.php filem:
<?php
$database=''db_ak48'';
$sqlhost=''localhost'';
$sqluser=''ak48'';
$sqlpass=''.....'';
$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>'';
?>
és ezt hívom be az akarmi.php file-ban, így:
include (''connect.php''); -
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. -
loszerafin
senior tag
Elvi hiba:
Mi a fenének akarsz php-ból táblát készíteni?
mysql konzollal sokkal egyszerűbb.
Vagy inkább egy szöveges fájlba írd be a táblakészítést, egy másikba a tábla törlést, egy harmadikba a véletlen adatokkal való feltöltést (sql parancsokkal).
Akkor már a php-re csak a látványos munka marad (pl. listázás, módosítás) -
L3zl13
nagyúr
válasz loszerafin #132 üzenetére
Szerencsére a PHPmyadmin készítői nem gondolkodtak ugyanígy...
Aki hülye, haljon meg!
-
Zoltán
őstag
Na, akkor (a fentieknek köszönhetően) van már egy szép kis regisztrációs oldalam. De most a beléptetéssel akadt problémám: Ellenőrzöm, hogy van-e az adatbázisban ilyen név, és azt is, hogy ilyen jelszó van-e, de azt nem tudom ellenőrizni, hogy ezek összetartoznak-e. Hogyan kell?
<?php
$jelszo= $_POST['jelszo';
$nev = $_POST['nev';
include (''connect.php'');
$lekeres1 = mysql_query(''SELECT * FROM probatabla
WHERE nev= '$nev' '');
if (mysql_num_rows($lekeres1) == 0)
{
while ( $row = mysql_fetch_array( $lekeres1 ) )
{
print ''Név/jelszó nem stimmel!'';
}
print ''Név/jelszó nem stimmel!'';
}
else
{
$lekeres2 = mysql_query(''SELECT * FROM probatabla
WHERE jelszo= '$jelszo' '');
if (mysql_num_rows($lekeres2) == 0)
{
while ( $row = mysql_fetch_array( $lekeres2 ) )
{
print ''Rossz a jelszó!'';
}
print ''Rossz a jelszó!'';
}
else
{
header ( ''Location:feltolto.php'' );
exit();
}
}
?>
Én arra gondoltam, hogy így, de nem tudom helyes-e:
$lekeres1 = mysql_query(''SELECT * FROM probatabla
WHERE nev= '$nev' AND jelszo = '$jelszo' '');
if (mysql_num_rows($lekeres1) == 0)
{.......
[Szerkesztve] -
L3zl13
nagyúr
A legszebb megoldás, ha egy lekérdezésben adod meg a két feltételt.
$lekeres1 = mysql_query(''SELECT * FROM probatabla
WHERE nev= '$nev' and jelszo= '$jelszo' '');
Így csak akkor lesz találat, ha a jelszó és a login is egyezik. Neked pedig pont erre van szükséged.Aki hülye, haljon meg!
-
Zoltán
őstag
Oké, a jelszó és felhasználói név birtokában a gyerkőc belépett az adott oldalra. De ugye aki csak egyszerűen begépeli az url-t, az is belépett oda... Egyébként úgy tapasztalom, hogy sok weboldalon nem figyelnek erre. Tehát csak becopypastézom az url-t és nem kell belépben. Ilyen pl. az az oldal is, ahonnan most tanulom a mysql. (Mondjuk itt talán többet tanulok, mint ott...)
-
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] -
VladimirR
nagyúr
olyat lehet csinalni, hogy van egy datetime mezo, de lekerdezeskor csak a honapot es napot mutassa (pl.: 05-25), vagy ezt utolag kell megoldanom, a kapott adatok vagdosgatasaval?
koszonom -
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.
-
Zoltán
őstag
Egy (számomra legalábbis) érdekes probémába botlottam:
Ezt használom regisztrációkor ellenörzésre, hogy van-e már ilyen név:
$lekeres2 = mysql_query(''SELECT * FROM probatabla
WHERE nev= '$nev' '');
if (mysql_num_rows($lekeres2) != 0)
{
while ( $row = mysql_fetch_array( $lekeres2 ) )
{
print ''Van már ilyen név, válassz másikat!'';
}
}
else
.........
Tök jó megy, tehát ha van már ilyen név, akkor kiírja, hogy ''Van már ilyen név, válassz másikat!''.
Ezt meg belépéskor használom, hogy ellenőrizzem, hogy van-e ilyen név+jelszó:
$lekeres = mysql_query(''SELECT * FROM probatabla
WHERE nev= '$nev' and jelszo= '$jelszo' '');
if (mysql_num_rows($lekeres) == 0)
{
while ( $row = mysql_fetch_array( $lekeres ) )
{
print ''Név/jelszó nem stimmel!'';
}
print ''miért ezt írja csak ki?'';
}
else
.....
Tehát szinte ugyanaz a 2 kódrészlet. A poén az, hogy a 2. esetben nem működik rendesen, ugyanis nem azt írja ki, hogy ''Név/jelszó nem stimmel!'', hanem azt, hogy ''miért ezt írja csak ki?''
Ez miért van?
Köszi! -
VladimirR
nagyúr
eloszor is:
a ket kodreszlet kozott az alapveto kulonbseg az, hogy mig az elsonel akkor lepsz be a feltetel igaza agaba, ha nem nulla a sorok szama, mig masodik esetben akkor, ha nulla
igy aztan egy 0 sorbol allo tomb sorain akarsz vegigmenni (ugye ez nem fog megtortenni, ezert nem lepsz be a ciklusba
egyebkent jobb lenni igy, mint azt mar faster is emlitette:
$lekeres2 = mysql_query(''SELECT * FROM probatabla
WHERE nev= '$nev' '');
if (mysql_num_rows($lekeres2) != 0) // ha nem nulla a sorok szama, vagyis van ilyen felhasznalo
{
print ''Van már ilyen név, válassz másikat!'';
}
else
.........
$lekeres = mysql_query(''SELECT * FROM probatabla
WHERE nev= '$nev' and jelszo= '$jelszo' '');
if (mysql_num_rows($lekeres) == 0) // ha nulla a sorok szama, vagyis nincs ilyen felhasznalo
{
print ''Név/jelszó nem stimmel!'';
}
else
..... -
Zoltán
őstag
-
-
L3zl13
nagyúr
Esetleg javasolnám még a select count(*) from probatabla és a mysql_result párost is...
Aki hülye, haljon meg!
-
Edguy
csendes tag
Helló!
Ez mit jelent? Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in -
Edguy
csendes tag
Köszi. Azóta meglett a hiba. De lenne még valami.
A szövegdobozba beírok valamit így:
1
2
3
4
Ezt elmentem az adatbázisba, de mikor kiíratom, már így írja ki : 1 2 3 4 -
Zoltán
őstag
Most ezzel nem boldogulok:
<?php
....
....
.... // innentől nem jó
if ( isset( $jelszo ) && isset( $nev ) )
{
$parancs = ''UPDATE probatabla SET jelszo =
'$jelszo' WHERE
nev=$nev'';
$eredmeny = mysql_query( $parancs );
if ( ! $eredmeny )
die (''Nem sikerült a módosítás: ''
.mysql_error());
print ''<h1>A tábla módosítva, ''.
mysql_affected_rows() .
'' sor változott</h1><p>'';
}
?>
<form action=''<? print $PHP_SELF ?>'' method=''POST''>
<select name=''nev''>
<?
$eredmeny = mysql_query( ''SELECT jelszo, nev
FROM probatabla'' );
while( $egy_sor = mysql_fetch_object( $eredmeny ) )
{
print ''<option> $egy_sor->nev\n''; // ezt írja ki, ebből tudsz választani. Ez kerül a select //name=nev -be.
}
mysql_close( $kapcsolat );
?>
</select>
<input type=''text'' name=''jelszo''>
<input type=''submit'' value=''Frissítés''>
</form>
</body>
</html>
Az lenne a lényeg, hogy a legördülő menüből kiválasztasz egy nevet, és az ahhoz tartozó jelszót tudod módosítani. Ki is választok egy nevet, de hibát ír ki:
Ha mondjuk ''Anna'' nevű felhasználót választom jelszómódosításra, akkor ezt írja ki:
'' Nem sikerült a módosítás: Unknown column 'Anna' in 'where clause' ''
Mit csináltam rosszul?
Szintaktikai hiba nincs, mert lefut. Meg persze előtte csatlakozok is az adatbázishoz.
[Szerkesztve] -
deakgyuri
tag
Légyszi segítsetek nekem az alábbi kódrészletet kidolgozni, elakadtam.
Az a lényege, hogy ebben a táblában max 15-20 sor lesz, de ezeket soronként kellene betenni egy változóba, amit később át tudok adni egy java scriptnek, ami tulajdonképpen megjeleníti az eredményt.
$keres = ''SELECT * FROM apro'';
$eredmeny = mysql_query( $keres, $kapcsolat );
$sorok_szama = mysql_num_rows ( $eredmeny );
$egy_sor = mysql_fetch_array( $eredmeny );
$id=$egy_sor['apro_id'];
$felado=$egy_sor['apro_felado'];
$eleres=$egy_sor''apro_eler'];
$tol=$egy_sor['apro_mettol'];
$ig=$egy_sor['apro_meddig'];
$szoveg=$egy_sor['aprohirdetes'];
$link=$egy_sor['link'];
for ($szamlalo = 0; $szamlalo < $sorok_szama; $szamlalo++)
{
print $sorok_szama[$szamlalo];
}
Nem bagyok egy nagy php-s de szükségem lenne erre, egy oldal fejlesztéséhez.
[Szerkesztve]
[Szerkesztve]
[Szerkesztve][Lehet, hogy igaz ami nem...][Lehet, hogy nem igaz ami igen...][Vagy nem...]
-
VladimirR
nagyúr
válasz deakgyuri #168 üzenetére
$keres = ''SELECT * FROM apro'';
$eredmeny = mysql_query( $keres, $kapcsolat );
$sorok_szama = mysql_num_rows ( $eredmeny );
for ($szamlalo = 0; $szamlalo < $sorok_szama; $szamlalo++) {
$egy_sor = mysql_fetch_assoc( $eredmeny );
print $szamlalo.''. sor: ''
.'' ''.$egy_sor['apro_id']
.'' ''.$egy_sor['apro_felado']
.'' ''.$egy_sor['apro_eler']
.'' ''.$egy_sor['apro_mettol']
.'' ''.$egy_sor['apro_meddig']
.'' ''.$egy_sor['aprohirdetes']
.'' ''.$egy_sor['link'].''\r\n'';
}
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
mas:
#1005 - Can't create table '.\ph_search\users.frm' (errno: 140)
ez mi? csak akkor mondja, ha a users tabla nick mezojet (ami varchar) binary-ra teszem
neztem phpmyadminbol is es konzolbol is, a hiba mindket esetben fennal
mysql 4.0.20
jogokkal nincs baj, root-kent neztem, minden mas mukodik rendesen
elore is ksozonom
[Szerkesztve] -
L3zl13
nagyúr
Ha jól tudom mysqlben magyar karakterekhez latin2 vagy UTF8-as collate-et kéne használni. Melyiket érdemesebb a kettő közül? Van valamelyiknek előnye a másikkal szemben?
Aki hülye, haljon meg!
-
b14
senior tag
válasz VladimirR #169 üzenetére
Ezt a php könyv így írta:
$keres = ''SELECT * FROM apro'';
$eredmeny = mysql_query( $keres, $kapcsolat );
$i=0;
while($egy_sor = mysql_fetch_assoc( $eredmeny ))
{
$i++;
print $szamlalo.''. sor: ''
.'' ''.$egy_sor['apro_id']
.'' ''.$egy_sor['apro_felado']
.'' ''.$egy_sor['apro_eler']
.'' ''.$egy_sor['apro_mettol']
.'' ''.$egy_sor['apro_meddig']
.'' ''.$egy_sor['aprohirdetes']
.'' ''.$egy_sor['link'].''\r\n'';
}
[Szerkesztve]''...de a konfigjából kiindulva, nem hiszem, hogy 40 éves családos ember lenne...'' -- by Slax
-
#57764352
törölt tag
Hali!
Van egy táblában kezdés és vége mezőm, melyek megmondják, hogy meddig lehet elvégezni az adott műveletet.
A táblában a mezők típusa time.
Ebben a Formátumban van tárolva: HH:MM:SS. Nem állítottam a formátumon, semmit, csak így tárolom.
Azt kellene megcsinálnom, hogy a lekérdezés az adott határokon belül van-e?
PHP-ból nyerjem ki az aktuális időt?
Ez a lekérdezés:
$lekerd = ''SELECT * FROM akt_vizsga WHERE (kezdes > '$ido') AND (vege < '$ido') AND (tan_azon = $id)'';
A $ido formátuma: HH:MM:SS.
Ha kiveszem az idő összehasonlítás simán működik. -
VladimirR
nagyúr
hogyan tudnam a mysql 4.1.14 karalkterkeszletet latin2-re allitani?
a my.ini-ben van egy olyan, hogy ''default-character-set=latin2'', viszont a phpmyadmin szerint a ''MySQL karakterkészlet: UTF-8 Unicode (utf8)'', es az őű betuk helyett is mindenutt csak kerdojeleket latok
korabbi mysql-ben latin2 volt alapbol, es valahogy nincs kedvem a parszazezer soros db-t atirogatni
segitsegeteket elore is koszonom
VladimirR -
Szalma
őstag
válasz VladimirR #175 üzenetére
(Ha dump import volt és nem db file másolás, akkor valószínűleg a db és tábla karakterszetek a default utf-8-ra álltak be... Nem bonyolult állítgatni! Itt nézelődj -> Bővebben: link (MySQL doksi. ))
Szeretettel:
Szalma -
VladimirR
nagyúr
nem a db es tabla karakterkeszletevel van a gond, legalabbis azt hiszem (a mysql kapcsolat egyeztetes, a db, a tabla es a szoveges mezok egybevetes erteke mind latin2_hungarian_ci, hanem az mysql szerver karakterkeszletevel, amit viszont egyszeruen nem tudok allitani (ujonnan felvitt adatok is hibasan jelennek meg)
a manual, amit linkeltel (meg mar neztem korabban is ) azt irja, hogy ilyen-olyan kapcsolokkal inditsam a mysql-t, viszont az nem sikerul, mert ekkor a szolgaltatas nem indul el (The MYSQL service could not be started. A system error has occurred. System error 1067 has occurred. The process terminated unexpectedly.), vagy pedig forditsam ujra az egeszet (ehhez viszont sem kedvem, sem forditom, sem hozzaertesem nincs) -
VladimirR
nagyúr
na, ezek phpmyadminbol vannak:
(valtozo, session ertek, globalis ertek)
character set client utf8 latin2
character set connection latin2 latin2
character set database latin2 latin2
character set results utf8 latin2
character set server latin2 latin2
character set system utf8 utf8
character sets dir D:\Programs\Server\mysql\share\charsets/ D:\Programs\Server\mysql\share\charsets/
collation connection latin2_hungarian_ci latin2_general_ci
collation database latin2_general_ci latin2_general_ci
collation server latin2_general_ci latin2_general_ci
illetve mint irtam, a phpmyadmin fooldalan:
MySQL karakterkészlet: UTF-8 Unicode (utf8)
ezeket meg a mysqld sugoja mondja:
character-set-server latin1
character-sets-dir D:\Programs\Server\mysql\share\charsets/
chroot (No default value)
collation-server latin1_swedish_ci
default-character-set latin1
default-collation latin1_swedish_ci
default-time-zone (No default value)
illetve mysqladmin:
character-sets-dir (No default value)
default-character-set (No default value) -
Rici
tag
válasz VladimirR #180 üzenetére
Amit a mysqld súgója ír ki, az valószínűleg távol áll az igazságtól. A phpmyadmin által megadott értékek már jobban néznek ki. Igazából azt kellene tudni, hogy milyen program is akar hozzáférni valójában az adatbázishoz, gondolom egy php alapú site-ról van szó, a phpmyadmin csak karbantartasra van, ha jól gondolom.
Röviden összefoglalom, hogy hogyan is működik ez a karakterkészlet dolog: amikor a szerver eltárol egy sztringet, azt egy bájtsorozatként tárolja el, és a szerver / adatbázis / tábla / oszlop szintjén meg lehet határozni, hogy az eltárolt bájtsorozatot hogyan is kell értelmezni (milyen karakterkódolásban van). De ez igazából csak a mysql szerver számára fontos, hogy pl. hogyan hasonlítsa össze a bájtsorozatokat rendezéskor. Tehát ez a tárolási kódolás, ami pl. a character_set_server vagy a character_set_database változó értéke, ill. a táblákhoz és oszlopokhoz rendelt tárolási kódolást a SHOW CREATE paranccsal lehet megnézni. Ennek a tárolási kódolásnak a kliens felé menő lekérdezések szempontjából sok jelentősége nincs, legfeljebb annyit érdemes tudni, hogy a latin_ kezdetű dolgoknál 256 féle-karaktert lehet tárolni, az ucs2- és utf-8 kódolással pedig a Unicode kódtábla alsó 65536 karakterét.
Amikor a mysql kliens felé jönnek sztringek vagy a kliens küld sztringeket, akkor ugyebár azok is egy bájtsorozat formájában léteznek, és hozzájuk is tartozik egy karakterkódolás, hogy hogyan is kell értelmezni a bájtsorozatot. Itt jön a lényeges, a kliens számára is érdekesebb rész. A kliensnek meg kell mondania, hogy mi is legyen ez a bizonyos kódolás, amivel szeretné a sztringek bájtsorozatát megkapni. A konverziót a szerver automatikusan elvégzi. Elméletileg tehát mindegy, hogy miben van tárolva a sztring, a szerver mindig azzal a kódolással küldi, amivel a kliens kéri. Persze a konverziónál bekerülhetnek kérdőjelek a sztringekbe, mert pl. egy utf8-ban tárolt arab betűt nem lehet egy 256 féle karaktert támogató latin2 karakterkódolással ábrázolni. És persze az ő/ű betűk is ebbe a kategóriába tartozhatnak, ha pl. utf8-ról latin1-re kell konvertálni, de pl. utf8-ról latin2-be már menniük kell. Gyakorlatilag persze nyilván érdemes abban tárolni a sztringeket, amiben le lesz kérdezve, mert akkor nem kell a szervernek állandóan konvertálgatni.
Ezek a kliens oldali dolgok a character_set_client, character_set_connection, és character_set_results változókban vannak tárolva, amiket a megfelelő paranccsal a kliensnek be kell állítania, mert alapból nem számíthat rá, hogy a szerver pont abban küldi, amiben a kliens gondolná.
Általában itt szokott lenni a gond. Pl. ha egy .php oldal iso-8859-2 kódolással küldi az oldalakat a böngésző felé, de az adatbázisból utf8-cal kéri le a sztringeket, akkor ott gáz lesz. (feltéve ha nem használ maga a php karakterkonvertálást az iconv_ vagy a mb_ függvényekkel.)
Tehát a lényeg: a kliensnek kapcsolódás után pl. egy SET CHARACTER SET latin2; és SET NAMES latin2; parancsot kell kiadnia, és akkor már latin2-ben érkeznek a válaszok.
Egyébként ez az egész karakterkódolás téma _nagyon_ összetett, de ha tényleg át akarod látni, akkor nagyon ajánlom, hogy nézz utána, hogy pl. mi is az a Unicode, az utf8 kódolás, a latinX kódolások stb. -
Panther
HÁZIGAZDA
Na, ez még véletlenül nekem is érdekes volt.
Amúgy most én is phpmyadminnal másolgattam be adatokat a DB-mbe, és az ő/ű helyére mindenhol ''?'' került. A vicces azonban az, hogy ha még az adatok elküldése előtt a bemásolt ''ő'' mellé írtam egy ugyanolyan ''ő''-t, akkor a másolt kérdőjellé vált felvitel után, a beírt meg nem. (''ű''-nél a másolt kalapos volt, úgyhogy ott megértem. de az ''ő'' az csont egyformán nézett ki! )[ RIOS Release 5 – multiportal engine by Panther ]
-
Rici
tag
A hullámos ő és rendes ő, illetve kalapos ű és rendes ű általában elég sok galibát tud okozni. A dolog mélyén az van, hogy egyik latin kódtábla sem tartalmazza egyszerre ezeket a karaktereket, a hullámos és kalapos változat a latin1-ben szerepel, a rendes magyar változat meg a latin2-ben. Tehát amíg a feldolgozásban részt vevő összes program nem utf8 vagy ucs2 kódolással dolgozik, addig tuti nem lehet egy szövegen belül a hullámos és rendes magyar változatot is látni, valahová kérdőjelek vagy egyebek fognak kerülni.
Egyébként az lenne a követendő, hogyha a websiteok mind utf8-cal működnének, és az adatbázisokban is utf8-cal vagy kétbájtos (ucs2) karakterkódolással lennének tárolva az adatok, akkor nem lenne probléma a karakterkészletekkel, mert igazából mindig ott jön be a gond, amikor konvertálás történik, és az új karakterkészlet nem tud ábrázolni bizonyos karaktereket. Az utf8 és az ucs2 pedig ''minden'' Unicode karaktert tud ábrázolni, csak mégsem használják, pedig már elég régóta ki lettek találva. -
Italy
csendes tag
Hello-halló!
Lenne egy kérdésem:
Felraktam szépen az appserv-win32-2.5.4a.exe progit a kis XPm re.
Az apache szerver szépen el is indult.
A www könyvtárból szépen meg is jeleníti a phpinfo.php-t.
A bibi az, hogy a mysql-szerverem nem fut. A mysql.exe-filet ha elindítom (/bin-ből) akkor megjelenik egy dos-os ablak, semmi nincs kiírva rá, csippan egyet bezáródik és kész.
Hát így nehéz adatbázist létrehozni.
Ha a mysql_start.exe-t indítom el akkor azt írja, hogy:
''A megadott nevet(MYSQL) a rendszer nem ismeri fel
belső vagy külső parancsként, futtatható programként vagy kötegfájlként''
Segítsetek légyszi, hogy létre tudjak hozni egy adatbázist.
Előre is köszi! -
Tele von Zsinór
őstag
Ha jól értem, akkor nincs telepítve a mysql service. Nézd meg a services.msc futtatásával. Ha nincs, akkor a mysqld.exe-t a -i vagy /i paraméterrel indítva elvileg telepíti neked, és onnantól parancssorba beírt net start mysql és net stop mysql paranccsal tudod vezéreli h menjen-e vagy ne.
-
Italy
csendes tag
Halihó!
Okk. Köszike. Összejött.
Viszont mostmár van egy new probléma.
Szépen gyönyörűen elindítom az én kis mysql-emet. Kijön a dos-os parancssor.
Begépelem, hogy : CREATE DATABASE gfd; -szépen létrehozza.
Aztán CONNECT DATABASE gfd; -csatlakozik gyönyörűen.
Ezután INSERT-tel szépen létre tudm hozni a kis tábláimat.
Kilépek a mysql-ből.
Visszalépek és beírom: CONNECT DATABASE gfd; - és csak a szép kis hibaüzenet jön:
ERROR 2005 <HY000>: Unknow MySQL server host 'gfd' (11001);
No persze olyan is van, hogy létrehozom az adatbázist, majd mikor csatlakozni akarok rögtön ezt mondja nekem (közbe nem léptem ki a DOS-os ablakból).
Lehet, hogy nem csinálok valamit jól?
Sőt...
Megköszönném a segítséget. -
Italy
csendes tag
Ok!
Sorry!
Én voltam a balek.
A CONNECT DATABASE-be A DATABASE nem kell.
Hali! -
faster
nagyúr
Megjelent a Mysql 5.0 stable:
[link] -
Italy
csendes tag
EJJJ!
Ismét összejött egy kérdés:
Call to undefined function mysql_connect()
Nem ismeri ezt a fügvényt?
Mit lehet tenni?
Kérem aki tud segítsen.
Valami biztosnincs jól beállítva.. -
Italy
csendes tag
Fogtam az appserv-et felraktam és semmit sem állítgattam. Mit kellene állítgatnom?
Egyébként a mysql műxik, apache fut, phpinfo()-t le tudom kérni. -
Italy
csendes tag
php.ini-t a windows könyvtárba találtam. Ott viszont nincs benne ilyen sor.
Ilyenek vannak a PHP könyvtárba:
php.ini-dist
php.ini-recommended
Ezeket próbálltam megváltoztatni de semmi. Próbálltam megváltoztatni, átmásolni windows könyvtárba php.ini néven, de ez sem segített. -
Italy
csendes tag
Igen. Megvn. Csak a windows könnytárba még be kellett másolnom a php_mysql.dll-t is.
Mivel amíg nem másoltam be hibát adott ki.
Mostmár egy fokal jobb.
Kösz a segítséget. -
Italy
csendes tag
No még egyet mára aztán kész:
ha valami barátságosabb felületet szeretnék magamnak, nem pedig a jegyzettömböt akkor ismét millió beálítást kell tennem, hogy működjön megint minden?
Valahol láttam egy olyat, hogy a gyerek gombok segítségével illesztette be a különböző függvényeket.
Köszi a választ!
Kellemes hétvégét! -
L3zl13
nagyúr
Nem értem mi köze a webszerver, php, sql beállításoknak a szövegszerkesztő programhoz...
Vannak kimondottan PHP fejlesztői környezetek. Illetve olyan szövegszerkesztők, amelyek csak szinezéssel segítik a programozást, meg pár kissebb segádfunkció.
Előbbire példa a Zend Studio, utóbbira pl az Edit+.Aki hülye, haljon meg!
-
Italy
csendes tag
Csak azért gondoltam, hogy kell millio beállítást csinállni, mivel amit én láttam azon egy kattintás és már lehetett látni, hogy hogy néz ki valójában amit leprogramoztam.
Szerintem nem vagyok hülye. Vagy mégis....? Hm... Na mindeggy. Azért még kicsit maradok az élők sorában
''Amig a körömlakk meg nem szárad, a nő gyakorlatilag teljesen védtelen...'' -
Sikoly
tag
Sziasztok!
Lenne egy viszonylag hatalmas problémám:
Hogy tudnám lementeni az adatbázisomat phpmyadmin nélkül?
Sajnos eléggé lassucska a szerver ahol a honlapom van & így a 8000-9000 vagy annál több sort tartalmazó táblák lementését félbeszakítja a phpmyadmin.
(Hol többet, hol kevesebbet, de teljesen sosem tudja letölteni...)
Létezik erre a problémára vmi orvoslás?
u.i: a fórumban lévő biztonsági mentés opció sem működik!---
Új hozzászólás Aktív témák
- Féltucat régi Samsung kapott új One UI-t, köztük az A52s
- Háztartási gépek
- LEGO klub
- Kínai, és egyéb olcsó órák topikja
- Politika
- Mobilinternet
- Autós topik látogatók beszélgetős, offolós topikja
- Intel Core i5 / i7 / i9 "Alder Lake-Raptor Lake/Refresh" (LGA1700)
- TCL LCD és LED TV-k
- AMD Ryzen 9 / 7 / 5 / 3 5***(X) "Zen 3" (AM4)
- További aktív témák...
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen
Cég: Alpha Laptopszerviz Kft.
Város: Pécs