- iGO Primo
- Android alkalmazások - szoftver kibeszélő topik
- Samsung Galaxy S23 Ultra - non plus ultra
- Android szakmai topik
- Magisk
- Mobil flották
- Motorola Edge 50 Neo - az egyensúly gyengesége
- Samsung Galaxy A54 - türelemjáték
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
- Redmi Note 9 Pro [joyeuse]
Új hozzászólás Aktív témák
-
biker
nagyúr
válasz
Speeedfire #9550 üzenetére
echo $name
??? -
vakondka
őstag
válasz
Speeedfire #9545 üzenetére
jójó https, de kicsit konkrétabban...
-
Lacces
őstag
válasz
Speeedfire #9532 üzenetére
igen
-
válasz
Speeedfire #9511 üzenetére
Én arra gondolnék, hogy a levél küldő résznél van rosszul beállítva a header
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9500 üzenetére
Pedig az előbb írtam le, hogy miért nem jó...
Utána még konkrét példával is magyaráztam, mi lenne az optimális megoldás, és miért is szebb.A dbForge Studio-val egyébként a táblaösszekapcsolásokat nagyon egyszerű megcsinálni, legenerálja neked a query-t. Ha épp nincs kedvem/agyam gondolkodni, hogy pontosan hogyan is kell megírni a query-t ahhoz, hogy a megfelelő táblákat összekapcsoljam, vagy csak időt akarok spórolni, akkor előveszem ezt a progit, és kényelmesen összekattintgatom vele, amit akarok.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9497 üzenetére
Legfeljebb annyiban "egyszerűbb", hogy ha ránézel phpMyAdminban a tábla adott sorára, akkor egyből láthatod, milyen tagek tartoznak az adott id-hoz...
Amúgy viszont gáz megoldás.
A megfelelő táblastruktúrát és query-t viszont csak egyszer kell jól megírni, de az sem túl sok idő, ha elsőre nem látod át, le kell rajzolni magadnak egy papírra, hogy hogy is néz ki, és akkor máris érthetőbb lesz, az alapján a query-t megírni is könnyebb. De tényleg, ha olykor nem megy "fejből" vagy monitoron nézegetve a dolgokat, akkor elő kell venni egy papírt, és írogatni-rajzolgatni, nem szégyen az, sokszor gyorsabban eljutsz a megoldáshoz.Attól még, mert két lehetséges megoldásból mindkettő működik, nem biztos, hogy mindkettő jó is.
===
(#9498) Jim-Y : most előbb írtam egy leegyszerűsített példát arra az esetre, ha egyből úgy szeretnéd megjeleníteni a divet betöltéskor, hogy el legyen rejtve vagy sem. Abból nem tudom, mi nem volt világos (nem mondtad, hogy azt értetted-e vagy sem, ha nem, akkor mit nem).
Ha meg már azután szeretnél változtatni a megjelenítésen, miután az oldal betöltődött, akkor marad a kliensoldali programozás (JS-sel eltünteted/megjeleníted, ha ehhez szükséged van szerveroldali változó értékére, akkor AJAX-ozol egyet), vagy az oldal újrafrissítésével történő megoldás. -
Sk8erPeter
nagyúr
válasz
Speeedfire #9489 üzenetére
Na, látom Tele von Zsinór közben megírta a választ, nagyon jól és tömören leírta. Hát az eléggé gány lenne, ha az adott bejegyzéshez tartozó tageket mindenhol összecseszve egy stringbe tárolnánk el...
Ez a módszer nagyon sok szempontból rossz, de legfőképpen azért, mert így nem lehet normálisan és optimálisan keresgélni az adatok közt (ami itt most épp a taglista), pedig az adatbázis ezt lehetővé tenné.Csak példaként nézd meg a Drupal 7 működését (de más példát is lehetne említeni), ott már a core is támogatja az Article content type-hoz tagek eltárolását - a `taxonomy_term_data` táblában vannak tárolva a konkrét tagek, azonosítóval, névvel, egyebekkel ellátva (tehát egy tag egy Taxonomy Term), a `taxonomy_index` táblában pedig az azonosítók összekapcsolása van, ahogy illik: egy node azonosítóját összekapcsolja egy taxonomy term (jelen esetben egy tag) azonosítójával, így lehet tudni, hogy az az adott node-hoz tartozik.
A `taxonomy_vocabulary` pedig a szótárakat gyűjti, van pl. egy Tags nevű "szótár", ebbe tartozik az összes tag, még ennek az azonosítójával is össze van kapcsolva.
Így aztán nagyon rugalmasan lehet keresgélni a tagek között.Ez így jól is van megoldva - inkább szülessen több bejegyzés néhány adattáblában, mint hogy rossz megoldásokat alkalmazzunk.
(#9493) : akkor ideje megbarátkozni velük.
===========
(#9490) Jim-Y : ezzel az a nagy baj, hogy adott esetben túl sokáig tarthat a keresés, és normálisan szűrni köztük csak gányolással lehet.
-
Tele von Zsinór
őstag
válasz
Speeedfire #9489 üzenetére
Egy darab Blog tábla, egy darab Tag tábla, és egy BlogTag tábla, aminek összesen két mezője van: blog_id és tag_id, a kettő együtt a primary key.
Ez a szokásos many-to-many megoldás.
-
biker
nagyúr
válasz
Speeedfire #9455 üzenetére
Tulbonyolitod es hibas is
Darab[I]???? Talan darab [$i]
de meginkabb darab[$pizzaid] ha a $pizzaid valtozoba betolom a querybol a pizzaid erteket, es akkor nem kell torjem a fejem, hogy a kerdoiv kuldes utan a tombb 2. es 4. Eleme mi a franc volt?
Nem???Es pl nem hianyzik egy $i++ a while ciklusbol?
-
negyedes
addikt
válasz
Speeedfire #9455 üzenetére
Ertem, en ugy gondoltam hogy feltoli teljsen es csak ott lesz 1 ahol becsekkolta. Ez a hidden mezo jo otlet. reggel neki is allok. Koszonom szepen.
-
negyedes
addikt
válasz
Speeedfire #9453 üzenetére
igen megyen, most mar csak az a kerdes,hogy ha 4 elemem van es a 2. es 4. checkoltam be miert rakja a 0 es 1-es elemnek? Vagy ez igy van jol?
-
biker
nagyúr
válasz
Speeedfire #9447 üzenetére
A checkboxokat meg tombbe kellene tenni es value-t adni nekik
-
biker
nagyúr
válasz
Speeedfire #9447 üzenetére
Hogy ne lenne hiba?
Lehet egy formban tobb azonos nevo beviteli mezo?
Itt ciklusban ir ki egyforma darab nevu texteket -
negyedes
addikt
válasz
Speeedfire #9445 üzenetére
koszonom.
igy mar elorebb jutottam. nem kap semmilyen erteket a formtol.
Ez nem megy: <input type="text" size="2" name="darab" >
-
negyedes
addikt
válasz
Speeedfire #9443 üzenetére
Egyiket sem.
most mar nem ertem mi a baja. bovitettem az adatbazist,most mar semmit nem add vissza. csak feher minden.
-
negyedes
addikt
válasz
Speeedfire #9440 üzenetére
Be van lepve, ha nincs akkor visszadobb egy szoveget h jelentkezz be,az mukodik azert nem masoltam be.
Atirtam,igy mar megy,de csak a masodik ertekre. az elsot nem adja vissza.
-
negyedes
addikt
válasz
Speeedfire #9437 üzenetére
user oldal:
<form method="post" action="rendeles_script.php" id="rendeles">
<table width="500" border="0" align="center" id="pizzak">
<tr>
<td>#</td>
<td >Pizza neve</td>
<td >Leírás</td>
<td >Ár</td>
<td >Mennyit</td>
<td >Megrendelem</td>
</tr>
<?
$parancs = "SELECT * FROM arlista";
$eredmeny = mysql_query($parancs);
while ($pizzalista = mysql_fetch_array($eredmeny)) {
?>
<tr>
<td><?= $pizzalista["pizzaid"] ?></td>
<td><?= $pizzalista["pizzanev"] ?></td>
<td><?= $pizzalista["leiras"] ?></td>
<td><?= $pizzalista["ar"] ?></td>
<td>
<input type="text" size="2" id="darab" name="darab">
</td>
<td>
<input type="checkbox" name="rendeles" id="kivalaszt"/>
</td>
</tr>
<?
}
?>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td>
<input type="submit" name="Submit" value="Megrendelem">
</td>
</tr>
</table>
</form>feldolgozo kod(reszlet):
$rendeles = "SELECT * FROM felhasznalo";
$eredmeny = mysql_query($rendeles);
$user = mysql_fetch_array($eredmeny);
if(isset($_SESSION["valid_user"]) and $_SESSION["valid_user"] == true && $user['email'] == $_SESSION['user'] && $user['jelszo'] == $_SESSION['pass']) {
if (isset($_GET['darab'])) {echo $_GET['darab'];}
} -
Jim-Y
veterán
válasz
Speeedfire #9437 üzenetére
$sql = "SELECT description,images FROM wimyn_db.offers WHERE offer_id='$get'";
$res = mysql_query($sql);
$rows = mysql_num_rows($res);
if(!empty($rows)){
$row = mysql_fetch_array($res);
foreach($row as &$result){
echo $result['description'];
}erről van szó, az a baj, hogy erre írtam az előző hsz-emben lévő kimenetet. PHPMyAdmin meg bugos szar, már elnézést, de nem tudom átállítani , hogy az oszlop ne text, hanem varchar legyen
MOD: összejött, ezzel:
$get = mysql_real_escape_string($_POST['get']);
$sql = "SELECT description,images FROM wimyn_db.offers WHERE offer_id='$get'";
$res = mysql_query($sql);
$rows = mysql_num_rows($res);
while($result = mysql_fetch_assoc($res)) {
echo $result['description'].$result['images']; //ekkor kiírja az aktuális tömb elso elemét
} -
negyedes
addikt
válasz
Speeedfire #9434 üzenetére
Mar atraktam egy forma az osszeset(az egesz tabla egy form most mar) de igy is csak egy ures oldalt dob vissze nem irja ki a mezo erteket.
-
negyedes
addikt
válasz
Speeedfire #9432 üzenetére
igy van beallitva a megrendelem gomb, de a masik ket formban(a text mezo es a checkbox) mit kell irni methodhoz?
-
negyedes
addikt
válasz
Speeedfire #9428 üzenetére
Koszi a valaszt,de nem megy. Nem irja ki az erteket amit kapott.
-
Jim-Y
veterán
válasz
Speeedfire #9428 üzenetére
Köszi, a metodika jó lesz, még azt kéne kitalálnom, hogy adatbázisban milyen módon tároljam, majd milyen módon nyerjem ki a rangekeket, de az már az én gondom, köszi.
-
válasz
Speeedfire #9409 üzenetére
HMVC kell nekem közbe rájöttem!
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9399 üzenetére
Ja, hát az a normális. Alapból egy ilyen keretrendszer el kellene, hogy nyomja az ilyen hibaüzeneteket, vagy legalábbis kellene, hogy legyen egy admin-felület, ahol van fejlesztői mód meg éles mód beállítására lehetőség.
(#9400) Jim-Y : akkor minek használod, ha szar, és ha nem muszáj?
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9397 üzenetére
"Jobb lenne, ha nem jelezne ki semmit sem?"
Igen, éles oldalon jobb lenne, ha nem jelezne ki semmit sem, hanem naplózva lenne mindenféle hiba... -
Peter Kiss
őstag
válasz
Speeedfire #9378 üzenetére
P3P header, illetve a megfelelő ponton el kell intézni pl. iframe-mel, hogy átküldje a sütihez a megfelelő adatokat a 2. ... X. oldalnak. Persze mindezt csak akkor, ha egy helyről fut minden.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9378 üzenetére
Ja, hogy te azt alapnak vetted, hogy ha elso.example.com-on indítasz egy sessiont, beállítasz néhány session változót, átirányítasz elso.example.com-ról masodik.example.com-ra, akkor masodik.example.com látni fogja az elso.example.com oldalon beállított session változókat, vagy mi?
Ez milyen biztonsági rés lenne?
Már a feltételezést sem értem. -
Sk8erPeter
nagyúr
válasz
Speeedfire #9375 üzenetére
A Yii nem valami generált hash alapján azonosítja az "aktív" sessiont?
Itt írtam le Drupallal kapcsolatban, hogy valaki hogyan tudja elérni a Drupal által indított sessiont saját kódból, a Drupal "irányításán kívül": [link]. A Drupal itt látható, hogy generálja a hash-t a session_name-hez: [link]. Többek közt a $cookie_domain változó alapján.Nem nagyon látom át a problémádat, de nem lehet egy ilyenhez hasonló forrása a dolognak?
-
Peter Kiss
őstag
válasz
Speeedfire #9373 üzenetére
Nézd meg a redirect() definícióát, szerintem ilyenkor nem fut le a session mentése. Ha OO session saver van, akkor el szokták felejteni beregisztrálni shutdown function-nek a session mentését (esetleg a session-t mentő objektum __destruct()-jába).
-
Coyot
őstag
válasz
Speeedfire #9371 üzenetére
hova redirectelsz?
-
whited
addikt
válasz
Speeedfire #9336 üzenetére
2 van?
jólvan, befejezzük, csak mutassátok a 2. trailert
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9336 üzenetére
- Mila Kunis jóféle
- De nem ám.
Ember legyen a talpán, aki ezt érti. -
whited
addikt
válasz
Speeedfire #9331 üzenetére
a személyisége te tudatlan
ez egyememóerpégé
ui: hát ezen behaltam, jelenjen már meg
-
Dave-11
tag
válasz
Speeedfire #9331 üzenetére
ÚÚúúúh jóisten
Köszi hogy dobtál egy ilyen linket, komolyan ezt a filmet nem lehet kihagyni
Csak az intrón szarrá röhögtem magam
Köszi -
Sk8erPeter
nagyúr
válasz
Speeedfire #9324 üzenetére
Nálam meg másnapos vasárnap van, úgyhogy eltartott egy darabig, amíg felfogtam ezt a regexpet.
Amúgy ez referenciának elég jó komment: [link]. Mondjuk nem minden modifier van benne, amit itt használsz ebben a példában. Az nekem kicsit fura, hogy ha nem illeszkedik a regexpre, akkor üres stringet adsz vissza, de végül is lehet, hogy ezzel ki lehet szűrni, ha mondjuk más típusú változót adsz át a fv.-nek, nem stringet, bár akkor nem vágom, miért nem futtat arra egy korábbi ellenőrzést. -
Sk8erPeter
nagyúr
válasz
Speeedfire #9322 üzenetére
Ha nem fájlnevek levágására fogod használni, akkor miért az a változó neve, hogy $filename, és az $ext változóba miért láthatóan fájlnév-kiterjesztést szeretnél belerakni?
De ami fontosabb: ha ezt pl. címek és ehhez hasonlók levágására akarod alkalmazni, akkor jó szarul fog működni, ahogy a címed akár egy pontot is fog tartalmazni...
Hadd mondjak gyorsan egy példát:Itt a címed:
$myTitle = 'L.orem ipsum dolor sit amet, consectetur adipiscing elit Maecenas nec odio eget magna malesuada vestibulum nec ut nunc';
echo levag($myTitle);Eredménye:
'L....orem ipsum dolor sit amet, consectetur adipiscing elit Maecenas nec odio eget magna malesuada vestibulum nec ut nunc'Biztos, hogy te ezt akartad? Nem hiszem.
Szerk.: egyébként gyorsan hozzáteszem, pontosan a fenti miatt fájlnevek levágására sem biztonságos ez a módszer, mivel semmi nem garantálja, hogy a kiterjesztés mondjuk ne legyen olyan hosszú, mint a fenti példában az "L." utáni rész - már ha előtte a megfelelő PHP-s fájlellenőrizgető függvényeken nem futtattad át, és ellenőrizted inkább azokkal a fájlnév-kiterjesztést.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9320 üzenetére
Akkor jó.
Amúgy fájlneveknél szerintem elég hülyén mutat a három pont a végén, ott inkább simán vágd le a megfelelő karakterhossznál, majd ellenőrizd, olyan néven nem létezik-e már ugyanilyen fájl, ha igen, akkor tegyél mögé egy alsóvonás+inkrementálódó indexet, azt' kész. -
Sk8erPeter
nagyúr
válasz
Speeedfire #9318 üzenetére
A függvényedet nem fejezted be, nincs vége, nem látni, aztán mivel térsz vissza.
Itt először a $filename-be beleteszed a kiterjesztés nélküli változatot, de aztán sehol nem vágod le ezt a részt. Gondolom úgy szeretnéd, hogy a kiterjesztés nélküli változatot levágod, aztán hozzápakolod az eredeti kiterjesztést.
Szóval a végén kéne még egy ilyen:
return ( mb_substr($filename, 0, $maxLength, 'UTF-8').$ext );Ha alapnak vesszük az UTF-8 karakterkódolást, akkor nagyon nem árt, ha odateszed, hogy stimmeljen a hossza, lásd ezt itt. (Tehát esetleg a $filename változóba belerakáshoz is oda kéne tenni.)
-
Siriusb
veterán
válasz
Speeedfire #9308 üzenetére
A Komodo Edit is ingyenes.
Komodo IDE, ami fizetős. -
Sk8erPeter
nagyúr
válasz
Speeedfire #9288 üzenetére
Ja jó, akkor biztos az én felfogásom nehézkes...
-
válasz
Speeedfire #9288 üzenetére
Én sem téged soha
-
PazsitZ
addikt
válasz
Speeedfire #9254 üzenetére
Hozzárendeled egy könyvtárhoz a létező üres repo-t.
Bemásolod, add-olod, majd commit-olod a fájlokat. -
Speeedfire
félisten
válasz
Speeedfire #9254 üzenetére
Hopp-hopp, importra most elkezdett dolgozni.
-
Brown ügynök
senior tag
válasz
Speeedfire #9236 üzenetére
Na szóval, lehet nem voltam elég világos.
$route["controller"]; //Osztály neve, pl.: IndexController
$route["action"]; // Eljárásának neve, pl.: IndexAction()Ha meg akarom hívni a $route["action"] értékében meghatározott osztály eljárását (
), akkor ez történik:
c->$route["action"];
IndexController::$indexAction()
de ezt szeretném:
IndexController->indexAction()
-
válasz
Speeedfire #9236 üzenetére
Szerintem csak egy értéket tartalmaz a tömb. Gondolom az a gond, hogy változóként hívná a függvényt és nem így. Hanemnemértem.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9231 üzenetére
Ezek a PHP-ben alapból meglévő, előre definiált konstansok, neked semmit nem kell megírnod, erről beszéltem eddig is, nem véletlenül linkeltem be a php.net-es példákat tartalmazó kommentet is...
Szerk.:
de ha nem hiszed, akkor próbáld ki ezt egy tesztoldalon:<?php
function my_var_export($stuff, $text = '...'){
return '<p>'.$text.':</p><pre>'.var_export($stuff, TRUE).'</pre>';
}
echo my_var_export(IMAGETYPE_GIF, 'gif');
echo my_var_export(IMAGETYPE_JPEG, 'jpeg');
echo my_var_export(IMAGETYPE_PNG, 'png');
echo my_var_export(IMAGETYPE_BMP, 'bmp');Mivel PHP-s konstansokat használnál fel, így a kódod hordozható is lenne...
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9228 üzenetére
Ja értem, és azt a 4 számot lecserélni a fentebb felsorolt teljesen egyértelmű konstansokra biztos rohadt nagy meló...
De ha szereted a misztikus kódokat, úgy minden más.....
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9225 üzenetére
Ja, vágom, hogy a getimagesize visszaadott tömbjének 2. indexe IMAGETYPE_XXX konstanst ad vissza, ami egy szám.
Éppen ezért jobban járnál, ha a semmitmondó számok helyett egy kicsit egyértelműbb jelzést használnál:switch($type){
case '6': $img = imagecreatefromwbmp($src); break;
case '1': $img = imagecreatefromgif($src); break;
case '2': $img = imagecreatefromjpeg($src); break;
case '3': $img = imagecreatefrompng($src); break;
default : return "Unsupported picture type!";
}HELYETT:
switch($type){
case IMAGETYPE_BMP: $img = imagecreatefromwbmp($src); break;
case IMAGETYPE_GIF: $img = imagecreatefromgif($src); break;
case IMAGETYPE_JPEG: $img = imagecreatefromjpeg($src); break;
case IMAGETYPE_PNG: $img = imagecreatefrompng($src); break;
default : return "Unsupported picture type!";
}Szerk.:
itt láthatsz jó hosszú listát ezekről a konstansokról: [link]. -
Sk8erPeter
nagyúr
válasz
Speeedfire #9223 üzenetére
"Annyi, hogy a tmp fájl máshogy declarálja a dolgokat, ott kicsit máshogy van."
Hát ez most nagyon sejtelmes válasz volt.Pont a konkrétumokra lettem volna kíváncsi, hogy mit kellett változtatni...
"A type-ot írtam át és illetve az array-ből adtam meg neki a magasságot és a szélességet."
Mit írtál át a type-on?
Milyen array-ből? -
Sk8erPeter
nagyúr
válasz
Speeedfire #9221 üzenetére
Elfelejtetted bekapcsolni a PHP-s szintaktika-kiemelést.
Konkrétan mit írtál át? Most nincs időm áttanulmányozni az egész kódodat. -
Sk8erPeter
nagyúr
válasz
Speeedfire #9219 üzenetére
[link] ?
-
Tele von Zsinór
őstag
válasz
Speeedfire #9213 üzenetére
Objektumokat referenciaként passzolgat ide-oda a php. Neked a klónozás kell:
$this->valami = clone $this->megvalami;
-
válasz
Speeedfire #9209 üzenetére
Te se érted de nem baj. Az index.php elejére bökik, ami <?php így kezdődik mint minden php fájl. Ja hogy még semmit se csinált! Mellesleg pontosan jól tudom mikor küldi el a fejlécet és az objektum példánya után sokkal
-
válasz
Speeedfire #9206 üzenetére
Én meg írtam, hogy az index.php első sorára hivatkozik. (Szerintem idáig én is eljutottam
)
-
Tele von Zsinór
őstag
válasz
Speeedfire #9192 üzenetére
Redirectelsz -> új request a böngésző felől -> teljesen új objektum, nem létezik az előbbi már, ahova mentettél.
Megoldás lehet, ha sessionben tárolod, de itt potenciálisan sok adatról beszélünk, azaz lassú lesz. Miért akarod két actionbe szétválasztani? Szerintem a keresés és az eredmények megjelenítése összetartozik.
mobal: még php4-es időkből származó konvenció a mai private és protected tulajdonságok, függvények jelölésére. Sokan használják ma, php5-ben is.
-
válasz
Speeedfire #9200 üzenetére
Passz. Nem tudom mit művel a kereső metódusod, ennek mennie kéne.
-
válasz
Speeedfire #9198 üzenetére
Nincs két $model változód véletlenül?
-
válasz
Speeedfire #9196 üzenetére
Simán kiíratod jó? Hogyan hívod meg?
-
válasz
Speeedfire #9194 üzenetére
Akkor meg nem értem mit szeretnél, fuss neki még1x.
-
válasz
Speeedfire #9192 üzenetére
Nem nagyon értelek. Nem csinálsz semmit. Az új kontrollered konstruktorába akarod átadni az eredményeket?
Ezzel: $model = $this->kereso azt csinálod, hogy al $model változód értékét egynelővé teszed a $this->kereso értékével.
Többiek: ez $_változó pontosan mit takar. Mit jelent a változó elején ez _?
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9189 üzenetére
A linkelt példában csak CURDATE() van, ami ilyen:
2012-04-08Ha aznap meg van mondjuk 1000 ugyanilyen lekérés, ami ezt a dátumot tartalmazná, akkor miért is ne cache-ből kotorja elő. A CURDATE() nem sokszor változik egy nap...
Igen, nálad bőven lehetnek variációk, meg gondolom nem töltik ki olyan durván sokszor azt a formot, szóval én nagyjából itt leszarnám a query cache-t, és épp ezért alkalmaznám a korábban mutatott módszert.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9187 üzenetére
Query cache, nézd meg az első tippet:
[Nettuts+: Top 20+ MySQL Best Practices] -
Sk8erPeter
nagyúr
válasz
Speeedfire #9185 üzenetére
Számomra egyből átlátható a query-s változat, főleg ez az INTERVAL 60 YEAR és hasonló megoldások igazából az ember pofájába vágják, hogy igazából itt mi is történik.
Ilyesmire én inkább ezt preferálom, még ha a query cache szempontjából valaki máglyán is akarna látni emiatt.Mindenesetre az tény, hogy a PHP-vel sztringként összeállítós megoldás ránézésre ocsmányabb.
Meg nekem kevésbé átlátható.
De az tény, hogy a tiéd nyert, mert 0.0001 másodperccel gyorsabban futott le.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9180 üzenetére
where bday >= '1982-08-17' and bday<='1950-02-14'
Csak azt magyarázd el nekem, hogyan fog valaha is teljesülni az, hogy egy dátum 1982-nél későbbi, de 1950-nél korábbi!Ja hogy a kliens pontos ideje kell (tehát a látogató szerinti idő), azt előbb nem írtad, így érthető.
Én a helyedben ezt a számolgatást inkább az adatbázisra bíznám, ha már úgyis onnan kellenek az adatok. Bár ez megint hitkérdés, mert a query cache szempontjából lehet, hogy jobb, ha inkább PHP-ra bízod a számolást.
Na de abból már eleve ki lehet indulni, hogy a MySQL-ben nagyon egyszerűen lehet egyszerű intervallumokat számolni, lásd pl. ezt:
SELECT DATE_SUB( NOW(), INTERVAL 60 YEAR );
Eredménye épp most:
1952-04-08 19:41:06Most leteszteltem az intervallumokra egy teszttáblával és néhány tesztadattal, úgy, hogy az ezelőtt 30-60 évvel születettekre vagyok kíváncsi, ez lesz az intervallum, a teszttáblával tök jól működött:
Táblastruktúra:
CREATE TABLE IF NOT EXISTS `test_dates` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`my_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_hungarian_ci AUTO_INCREMENT=10 ;
INSERT INTO `test_dates` (`id`, `my_date`) VALUES
(1, '2012-04-08 16:52:36'),
(2, '2012-02-06 10:00:00'),
(3, '2012-01-09 11:36:00'),
(4, '2011-01-09 08:00:49'),
(5, '1981-07-07 22:00:00'),
(8, '1972-03-14 23:33:00'),
(9, '1978-04-04 16:00:00');A query az intervallumokkal:
SET @now = NOW( );
SET @interval_start = 30;
SET @interval_end = @interval_start + 30;
SET @date_first = DATE_SUB( @now , INTERVAL @interval_end YEAR );
SET @date_second = DATE_SUB( @now , INTERVAL @interval_start YEAR );
SELECT * FROM `test_dates`
WHERE
`my_date` >= @date_first
AND
`my_date` < @date_second
ORDER BY `my_date` ASC;Nálam "a lekérdezés 0.0221 másodpercig tartott".
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9177 üzenetére
Hogy mi? Miért feltételezed, hogy a mai napon született, mondjuk 35 éve?
Ez ugye ezt adja vissza: "1977-04-08"...
Ennek mi értelme? Te nem csak évre vonatkozó életkort akarsz számolni? Megint kicsit homályos nekem a kérdésed. -
Sk8erPeter
nagyúr
válasz
Speeedfire #9176 üzenetére
Ha AJAX-szal küldenéd el, akkor is meg tudnád nézni a helyességét.
Ha nagyon muszáj így csinálni, hidden input fieldekkel, akkor igen, én mindenképp kettébontanám, felesleges egybesűríteni.
De szerintem nem muszáj.Nekem eleve az nem világos, hogy ezt miért akarod kliensoldalon elintézni, ha a kliensoldalon lényegében semmi szerepe nincs - tehát miért nem szerveroldalon kéred le az aktuális napot, időt, date()-tel... A checkbox megléte vagy hiánya úgyis egyértelművé teszi a helyzetet, így felesleges kliensoldalon beállítani, plusz ugye az megint csak tök felesleges plusz validálás.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9169 üzenetére
Nem ártana tudni, mit akarsz kezdeni az adatokkal, egyáltalán hogy küldöd el szerveroldalra, és hogyan fogod feldolgozni, hogy fogod eltárolni...
Itt egyébként miért a getDay értékét küldöd el? (Gondolom tudod, hogy az 0-val kezdődik, ami a vasárnapot jelzi, a hétfő az 1-es, stb...)
Egyébként a céltól függ, hogy mit és mennyire érdemes szétbontani.
Mondjuk itt valami dátumot akarsz beállítani, ha jól látom, hogy meddig elérhető a hirdetés. Ezt nem valami Datepickerrel intézed el? Ha nem, akkor csináld azzal, csak hogy megint megkaphassam a fejemhez, hogy hype-olok.(Egyébként csak azért ajánlott, mert iszonyat egyszerű a kezelése.)
-
Lacces
őstag
válasz
Speeedfire #9172 üzenetére
Kösz, nem is rossz ez a Yii, csak bele kell majd jönni alaposabban. Na meg sokat kell keresni neten, ez veszi el a legtöbb időmet. Pl.: Hiába a hivatalos fejlesztők teszik közé, hogyan kell update-elni egy fájlt, hát úgy nem működik
Erre még nem jöttem rá. Meg az ActionIndex-es példák sem működnek nálam tökéletesen, a modelt ott nem tudom átadni (tutorial-os leírásban ott van, de az kevés)
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9146 üzenetére
"Esetleg ha valami speckó karaktert raksz a sztingek közé akkor explode-al szét lehet szedni a sztringet."
Ezt inkább ne. Kerülendő, rossz programozási szokás, nem is "biztonságos" - ha ehhez valaki hozzászokik, elfelejtheti, hogy az a bizonyos belepakolt érték szintén tartalmazhat olyan karaktersorozatot, ami épp az elválasztó karaktersorozat, kizárni nem lehet.
Főleg, ha van alternatíva (pl. amit írtam fentebb).
-
Lacces
őstag
válasz
Speeedfire #9143 üzenetére
kösz, megnézem, hátha az könnyebb.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9134 üzenetére
Ha nem töltötte ki a másik mezőt, akkor akár megoldhatnád a kérdést default értékekkel, az első mező értékének függvényében.
Vagy egyszerűen kötelezővé teszed a második mező kitöltését is, meg is vizsgálod, megvan-e mindkettő, és csak ennek megléte esetén dolgozod fel a formot, és kész.===
(#9128) Lacces : közben eszembe jutott, hogy gyűlölöd a terminált.
De létezik az Ubuntu default fájlkezelőjében is (Nautilus) kereső, ha nyomatsz egy Ctrl+F-et..... Meg nem is egy kétpaneles fájlkezelő van GNOME-hoz és KDE-hez egyaránt - de KDE-st is használatsz GNOME-on is, pl. akár Krusader (még talán ez viszonylag hasonlít a Windows-os Total Commanderhez, de sajnos eddigi tapasztalataim alapján egyik sem közelíti meg azt).
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9132 üzenetére
ja, a $tomb az itt pont nem tömb lesz, hanem a tömbindex/kulcs.
$value1 = $value[0]; $value2 = $value[1];
Ez így ellenőrzés nélkül nem biztos, hogy túl jó ötlet, vagy garantált, hogy a $_POST['post'] aktuális elemén belül mindig lesz 0. és 1. index? (és nem lesz kevesebb vagy éppen több kulcs?) -
Speeedfire
félisten
válasz
Speeedfire #9131 üzenetére
Na, jól van....nem jót vizsgáltam.
A $value értékét kellett volna...
if(is_array($value)) { -
Sk8erPeter
nagyúr
válasz
Speeedfire #9115 üzenetére
A selectnél még oké, a checkbox kevésbé világos, mert az szerintem alapból nem szokott átmenni szerveroldalra, ha nincs semmi kipipálva.
Pl. select:
<select class="asdasd" name="form_elem_select[]">
<option>- semmi -</option>
<option value="blabla_1">Blabla 1</option>
<option value="blabla_2">Blabla 2</option>
<option value="blabla_3">Blabla 3</option>
<option value="blabla_4">Blabla 4</option>
</select>Ha így néz ki, akkor itt az első, a - semmi - lesz a kiválasztott option (mivel sehol nincs explicite a selected="selected"), a szerveroldalon pedig ezt kapod a $_POST-ban:
array (
'form_elem_select' => '- semmi -',
)Épp ezért inkább érdemes egy default üres értéket adni neki:
<select class="asdasd" name="form_elem_select[]">
<option value="">- semmi -</option>
<option value="blabla_1">Blabla 1</option>
<option value="blabla_2">Blabla 2</option>
<option value="blabla_3">Blabla 3</option>
<option value="blabla_4">Blabla 4</option>
</select>Így ez lesz a $_POST-ban:
array (
'form_elem_select' => '',
)Erre így könnyű ráereszteni egy empty() ellenőrzést, és akkor pampoghatsz, hogy válasszon ki valamit a júzer, ha kell.
A checkbox általában nem jelenik meg szerveroldalon, ha nem választasz ki semmit, úgyhogy azt nem vágom...
Az empty(), amire kérdeztél, teljesen jó, igen.
A foreach-et és más ciklusokat is tovább lehet léptetni "kierőszakoltan" continue-val: [link].
===
(#9117) Lacces : ez függ attól, van-e jóféle iterátor a bejárandó elemhez.
Meg a láncolt listánál szokták így is, hogy egyszerű legyen, mint egy marék lepkefing: while( loszar->next() ){...} .(#9122) Lacces :
"Másik épp nézem át, de a javascript / jquery az hol tárolódik?"
Őőőőő, nincs kereső a gépeden?
Letöltöttem a Yii-t, és nagyjából 10 másodperc alatt megvolt keresővel... -
Lacces
őstag
válasz
Speeedfire #9123 üzenetére
Hm, ez tényleg fura,
Mert például ha a Home-ra kattintok (menüpont) akkor a Home jön be, de nem a Product jön be, hanem a default-os a site/index
-
Lacces
őstag
válasz
Speeedfire #9121 üzenetére
Lehet, hogy ez a Shop modul akkor máshogy működik, mint a többi
Nem működik nálam:
'defaultController' => 'shop/products',
'defaultController' => 'shop/products/',Csak az indexes változat:
'defaultController' => 'shop/products/index'Másik épp nézem át, de a javascript / jquery az hol tárolódik? (modul / framework)
-
Lacces
őstag
válasz
Speeedfire #9114 üzenetére
Az első variációt és a linket nem értem
Nálam így nézz ki, config fájlban:
// Default Controller config:
'defaultController' => 'products',moduls/shop/controllers/ProductsController
class ProductsController extends Controller
{
...
public $defaultAction = 'products';
public function actionIndex()
{
....http://localhost/YiiShop/index.php -nál jön ez a hiba:
Unable to resolve the request "products".
Megoldva:
config fájlban így kell:
// Default Controller config:
'defaultController' => 'shop/products/index', -
Lacces
őstag
válasz
Speeedfire #9118 üzenetére
Köszi! Bár azért már a linuxot is inkább kattintásokkal szeretem használni
nagyon elvok szokva a parancsoktól
-
Lacces
őstag
válasz
Speeedfire #9115 üzenetére
A problémát nem tudom. Esetleg nem típus egyezőséget kell vizsgálni?
=== használni == helyet?Illetve olyan kérdésem lenne még hogy ha ezeken egy foreach-el megyek végig akkor lehet e valahogy továbbléptetni a foreach-et, vagy csak csináljak bele egy if-else ágat?
Nos szerintem ez pont így jó, ahogy leírtad
Erre pont a láncolt lista bejárás jut eszembe, pontosabban, amikor a láncolt listából bizonyos elemeket kell törölni. Az általános algoritmus erre, meg a stackoverflow-on írtam fel, és jobbat nem javasoltakwhile ( amíg van elem) { // foreach is jó
if( megvan amit kerestem)
delete // újraláncolás, az előtte és utána lévőt kötöm össze
else
tovább lépek
}Kábé így nézz ki elméletben, és kell az if-else ág bele, csak sima if-el nem működik jól
Sima while ciklussal sem lépett tovább... (igaz valami speciálisat kért a tanár) és felírtam fórumban és ott mondták, hogy kell az else is bele, hogy tovább lépjen a while ciklus -
Lacces
őstag
válasz
Speeedfire #9108 üzenetére
Példakódot majd tudnál adni? Én komolyan itt a tutorial-os blogot néztem, és nem látom ezt a rulet, vagy a Controller osztályban bárhol is, config fájlt is átnéztem...
-
modder
aktív tag
válasz
Speeedfire #9108 üzenetére
Na itt egy érdekes "probléma", aki elég bátor az megválaszolhatja, hogy ez-e az elvárható működés vagy sem
-
Lacces
őstag
válasz
Speeedfire #9074 üzenetére
Na majd megnézem én ezt este odahaza, kíváncsi vagyok rá..., hogy hol van, mert nem tudtam az Istennek sem átadni egy másiknak..
-
modder
aktív tag
válasz
Speeedfire #9077 üzenetére
Jól van, igazatok van. akkor MINDENT félreértettem %%%ÖTÖT
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9077 üzenetére
DE AKKOR IS JQUERY RULEZ!!!!!!!!44NÉGYNÉGYNÉGY
-
Speeedfire
félisten
válasz
Speeedfire #9074 üzenetére
Ja, ezért index.
defaultAction property
public string $defaultAction;
the name of the default action. Defaults to 'index'. [link] -
Sk8erPeter
nagyúr
válasz
Speeedfire #9046 üzenetére
Fricska akart lenni a sok gyökér kérdésre reagálva.
Bővebben: sokan úgy kérdeznek, hogy óvodás szintű, degeneráltak által is érthető dokumentációk/tutorialok/e-bookok/... állnak rendelkezésre arról, hogyan kell megoldani egy adott problémát, de sokan ezt lusták elolvasni/kipróbálni/felfogni, és úgy gondolják, jobb, ha inkább f@szságokat kérdeznek a fórumokon, majd valaki megmondja a megoldást attól kezdve, hogy hogyan kapcsolja be a gépet, nem zavarja őket, ha kicsit hülyét csinálnak magukból, belefér.
Az ilyenektől eléggé felhígul egy szakmai fórum, elviszi a témaköröket a "buta kérdések topicja" irányba.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9034 üzenetére
Nem is mondtam egy szóval sem, hogy nincsenek hibái. Viszont biztos, hogy a Yii-t össze lehet hozni Ubuntun is, az, hogy Laccesnek nem sikerült, nem azt jelenti, hogy Ubuntun még ezt sem lehet működésbe hozni.
Webfejlesztgettem Ubuntu alatt is, érdekes módon nekem nem volt olyan problémám, hogy bugok miatt képtelen voltam használni a terminált...
Nyilván rengeteg bugja van, de nem pont a Yii telepítése az, ami kiveri a biztosítékot.
Félre ne értsd, nem tisztem védeni az Ubuntut, jelenleg nem is használom (egyszóval: kb. leszarom), de mondjuk az is igaz, hogy a Linux disztrók közül a "felhasználóbarátsága" miatt az egyik legnépszerűbb, nyilván nagyon sokan használják, így gondolom nem gyengén derülnek ki hibái (nem is beszélve az egységsugarú júzerekről
). Aztán lehet, hogy fostenger, nem tudom, konkrét, alátámasztott szakmai véleményt erről még nem olvastam, pedig jobb olyat olvasni, mint azt, hogy "az egy szar, mert a Pisti is megmondta".
===
(#9035) Athlon64+ : ennél jobban alátámasztott szakmai véleményt még soha nem olvastam.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9032 üzenetére
Micsoda megoldás.
Abból, hogy valakinek egyedi hibák miatt nem sikerült megcsinálnia valamit Ubuntun, az az egyenes ágú következtetés, hogy "ne használj Ubuntut", BIZTOS csakis az Ubuntu és a fejlesztői lehetnek a hibásak!...
-
Lacces
őstag
válasz
Speeedfire #9030 üzenetére
Igen, ezt már próbáltam... nem a Yiic a hibás, elnézést ezért, meg hogy ideg voltam
.
Valami nem kóser az Ubival, már volt is hogy az ubi fórumba is furcsán néztek az ubimrasenkinek sem volt már sok ötlete...
Windows alatt egyből összejött...
Pedig terminált nagyon régóta használok. itt van valami a rendszeremmel...Köszi mindent, mindenkinkek!
-
Lacces
őstag
válasz
Speeedfire #9027 üzenetére
Hát most így vagyok: Yiic-re kattintok kétszer, terminálban futtasa de semmi...
Most google, de engem zavar, hogy olyan triviális mindenkinek ez a yiicA blogot köszi, de itt sem jött be a parancs
-
modder
aktív tag
válasz
Speeedfire #9015 üzenetére
name és value attributumát megkapod php-ban
-
válasz
Speeedfire #9010 üzenetére
Ez így objektum hívás?
$model->'nap_'.$i;
Konkrétan nem értelek. Most kiveszed adatbázisból a nap_xy bejegyzéseket és belerakod egy tömbbe majd mindre ugyanazt a feldolgozást ráhúzni?
foreach?
-
Sk8erPeter
nagyúr
válasz
Speeedfire #8983 üzenetére
Az ötlet jó, egy ilyen jellegű megoldás pl. ehhez hasonló lehet: [link]
Ez a cikk írójának saját megoldásával korábbi Drupal-verzióhoz azt csinálta, hogy a request URI-t felbontotta, és eszerint futtatott le egy keresést. Ezt a keresést mondjuk be kellene helyettesíteni egy alias-kereséssel, ráadásul itt nem gondol az ékezetes karaktereket tartalmazó URL-ekre, amiből manapság már bőven van (lásd pl. drupal.hu).
Persze ez most a felvetésedre nem megoldás, szóval nem egy kész, hűdefasza kód, de legalább valaki próbált nyekeregni egy kicsit erőltetetten a témában, azért linkeltem.
Igazából én is csak most kerestem rá, eddig nem jutott eszembe alias szerint keresgélni és javaslatokat mutatni, de tényleg jó ötlet lehet, főleg, hogy az aliasok jobb helyeken adatbázisban, külön erre szentelt táblában találhatók, így normális indexeléssel egy ilyen táblában való kutakodás elég gyors lehet. -
Sk8erPeter
nagyúr
válasz
Speeedfire #8943 üzenetére
Ezt már korábban írtam, de ennek ebben a formában nem sok teteje van:
isset($_POST['hirlevel']) ? $hirlevel = 'igen' : $hirlevel = 'nem';Így tulajdonképpen nem indokolt, hogy miért ne használd inkább az if-else formát.
Akkor már itt is leírom úgy, ahogy még értelme is van ezt a formát használni:
$hirlevel = isset($_POST['hirlevel']) ? 'igen' : 'nem';
Így még teljesíti is azt a célt, hogy érdemben lerövidíti a kódot, és nem kell ugyanazt a változónevet ismételgetni (ahogy pl. egy if-else feltételvizsgálatnál). Meg utóbbi formában gyorsan átlátható, milyen értéket szeretnél egyből hozzárendelni, és milyen feltételtől teszed azt függővé. -
PazsitZ
addikt
válasz
Speeedfire #8949 üzenetére
A modelleknek CActiveRecord van egy isNewRecord property-je, ami alapján meg tudja állapítani insert vagy update művelet szükséges.
Bár ez a property állítható, de ebben az esetben még a primaryKey hibás értékre mutat.
Tehát a setPrimaryKey-vel az elsődleges kulcsot is állítanod kell a helyes működéshez.A fent említett módszer helyett viszont sokkal inkább ajánlott a költségesebb, de helyes működést garantáló new Model(); létrehozás, minden új sor beszúrásánál.
-
modder
aktív tag
válasz
Speeedfire #8947 üzenetére
Beállította magának, hogy update lesz? Te lehet, hogy jobban vágod a YII működését, de nem hiszem, hogy intuíció alapján csinál dolgokat
Szerintem ha újat akarsz hozzáadni, minden iterációban példányosíts egy új Items-t.
(Én Kohanával dolgoztam, és ott úgy van az ORM modell, hogy egy példány<-->egy rekord az adatbázisban, persze komplexebb modelleknél, ahol több táblába akarsz egyszerre menteni meg blabla, felül lehet definiálni a működést, de alapból így van)
-
modder
aktív tag
válasz
Speeedfire #8941 üzenetére
úgy tűnik, yii-t használsz, úgyhogy elég speckó a kérdésed. én azzal még nem foglalkoztam. kéne tudni, hogy működik az new Items nevű modelled.
Ami amúgy egyből feltűnik a fileHandler függvényedben, hogy itt
$model->name = $fullImgName;
$model->size = $instance->size;
$model->type = $type;ugyanarra az objektumra állítod be mindig az értékeket, és utána elmented. Ha ez egy ORM-es cucc, akkor az első mentés után generál egy id-t a PRIMARY KEY-hez, majd ugyanazt a rekordot módosítja újra és újra minden iterációban. (Nem tudom, mi az az $instance, meg ezek, de nem látom, hogy a modellben lenne valami belső léptetés az új elemeknek).
Remélem elég sugallatot adtam
-
spammer
veterán
válasz
Speeedfire #8943 üzenetére
A 2. módszerrel csináltam, működik! Nagyon szépen köszönöm!
-
modder
aktív tag
válasz
Speeedfire #8904 üzenetére
akkor gondold át
-
modder
aktív tag
válasz
Speeedfire #8902 üzenetére
nem ott szeretted volna!
Gondolom tisztában vagy vele, hogy amikor a modelledhez hozzáadod a napot, a belső ciklusnak csak az utolsó iterációja fog megjelenni a $nap változóban
Új hozzászólás Aktív témák
Hirdetés
- Építő/felújító topik
- Intel Core i5 / i7 / i9 "Alder Lake-Raptor Lake/Refresh" (LGA1700)
- Számtech boltosok memoárjai, azaz amikor kiborulunk...
- iGO Primo
- E-roller topik
- gban: Ingyen kellene, de tegnapra
- Android alkalmazások - szoftver kibeszélő topik
- A fociról könnyedén, egy baráti társaságban
- Macron betiltatná az EU-ban a közösségi médiát a 15 év alattiaknak
- HiFi műszaki szemmel - sztereó hangrendszerek
- További aktív témák...
- Asus A15 FA506IU 15.6" FHD IPS Ryzen 7 4800H GTX 1660Ti 16GB 512GB magyar vbill gar
- i5-13600KF, RX 9070, DDR5 32GB, 1 TB M.2, Fractal North TG és sok garancia
- Logitech Combo Touch iPad Pro 11" (1., 2. a 3. gen), szürke - UK billentyűzet ipad tok billentyűzet
- újszerű iPad Pro 11" (3. generációs) (2021) M1 chip Wi-Fi 128GB silver ezüst Apple
- szinte új iPhone 16 Pro Max 256GB desert titanium sivatagi titán független Apple 3 év garancia
- Telefon felvásárlás!! Xiaomi Redmi Note 12, Xiaomi Redmi Note 12 Pro, Xiaomi Redmi Note 12 Pro+
- ÁRGARANCIA! Épített KomPhone i5 14600KF 32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- Konica Bizhub C220 - A3 fénymásoló
- AKCIÓ! GIGABYTE B360 i5 9600K 16GB DDR4 512GB SSD RX 7600 8GB Rampage SHIVA Zalman 600W
- ÁRGARANCIA! Épített KomPhone Ryzen 7 9700X 32/64GB RAM RX 9070 16GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: Promenade Publishing House Kft.
Város: Budapest