Új hozzászólás Aktív témák
-
Sk8erPeter
nagyúr
Nem azt mondtam, hogy a PDO "szép", ahogy te értelmezted. Hadd idézzem magam még egyszer: "Ezerszer szebb, mint a régi mysql_query()-s bohóckodások..."
"Pontosan azért, mert igazából nem szebb."
De, szebb. Nem is értem, hogy állíthatod ezt. Hol volt bindolás a sima mysql_query()-s szarakodásnál? Mennyire okádék volt, hogy mindenhol mysql_real_escape_string() hívások voltak, és az objektumorientáltsághoz, kivételek dobálásához köze nem volt? Most hadd ne soroljam fel az érdemi különbségeket a PDO és a sima mysql_* szarokhoz képest, össze sem hasonlítható.
Azért a "pár cuccnál" szerintem kicsit jobban érzékelhető különbség van a mysql_* függvényekhez képest. Gondolom azért mondod mindezt, mert hosszabb távon nem is használtad, így távolról ítéled meg.De senki nem mondta, hogy összevethető egy ORM-mel... Azt írod, az ORM bonyolultabb... nem mondod, tényleg?! Szándékosan magyarázod félre, amiket írok? Arról magyaráztam, hogy az ORM-ben szereplő query-k működhetnek a háttérben a PDO-val, és a kettő egy kicsit sem zárja ki egymást, sőt.
"A pdo az egy wrapper a mysql* függvényekhez"
Ha ez ilyen egyszerű lenne, akkor a PDO nem működne más adatbázisokkal is. Egyébként biztos vagy benne, hogy csak a mysql_* függvények köré írtak wrappert? Úgy emlékszem, hogy a php_mysql.dll NEM kell, hogy engedélyezve legyen ahhoz, hogy a PDO-t zavartalanul lehessen használni a php_pdo_mysql.dll engedélyezésével. De cáfolj meg, ha tévedek. Furcsa lenne, ha szimpla "duplikáció" lenne ilyen tekintetben.[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Brown ügynök #10636 üzenetére
Legegyszerűbb gyorspélda:
$obj = new stdClass();
$obj->values = array();
for($i=0;$i<4;$i++){
$obj->values[$i] = new stdClass();
$obj->values[$i]->name = 'Józsi';
}
echo "{$obj->values[3]->name}";Kimenete: "Józsi".
Szerk.: egyébként sosem láttam értelmét az ilyen nyakatekert kiíratásnak.
Minek idézőjelbe rakni ilyen esetben? Minek szívatnia magát az embernek azzal, hogy csak nehezebb kivenni a kódban, hogy ott mi is van, plusz figyelni kell a string miatt arra is, hogy a kapcsos zárójelek megfelelő helyeken legyenek?
Akkor már egyszerűbb konkatenálni, sprintf()-et használni, vagy bármi hasonlót, ami kissé jobban átlátható, könnyebben módosítható.
Példa konkatenálásra:echo 'Name: '.$obj->values[3]->name;
Szerintem jobb, hogy itt nincs kapcsos zárójel meg körbeölelő idézőjel. A stringet látványban folytonosabbá tenni azzal, hogy beleerőltet az ember ilyen változókat az általad mutatott módon, szerintem önszopatás.[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Brown ügynök #10640 üzenetére
"Visszavonva. A duma nem kell."
Nem azt mondtam, hogy te általában szarul kódolsz, hanem ha már rákérdeztél, gondolom valahonnan szedted ezt a kiíratási módot, és előre felhívtam a figyelmedet, hogy ez egy rossz szokás.
De látom itt egy-két ember úgy érzi, porcelánból van, még szólni sem lehet, hogy valamit nem érdemes alkalmazni, minden nyersen fogalmazott tanácson meg kell ám sértődni és duzzogni, mint egy óvodás.Sk8erPeter
-
Sk8erPeter
nagyúr
válasz CSorBA #10669 üzenetére
Ja, értem, hát az előbbi megfogalmazás ezek szerint kissé félrevitt, azt hittem, neked pont az kell, hogy egyszerűen egy stringből tömb legyen, azt' kész, de ezek szerint bonyolultabb.
Akkor az a jó, amit PazsitZ javasolt (vagy ahhoz hasonló, amit csináltál), jobbat nem tudok.Egyébként meg szabad kérdezni, hogy mihez kell ez? Hátha találunk egyszerűbb megoldást.
[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz trisztan94 #10677 üzenetére
"ha index.php?p_kosar akkor valamit adjon ki."
Ha értéket is adsz neki, úgy van értelme, pl. index.php?p_kosar=543:
$cart_item_id = isset($_GET['p_kosar']) ? $_GET['p_kosar'] : NULL;Így a $cart_item_id változó tartalma 543 lesz.
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz CSorBA #10675 üzenetére
A country-t minek átvinni, ha ott az id, ami hozzá tartozik?
Egyébként országválasztó listáknál a legtöbb esetben kétkarakteres country code-okkal szokták megoldani, mutatok egy példát a Drupal egyik moduljának legenerált listájáról (Location modul):
http://i.imgur.com/0DMbt.png
Bőven elég tehát csak valami egyedi azonosító vagy kód (itt országkód).
A selecthez tartozó name-et meg úgyis eléred, és az ország és a város meg úgyis teljesen különálló selectbe tartozik.[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
-
Sk8erPeter
nagyúr
válasz trisztan94 #10684 üzenetére
Nincs baj ezzel a megoldással, amit alkalmazol, mármint azzal, hogy az URL-ben átpasszolod a teendőt. Soak arra hívta fel a figyelmedet, hogy a felhasználótól jövő adatot minden esetben ellenőrizd, tehát pl. KÖZVETLENÜL SOHA ne töltsd fel adatbázisba az adatot, előtte mindig validáld.
Számolni kell azzal, hogy a felhasználó nem biztos, hogy ember, és hogy a felhasználó nem biztos, hogy jóindulatú. Sőt, eleve feltételezni kell a rosszindulatot, és annak megfelelően kódolni.[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
-
Sk8erPeter
nagyúr
válasz Speeedfire #10689 üzenetére
Pakold zárójelbe a kivonásokat:
$kor18 = Hirdetes::model()->count('szul_nap >= '.($date-18).'-'.date('m-d').' and szul_nap <= '.($date-24).'-'.date('m-d'));
Sk8erPeter
-
Sk8erPeter
nagyúr
-
Sk8erPeter
nagyúr
válasz trisztan94 #10695 üzenetére
Ez egy webfejlesztéssel kapcsolatos OKJ-s tanfolyam? Tehát konkrétan webfejlesztésről szól, 500k-ba került, és nem sikerült elsajátítania az ismerősödnek semmit?
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz trisztan94 #10697 üzenetére
Hát akkor legalább neked jó.
De az elég elkeserítő, hogy valaki úgy szerez OKJ-s képesítést, hogy konkrétan SEMMIT nem tud az egészről, és ezek szerint még az érdeklődés sem volt meg benne, hogy elsajátítsa a dolgokat (legalább magától, ha egy raklap szar a tanári kar). Mondjuk én megértem, ha már 500k-t kiszórt az ablakon, legalább legyen meg a végtermék. De igazából tök felesleges, mert a piacon sajnos nem fog tudni melót találni 0 tudással.
Ha "géphasználat" címén elkértek tőle pénzt, úgy, hogy ő konkrétan a saját laptopját használta, és ő még hajlandó is volt odaadni ezt a pénzt, hát... kicsit jobban a sarkára kellett volna állnia, pl. rájuk kellett volna borítani ilyenért az asztalt (nehogy azt mondd, hogy a nők nem tudnak kibalhézni maguknak dolgokat... ).Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Speeedfire #10703 üzenetére
Ennél még egy fokkal szebben kellene (de ez még így is egy egyszerű megoldás):
lehetne egy tag tábla, egy képeket nyilvántartó tábla, plusz egy összekapcsoló tábla;
tag táblában: tag id, tag neve
kép táblában: kép id, kép elérési útja, stb.
összekapcsoló táblában: tag id, kép id
Ahhoz meg persze megint külön összekapcsoló táblák kellenek, hogy jelezzük, hogy milyen cikkekhez kapcsolódnak a tagek. Hasonló módon mondjuk cikk id, tag id.
Inkább érdemes több táblát létrehozni, hogy szét legyen választva az, ami logika szerint nem feltétlenül kapcsolódik egymáshoz szorosan.Ennek megvan az az előnye, hogy akár több kép is tartozhat egy taghez. Meg így lazább kapcsolatot teremt a kettő között.
Ezenkívül olyan elképzelés is szóba jöhet, hogy minden tagnek van egy "szülője", ami azt jelzi, hogy milyen kategórián belüli tagekről van szó. Ilyenkor a hierarchia nyilvántartásához össze kell kapcsolni az id-kat egy külön táblában (tag id, parent tag id).
Többnyelvűségnél kicsit tovább is érdemes bonyolítani, hogy magát a fordításokat ismét külön táblában tároljuk, és a taghez legfeljebb fordítási "csomópontot" tárolunk (pl. Drupal is így csinálja).=============
(#10702) Soak :
soha ne tárolj vesszővel elválasztott módon különálló kifejezéseket, mert iszonyatosan kényelmetlen lesz módosítani, törölni is, a query-k is lassúak lesznek, plusz nagyon nehéz a táblákban így keresni. Inkább a fentiekhez hasonló megoldást alkalmazz.
A query-k megírásában meg segítünk, ha elakadtál![ Szerkesztve ]
Sk8erPeter
-
-
Sk8erPeter
nagyúr
válasz trisztan94 #10720 üzenetére
Ha ezt nem gyakorlásnak szánod, hanem éles oldalra kéne, akkor semmiképp ne próbálkozz saját megoldásokkal, a chat kialakítása nagyon nem kezdőfeladat. Rengeteg PHP+MySQL+AJAX-alapú, kész megoldás van ilyenre.
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz trisztan94 #10724 üzenetére
Ja hogy gyakorlás céljára lenne, akkor az más.
Chat kialakítása előtt érdemes rendesen megtanulni a formkezelést, validálást, adatok adatbázisba való feltöltését - tehát eddig csak PHP-ról, MySQL-ről beszéltünk, ezek elengedhetetlen alapok. Tudd, hogyan kell megjeleníteni az adatbázisba feltöltött tartalmakat (ne használj mysql_*-jellegű függvényeket, hanem PDO-t; erről Tele von Zsinór kolléga belinkelte korábban az elég tömör, de érthető és hasznos cikkét: [link]), kombináld a lekéréseket, kapcsolj össze táblákat (egyáltalán tudd, mi értelme van a táblakapcsolásoknak), stb.
Aztán kezdd el a JavaScript-alapokat, változtatgasd az oldalon megjelenő tartalmakat, színüket, betűtípusokat, stb., validálj formokat kliensoldalon, és hasonlók; majd jöhet egy hasznos JavaScript-library, mint a jQuery és társai, sajátítsd el ennek a szintaktikáját, és ha ez is megvan, akkor próbáld ki az AJAX-függvényeket (pl. kezdésnek elég jó példa lehet, hogy .load()-dal milyen egyszerű külső fájlokat betölteni, jó a leírás is hozzá), majd ezen keresztül próbálj meg adatbázisba feltölteni, adatbázisból lekérni, stb.Szerintem csak mindezen alapok elsajátítása után van értelme egyáltalán nekikezdeni egy PHP+MySQL+AJAX-alapú csetalkalmazás elkészítésének.
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz trisztan94 #10739 üzenetére
"Lehet Url-be (hogy később $_GET-tel visszakérhető legyen) mást írni, mint ?p=változó?"
Azt írhatsz a címbe, amit csak szeretnél. A $_GET tömbben meg fogod kapni, ha helyesen használod, tehát ?kulcs=érték&másikkulcs=másikérték&harmadikkulcs=harmadikérték formában.
Ha ez a cím:
http://example.com/index.php?kutyafule=123&gyumolcs=alma&azonosito=543&tokmindegy=blablaakkor a $_GET tömb így fog kinézni:
array (
'kutyafule' => '123',
'gyumolcs' => 'alma',
'azonosito' => '543',
'tokmindegy' => 'blabla',
);Tehát a $_GET['kutyafule'] értéke '123' lesz, a $_GET['gyumolcs'] értéke 'alma', és így tovább. Az &-jellel addig bővítheted ezt a címet, amíg a böngésződ vagy a szerver kezelni tudja.
(Arra figyelj, hogy az &-jel HTML-beli megfelelője az & --> ezt kell írni tehát a HTML-kódokba, ha azt szeretnéd, hogy valid legyen validator.w3.org szerint (ez ilyen esetekben érdekes pl.: <a href="/alkonyvtar/index.php?kutyafule=98324&tokmindegy=blabla</a>, így lesz valid); de ha mondjuk PHP-vel átirányítasz egy címre, amiben használod az &-jelet, akkor a simát használd.)
Tehát az általad használt 'p' nem egy mágikus valami, az annyit jelent, hogy valszeg így hívtad meg a címet: http://example.com/index.php?p=ASD, de ez nyugodtan lehetne http://example.com/index.php?page=ASD, és így tovább.Az általad mutatott kódrészletben a feladatokat viszont lehetőleg teljesen válaszd szét, mert tök más a teendő, mégis azonos nevű változókat használsz logikátlanul - pl. a "SELECT `admin` FROM `members` WHERE username='$torolid'", query-ben a $torolid változónévnek semmi értelme, mert ezzel nem törölsz semmit, aztán az ezután lévő UPDATE-ben sem törölsz semmit, tehát a $torolid változónév megint indokolatlan.
Remélem a fenti példa érthető.
====
Biztonság: ahogy Soak is mondta, semmi értelme először rosszul megírni a query-ket, és aztán a kész változatot majd javítgatni, mert csak szopatod magad vele. Tényleg olyan helyeken is bent maradhat, amit már totál elfelejtettél, és akkor majd a felhasználód fogja szidni a zzzanyádat.
Másik, fontosabb szempont: biztonság. Harmadik: ha eleve jól kódolsz, akkor azt is szokod meg. Ha rosszul kódolsz, akkor meg azt.[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
-
Sk8erPeter
nagyúr
válasz Lacces #10753 üzenetére
Jójó, értjük, ne magyarázd agyon.
Tehát a lényeg röviden: minden hirdető júzer, de nem minden júzer hirdető.
Ezért a hirdetőhöz kapcsolódó extra adatokat külön táblában szeretnéd tárolni, hogy ne legyen csupa NULL annál a júzernél, amelyik nem kíván hirdetni. Ez így teljesen érthető és jogos szempont.
De az SQL-topicban elsőre úgy tűnt, mintha a hirdetőt külön állatfajnak tekintenéd a júzertől. De akkor tisztáztuk.[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz DeltaPower #10757 üzenetére
Én sem értem, minek az oda. De szerintem elég jól körbejártuk a témát itt és a másik topicban is, hogy hogyan lehet értelmesen kialakítani a struktúrát.
Az utóbbi mondattal is egyetértek, alapvetően adatbázis-tervezési feladatot nem tudom, minek kell a PHP topicban megbeszélni (miközben abszolúte semmi köze a PHP-hoz).Sk8erPeter
-
Sk8erPeter
nagyúr
válasz trisztan94 #10763 üzenetére
Tele von Zsinór javaslata a jó megoldás, azt használd, utóbbi inkább csak alkalmazkodott a tiédhez (erre DeltaPower fel is hívta a figyelmedet), de alapvetően nagyon rossz megoldás.
Ha van 200 db kilistázott terméked, akkor 200 db eseménykezelőt fogsz definiálni JavaScriptben? Ne már.Sk8erPeter
-
Sk8erPeter
nagyúr
válasz DeltaPower #10765 üzenetére
Igen, abszolúte felesleges ezeket átadni.
Leírást, képlinket, árat átadni GET-paraméterként?
Ha ezek módosításáról van szó, azt meg nem GET-metódussal kéne elintézni, hanem POST-tal. De itt csak megjelenítésről van szó, tehát legfeljebb tényleg csak a termék id-ját kellene átadni GET-paraméterként, meg azt, hogy milyen módon szeretnéd megjeleníteni, erre lehet különböző megjelenítési módokat definiálni. De a többi felesleges.
Főleg, hogy egy termékhez normális webshop esetén több kép is tartozhat.Az viszont megint csak nem jó megoldás, hogy PHP-vel íratod ki a JavaScript-kódot. Ez szemantikai keveredés. JavaScript-kód menjen csak a JavaScript-fájlba. PHP-vel JavaScriptnek legfeljebb beállításokat szabadna átadni, pl. nekem eléggé bejön, ahogy a Drupalnál megoldották, maga a JavaScript-fájlok csatolása, a beállítások átpasszolgatása is moduláris módon történik. [link], [link]
JavaScript Module Pattern: In-DepthSk8erPeter
-
Sk8erPeter
nagyúr
-
Sk8erPeter
nagyúr
Ide felraktam neked egy példát, ami szerintem már elég felhasználóbarát, és amit akár egy az egyben lemásolhatsz, vagy átalakíthatsz igényeid szerint:
jQuery UI Autocomplete - magyar irányítószámok:
http://jsfiddle.net/Sk8erPeter/YCE4Z/embedded/result/Kód:
http://jsfiddle.net/Sk8erPeter/YCE4Z/(HTML-, CSS- és JS-kód szétbontva: http://jsfiddle.net/Sk8erPeter/YCE4Z/3/)
Tehát ilyen formában kell ehhez legenerálni a JSON-kimenetet:
[
{ label: '8128 (Aba)', value: 8128 },
{ label: '8127 (Aba)', value: 8127 },
{ label: '5241 (Abádszalók)', value: 5241 },
..............
];A source-hoz pedig megadhatod a feldolgozó fájlodat is, a jelenlegi változó helyett.
[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz trisztan94 #10790 üzenetére
De ha tudod, hogy így van benne biztonsági rés, akkor már miért nem egyből a mysql_real_escape_string()-gel együtt mutatod neki?
Amúgy még mindig inkább PDO a mysql_× szarakodások helyett.Végre frissítették a php.net-en is:
"Use of this extension is discouraged. Instead, the MySQLi or PDO_MySQL extension should be used."
Ideje volt.Sk8erPeter
-
Sk8erPeter
nagyúr
válasz trisztan94 #10792 üzenetére
Azzal nincs is semmi baj, tartsd is meg ezt a jó szokásodat.
Annyi, hogy a query-det kiegészíthetted volna egy picit:if(isset($_POST['email']){
$email = mysql_real_escape_string($_POST['email']);
// ..........
}és akkor no para.
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Forza_JUVE #10796 üzenetére
Bedobhattál volna még legalább 12 hajlongó jelet, akkor sokkal szívesebben segítenénk!
Na jó, inkább ne tedd.Kezdésként:
- legyen egy "id" nevű, INT típusú, auto_increment mező (tehát A_I legyen bepipálva)
- legyen egy "email" nevű, mondjuk VARCHAR típusú, 255 hosszú mező
- lehetne akár még egy "name" mező is, vagy hasonló, hogy névhez is tudd rendelni... (ha elég a 255 karakter, akkor lehet olyan típus, mint az előző)
aztán mentsd el.[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Forza_JUVE #10798 üzenetére
Az csak akkor érdekes, ha valamelyik mező kihagyható (opcionális).
Ezeket szerintem érdemes kötelezően kitöltendőre hagyni.Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Forza_JUVE #10800 üzenetére
Előbb csatlakozni kell a szerverhez, itt van példa erre az ELAVULT módszerre: mysql_connect(). Majd így választod ki ELAVULT módszerrel az adatbázist: mysql_select_db().
Az isset()-en belülre pakold a query-t.
A query-d viszont rossz. A phpmyadminon belül a táblára kattintva menj az Insert/Beszúrás gombra, adj hozzá egy sort admin-felületen, az beilleszt neked egy sort, és megmutatja a hozzá tartozó query-t. Ebből tudsz így tanulni.
Ezt a query-t másold ki, majd alakítsd át megfelelően.De még mindig inkább használd a PDO-t, inkább ahhoz szokj hozzá.
Kiindulásként Tele von Zsinór kolléga erről szóló rövid cikke: [link].[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
-
Sk8erPeter
nagyúr
válasz SektorFlop #10804 üzenetére
"problémám az hogy így nem működik a linkem:
<a href=page.php?menu=$menu&edit'>Módosítása</a>"
kihagytad a kezdő aposztrófot - aminek igazából szebben idézőjelnek kéne lennie, de ez most a lényeg szempontjából mindegy.Meg érdemes HTML-kódként megadni hivatkozásnál az &-jelet a validitás érdekében, aminek a megfelelője: &
Ezenkívül sztem érdemes inkább a változókat hozzáfűzni a jobb láthatóság érdekében
Szóval próbáld valahogy így:echo '<a href="page.php?menu='.$menu.'&edit">Módosítása</a>';
[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz SektorFlop #10807 üzenetére
Akkor jó. Azt nem írtad le, mi van a $menu-ben, lehet, hogy az is bekavart, franc tudja.
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Peter Kiss #10809 üzenetére
Hányas PHP-vel tesztelted ezt annak idején?
Mert az isset($_GET['edit']) TRUE-t ad vissza pl. PHP 5.3.8-cal, amennyiben így hívod meg az oldalt:
index.php?editGyorsteszt:
<?php
header('Content-Type: text/html; charset=utf-8');
function my_var_export($var, $text = '...', $output_type = TRUE) {
if (gettype($var) === 'string') {
$var = htmlentities($var);
}
return '<p>' . $text . ($output_type ? ' (' . gettype($var) . ')' : '') . ':</p><pre>' . var_export($var, TRUE) . '</pre>';
}
echo my_var_export(isset($_GET['edit']), 'isset($_GET["edit"])');
echo my_var_export($_GET, '$_GET tömb:');az "edit" nélkül:
edittel (index.php?edit):
====
Szerk.: OK, látom módosítottad az álláspontodat.
Amúgy ja, szerintem is érdemes inkább értéket adni neki.
[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Forza_JUVE #10810 üzenetére
Az action attribútumba a feldolgozó fájlod elérési útját írd. Ha üresen hagyod, az is valid, az annyit jelent, hogy akkor ugyanabban a fájlban fog megtörténni a feldolgozás, tehát "önmagára" irányítja át az űrlap (form) feldolgozását.
Igen, a "foo" helyére írd az adatbázisod nevét.
A későbbi kódban viszont az `adatbázis_neve` felesleges, mert már korábban kiválasztottad, melyiket fogod használni. Az akkor lenne érdekes, ha nem választanád ki előtte."de pl. a localhost helyére már nem tudom h mit kéne írnom?!"
Ha a helyi szerveren van az adatbázisszerver is, akkor jó a "localhost". Akkor kell ide explicite kiírnod egy másik szerver IP-címét, ha másik szerveren van az adatbázisszerver.
A hostingcégek nagy részénél a "localhost" a jó beállítás, mert az esetek többségében nem külön van az adatbázisszerver.A kódodban lemaradt egy kapcsos zárójel a végéről (ez: }).
Előszűrőnek jó ez a kódformázó is, kidobja a hibákat:
http://beta.phpformatter.com/A kódod remélhetőleg így már jó lesz - nem teszteltem, csak gyorsan hozzádobtam a lezáró kapcsos zárójelet, plusz a másik változót is ($name):
<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
die('Not connected : ' . mysql_error());
}
$db_selected = mysql_select_db('foo', $link);
if (!$db_selected) {
die('Can\'t use foo : ' . mysql_error());
}
if (isset($_POST['name']) && isset($_POST['email'])) {
$name = mysql_real_escape_string($_POST['name']);
$email = mysql_real_escape_string($_POST['email']);
$mysql = mysql_query("INSERT INTO `tábla_neve` (`id`, `email`, `name`) VALUES (`$email, $name')");
}Remélem, az id meződ auto_increment.
[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Forza_JUVE #10817 üzenetére
Ez melyik tárhely?
Ezek szerint találtál leírást a megfelelő adatokról...A mysql_errno() és mysql_error() segíthet valamennyit a hibafelderítésben.
Az előzőnél legalább kiderült, hogy eleve csatlakozni nem tudott.Ja, és megmutathatnád a teljes formodat, mert lehet, hogy az isset() feltétel nem teljesül, így meg sem próbálja feltölteni az adatot.
(#10818) SektorFlop :
sok ingyenes tárhelynél pont, hogy megfelelő a "localhost", és ez ugyanaz, mint a 127.0.0.1.
"Localhost-ot helyi hálózat esetén szoktuk használni"
... és a localhost még mindig ugyanaz, mint a 127.0.0.1, és igen, "helyinek" minősül a tárhely szempontjából az adatbázisszerver is, ha ugyanott üzemel (pont erről írtam korábban, hogy általában nem választják szét ingyenes tárhelyeknél, de nagyon sokszor a fizetőseknél sem). Csak a mysql_connect a megfelelő portot (default: 3306) használja a kapcsolódáshoz.[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Forza_JUVE #10821 üzenetére
A query lefuttatása után is használd a mysql_error() és mysql_errno() függvényeket, mondjuk ahogy a példákban látható, hogy kiderüljön, van-e hiba. Legalábbis addig hagyd bent, amíg rá nem jövünk.
Meg van ez a rész:
if (isset($_POST['name']) && isset($_POST['email']))
egészítsd ki egy else ággal is:
if (isset($_POST['name']) && isset($_POST['email'])) {
.......
}
else {
// debuggolás erejéig
echo 'blabla';
}Gondolom egyébként ezek a kódok a fantáziadúsan elnevezett php.php fájlban vannak.
Ezt találtam a Freewebes cuccosról:
http://freeweb.hu/informacio/mysql.htmlMySQL beállítások
Az adatbázis-szolgáltatás kizárólag a FreeWeb-en PHP programokkal érhető el.MySQL adatbázis szerver neve: felhasználóinév.sql.freeweb.hu
MySQL felhasználói neved: freewebes felhasználói neved
MySQL adatbázisod neve: freewebes felhasználói neved
MySQL adatbázisod jelszava: adatbázis jelszavadHa régi Freewebes adatbázisod van, akkor:
MySQL adatbázis szerver neve: sql
MySQL felhasználói neved: freewebes felhasználói neved
MySQL adatbázisod neve: freewebes felhasználói neved
MySQL adatbázisod jelszava: generált sql jelszavad<?
mysql_connect("felhasznaloinev.sql.freeweb.hu","felhasznalo","jelszo");
mysql_select_db("felhasznalo");Neked régi vagy új adatbázisod van?
Jó adatbázist választasz ki?Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Forza_JUVE #10825 üzenetére
Akkor nem csináltad meg, amit korábban írtam, hogy legyen auto_increment.
Az id márpedig nem baj, hogy ott van, sőt.Karakterkódolásra: jó az utf8_hungarian_ci, de a dokumentumaid is legyenek UTF-8 kódolásúak BOM nélkül, ezt Notepad++-ban tudod lecsekkolni és konvertálni, meg az elején kiadhatnál egy ilyet, a csatlakozás után: SET NAMES utf8
Szerk.: na, most látom, előttem már írták is pont ugyanezeket.
Csak nem "DOM nélkülire", hanem BOM nélkülire.
A DOM kicsit más.[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Forza_JUVE #10830 üzenetére
Szívesen!
Viszont azért arra figyelj, hogy simán lehet, hogy egy e-mail-címet valamilyen oknál fogva többször is fel akarnak használni, azért egy ilyen keresést még az adatbázisba való feltöltés előtt csinálhatnál. Ha nincs még ilyen, akkor mehet, ha van ilyen, akkor visszadobod, hogy "kösz, de ilyen már van, anyáddal szórakozzá'".Most jövök rá, hogy azt elfelejtettem neked mondani, hogy az id mező ne csak auto increment (automatikusan növekvő) legyen, hanem primary key is! (elsődleges kulcs)
Nem kell megadni a query-ben az id-t ilyen esetben, ha amúgy is auto increment.[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Alex91 #10840 üzenetére
De a kérdésed kb. olyan volt, mintha azt kérdeznéd, hogy "van egy asdkljaew.asdjh nevű fájl a gépemen, ez mi?" Legalábbis a qx.php számomra kb. ennyit mondott.
Érdemben válaszolva a kérdésre:
require_once "qx.php";
Ez a qx.php nevű fájlt kísérli meg include-olni, és ha a fájl nem létezik, vagy más könyvtárban van, akkor annak "Fatal error" a vége. [link]Sk8erPeter
-
Sk8erPeter
nagyúr
"Ha valaki nincs bejelentkezve akkor bizonyos funkciók nyilván nem jelennek meg"
Igen, de attól még az oldal struktúrája nagyjából ugyanaz. Legalábbis ha pl. arra gondolunk, hogy van egy oldalad, és ha be vagy jelentkezve, és admin is vagy, akkor egy adott tartalomnál megjelenik egy "Edit" link a szerkesztéshez...
Szerintem az, hogy teljesen különválasztasz mindent, nem túl praktikus, mert csak nehézkesebbé teszed a kódod kezelését: az esetek többségében van egy csomó tartalom, amit bejelentkezett és "anonim" felhasználónak is szeretnél megmutatni, de a bejelentkezetteknek csak több/más tartalmat adsz, attól még a megjelenés hasonló.
Persze megint másik kérdés, hogy teljesen különálló admin-felületed van, ami nincs "összekötve" az alapvető megjelenéssel, hanem full máshogy néz ki, de akkor meg azt érdemes valami alkönyvtárba rakni (pl. fantáziadúsan /admin), és ott engedni a bejelentkezést, meg minden egyebet.
Mondjuk megint egy szempont: a theme elvileg egy külön "réteg", tehát elvileg a theme-nek akár váltogathatónak is kéne lennie."plusz jobban átláthatóbb, ha nem egy oldalon van minden"
Itt most nem tudom, mire gondoltál pontosan.[ Szerkesztve ]
Sk8erPeter
Új hozzászólás Aktív témák
- G.Skill Trident Z RGB 32GB (4x8) 3600Mhz
- ThinkPad P15s Gen1 27% 15.6" FHD IPS érintő i7-10610U P520 16GB 512GB magyar vbill ujjlolv gar
- Intel I9-9900k
- Ryzen 7 7700X + Sapphire Radeon 6950XT Toxic 16GB + 32GB 6400Mhz RAM + 3TB SSD + minden vízzel hűtve
- Zyxel Zyair G-4100 v2 802.11g vezeték nélküli hot Spot dobozban