Hirdetés

2024. április 26., péntek

Gyorskeresés

Útvonal

Fórumok  »  Szoftverfejlesztés  »  MySQL topic

Hozzászólások

(#51) Zoltán válasza muad_dib (#50) üzenetére


Zoltán
őstag

Hogy futtassam le?

(A php.net/manulal -t már néztem de az nekem még magasnak tűnik. Nem túl szájbarágós, inkább egy dokumentáció.)


[Szerkesztve]

(#52) muad_dib válasza Zoltán (#51) üzenetére


muad_dib
tag

mysql_query(''ide jon minden ami a mysqlnek mondani akarsz, insert, update, select, akarmi'');
azaz
mysql_query($parancs);

a doksi tele van peldaval, ragd at a mysql fuggvenyek reszt, es okos leszel.

Hogyan nősül a hálózati játék fanatikus? - Holtomiglan holtodiglan...

(#53) Zoltán válasza muad_dib (#52) üzenetére


Zoltán
őstag

mysql_query($parancs);
Így is próbáltam ,de továbbra is csak azt írja, hogy sikerült csatlakozni, de azt nem írja ki, hogy mennyi a $sorok.

(#54) muad_dib válasza Zoltán (#53) üzenetére


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 elszurtal

Hogyan nősül a hálózati játék fanatikus? - Holtomiglan holtodiglan...

(#55) Zoltán válasza muad_dib (#54) üzenetére


Zoltán
őstag

Mos tmég be sem jön az oldal, hibár ír az x-edik sorban.

(#56) muad_dib válasza Zoltán (#55) üzenetére


muad_dib
tag

ne legyél pirosarcú user... azzal hogy 'hibát ír' nem mondtál sokat...
jah, mégvalami... nehogy plain text jelszót írjál adatbázisba te!
vagy Password('jelszo') vagy MD5('jelszo')

[Szerkesztve]

Hogyan nősül a hálózati játék fanatikus? - Holtomiglan holtodiglan...

(#57) Zoltán válasza muad_dib (#54) üzenetére


Zoltán
őstag

echo(mysql_error()); : probatabla nem létezik. Mit ronthattam el, hogy nem létezik?

(#58) Zoltán válasza muad_dib (#56) üzenetére


Zoltán
őstag

Tudod, hogy nem írja ki mi a hiba, csak olyasmit, hogy váratlan valami az x- dik sorban. De ebből csak az a hasznos, hogy melyik sorban, ami meg az a sor amit legutóbb javasoltál. De hogy ott mi a gond azt nem írja ki.

(#59) muad_dib válasza Zoltán (#57) üzenetére


muad_dib
tag

hat, irj be egy echo(mysql_error()); -t a creates sor utan, aztan kiderul

Hogyan nősül a hálózati játék fanatikus? - Holtomiglan holtodiglan...

(#60) muad_dib válasza Zoltán (#58) üzenetére


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...

(#61) Zoltán


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. :(

(#62) muad_dib válasza Zoltán (#61) üzenetére


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 nemtom

Hogyan nősül a hálózati játék fanatikus? - Holtomiglan holtodiglan...

(#63) Zoltán válasza muad_dib (#62) üzenetére


Zoltán
őstag

''bocsesz a kimaradasert,'' -ugyan, én örülök, hogy segítesz, amikor tudsz.:R

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é!

(#64) Zoltán válasza muad_dib (#62) üzenetére


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.

(#65) VladimirR válasza Zoltán (#64) üzenetére


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]

(#66) Zoltán válasza VladimirR (#65) üzenetére


Zoltán
őstag

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

:F

(#67) VladimirR válasza Zoltán (#66) üzenetére


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]

(#68) Zoltán válasza VladimirR (#67) üzenetére


Zoltán
őstag

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]

(#69) Zoltán válasza VladimirR (#67) üzenetére


Zoltán
őstag

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!!:R:C:R

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]

(#70) Zoltán


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.

(#71) VladimirR válasza Zoltán (#70) üzenetére


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 :DDD)

(#72) Zoltán válasza VladimirR (#71) üzenetére


Zoltán
őstag

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]

(#73) VladimirR válasza Zoltán (#72) üzenetére


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

(#74) Zoltán válasza VladimirR (#73) üzenetére


Zoltán
őstag

Köszi, most jó. Úgy tűnik, nekem minden összejön most ezekkel a hülye aposztrófokkal. :)

(#75) muad_dib válasza Zoltán (#74) üzenetére


muad_dib
tag

na, orulok hogy megoldododott vegul... nekem kozben volt egy hazautam 7vegen, es el voltam vagva phtol :(

Hogyan nősül a hálózati játék fanatikus? - Holtomiglan holtodiglan...

(#76) Zoltán válasza muad_dib (#75) üzenetére


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...
:B

(#77) muad_dib válasza Zoltán (#76) üzenetére


muad_dib
tag

Nem jarok en se tul gyakran, kb havi eccer, annyi meg kell mert hoborog a csalad :)
egyebkeng gyongyos szitibe

nincs mit :)

Hogyan nősül a hálózati játék fanatikus? - Holtomiglan holtodiglan...

(#78) Zoltán


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?

(#79) Szalma válasza Zoltán (#78) üzenetére


Szalma
őstag

(Tedd unique-á a név mezőt és így egy már létező név esetén nem fog menni az insert, hibát kezelni meg úgyis kell...

mysql_num_rows() megmondja, hogy hány rekord van a select válaszban...)

Szeretettel:
Szalma

(#80) Zoltán válasza Szalma (#79) üzenetére


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!

(#81) Szalma válasza Zoltán (#80) üzenetére


Szalma
őstag

(Ez nem inkább a php topikba kellene..? A query-nem mindig van eredménye, legfeljebb üres. A feltételed mindig igaz lesz. mysql_num_rows() továbbra is a tippem...)

Szeretettel:
Szalma

(#82) VladimirR válasza Zoltán (#80) üzenetére


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]

(#83) L3zl13 válasza Zoltán (#80) üzenetére


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!

(#84) Zoltán válasza VladimirR (#82) üzenetére


Zoltán
őstag

Ezt most nem értem: Ha a mysql_num_rows($lekeres2) = 0 akkor írja ki a $row[''nev]'' -t, egyébként meg ''0''-t? Ne mfordítva kellene? Vagy Én néztem el? Egyébként hova kell a hiányzó ''}'' ?



(#85) VladimirR válasza Zoltán (#84) üzenetére


VladimirR
nagyúr

en neztem be, ode != kell
a hianyzo } pedig kozvetlenul a masik utan kell, mert jelenleg csak a while van lezarva, az if igaz aga nincs

(#86) Szalma válasza Zoltán (#84) üzenetére


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]

(#87) VladimirR válasza Szalma (#86) üzenetére


VladimirR
nagyúr

lehet, hogy lassabban gepelsz, de nezd a jo oldalat: Toletek (Ti, faster, L3zl13) tanultam :)

(#88) Zoltán válasza VladimirR (#85) üzenetére


Zoltán
őstag

Köszi!

(#89) Zoltán válasza Szalma (#86) üzenetére


Zoltán
őstag

Egyelőre notepad. Esetleg Kwrite. :)

(#90) Zoltán válasza L3zl13 (#83) üzenetére


Zoltán
őstag

Aha. Köszi.

(#91) Zoltán válasza VladimirR (#82) üzenetére


Zoltán
őstag

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ó :O ?

(#92) VladimirR válasza Zoltán (#91) üzenetére


VladimirR
nagyúr

figyelj mar, en baromsagokat irok, ne hallgass ram
meg sem neztem, hogy mit kopizok ki a manialbol, szoval megegyszer
a while ciklust csereld le erre:
while ( $row = fetch_assoc( $lekeres2 ) ) {
   print $row[ ''nev'' ];
}

(#93) Zoltán válasza VladimirR (#92) üzenetére


Zoltán
őstag

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]

(#94) Zoltán


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?

(#95) Szalma válasza Zoltán (#94) üzenetére


Szalma
őstag

(Trimmeled az input-ot..? Mit ad be VALÓJÁBAN a felhasználó?)

Szeretettel:
Szalma

(#96) Zoltán válasza Szalma (#95) üzenetére


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>


(#97) faster válasza Zoltán (#96) üzenetére


faster
nagyúr

Hát írasd ki a $nev változót, hogy mi van benne. Hibakeresés első lépése... :U

Ezt a HTML-t meg nagyon takarítsd ki, mert borzasztóan néz ki, szerintem az action és a target attribútum összefolyt.

[Szerkesztve]

(#98) Zoltán válasza faster (#97) üzenetére


Zoltán
őstag

Kiirattam, az van benne, aminek kell, tehát az űrlapon megadott név.

De a html űrlap jó, eddig jól ment. Lehet vele regisztrálni az adatbázisba. (kirajzoltatom a táblát, akkor benne van) Hogyan csináljam, hogy ne csússzon össze a target és az action?

[Szerkesztve]

(#99) Zoltán


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();
}
}
?>

(#100) Szalma válasza Zoltán (#98) üzenetére


Szalma
őstag

(Írasd ki <PRE> tagok, és szögletes zárójelek között. Tuti nincs benne space, soremelés, stb..? Kisnagybetű?)

Szeretettel:
Szalma

Útvonal

Fórumok  »  Szoftverfejlesztés  »  MySQL topic
Copyright © 2000-2024 PROHARDVER Informatikai Kft.