- Mobil flották
- Okosóra és okoskiegészítő topik
- Google Pixel 9 Pro XL - hét szűk esztendő
- Akciófigyelő: Jelentősen olcsóbban nyit az Ulefone új mindenese
- India felől közelít egy 7550 mAh-s Redmi
- Motorola Edge 50 Neo - az egyensúly gyengesége
- VoLTE/VoWiFi
- One mobilszolgáltatások
- Samsung Galaxy Watch7 - kötelező kör
- További kavarás a Pixel 10-ek körül
Új hozzászólás Aktív témák
-
trisztan94
őstag
Sziasztok!
MySQL LOAD DATA INFILE-al egy nagy csv-t próbálok importálni adatbázisba. 500.000 sor, 93 oszlop és kb 600mb a fájlméret, InnoDB az AB motor (tudom, hogy MYISAM-al gyorsabb, de kötve vagyunk az innodb-hez).
Ez az import kódom:
$query = "LOAD DATA CONCURRENT LOCAL INFILE '$path'
INTO TABLE task_metas
CHARACTER SET utf8mb4
FIELDS TERMINATED BY '$delimiter'
OPTIONALLY ENCLOSED BY '$enclosed'
LINES TERMINATED BY '$lineending'
IGNORE 1 LINES
(@col1, @col2, @col3, @col4, @col5, @col6, @col7, @col8, @col9, @col10, @col11, @col12, @col13, @col14, @col15, @col16, @col17, @col18, @col19, @col20, @col21, @col22, @col23, @col24, @col25, @col26, @col27, @col28, @col29, @col30, @col31, @col32, @col33, @col34, @col35, @col36, @col37, @col38, @col39, @col40, @col41, @col42, @col43, @col44, @col45, @col46, @col47, @col48, @col49, @col50, @col51, @col52, @col53, @col54, @col55, @col56, @col57, @col58, @col59, @col60, @col61, @col62, @col63, @col64, @col65, @col66, @col67, @col68, @col69, @col70, @col71, @col72, @col73, @col74, @col75, @col76, @col77, @col78, @col79, @col80, @col81, @col82, @col83, @col84, @col85, @col86, @col87, @col88, @col89, @col90, @col91, @col92, @col93)
SET task_id=null, project_id=$project->id, full_comment=null, relevance=-1, note=null,
url=@col1, indexed=@col2, published=@col3, search_indexed=@col4, title_snippet=@col5, content_snippet=@col6, title=@col7, content=@col8, root_url=@col9, domain_url=@col10, host_url=@col11, parent_url=@col12, lang=@col13, porn_level=@col14, fluency_level=@col15, spam_level=@col16, sentiment=@col17, source_type=@col18, post_type=@col19, cluster_id=@col20, meta_cluster_id=@col21, tags_internal=@col22, tags_marking=@col23, tags_customer=@col24, entity_urls=@col25, images_url=@col26, images_width=@col27, images_height=@col28, images_legend=@col29, videos_url=@col30, videos_width=@col31, videos_height=@col32, videos_legend=@col33, pagemonitoring_sitemon_siteid=@col34, matched_profile=@col35, article_extended_attributes_facebook_shares=@col36, article_extended_attributes_facebook_likes=@col37, article_extended_attributes_twitter_retweets=@col38, article_extended_attributes_url_views=@col39, article_extended_attributes_pinterest_likes=@col40, article_extended_attributes_pinterest_pins=@col41, article_extended_attributes_pinterest_repins=@col42, article_extended_attributes_youtube_views=@col43, article_extended_attributes_youtube_likes=@col44, article_extended_attributes_youtube_dislikes=@col45, article_extended_attributes_instagram_likes=@col46, article_extended_attributes_twitter_shares=@col47, article_extended_attributes_num_comments=@col48, source_extended_attributes_alexa_pageviews=@col49, source_extended_attributes_facebook_followers=@col50, source_extended_attributes_twitter_followers=@col51, source_extended_attributes_instagram_followers=@col52, source_extended_attributes_pinterest_followers=@col53, extra_article_attributes_world_data_continent=@col54, extra_article_attributes_world_data_country=@col55, extra_article_attributes_world_data_country_code=@col56, extra_article_attributes_world_data_region=@col57, extra_article_attributes_world_data_city=@col58, extra_article_attributes_world_data_longitude=@col59, extra_article_attributes_world_data_latitude=@col60, extra_author_attributes_id=@col61, extra_author_attributes_type=@col62, extra_author_attributes_name=@col63, extra_author_attributes_birthdate_date=@col64, extra_author_attributes_birthdate_resolution=@col65, extra_author_attributes_gender=@col66, extra_author_attributes_image_url=@col67, extra_author_attributes_short_name=@col68, extra_author_attributes_url=@col69, extra_author_attributes_world_data_continent=@col70, extra_author_attributes_world_data_country=@col71, extra_author_attributes_world_data_country_code=@col72, extra_author_attributes_world_data_region=@col73, extra_author_attributes_world_data_city=@col74, extra_author_attributes_world_data_longitude=@col75, extra_author_attributes_world_data_latitude=@col76, extra_source_attributes_world_data_continent=@col77, extra_source_attributes_world_data_country=@col78, extra_source_attributes_world_data_country_code=@col79, extra_source_attributes_world_data_region=@col80, extra_source_attributes_world_data_city=@col81, extra_source_attributes_world_data_longitude=@col82, extra_source_attributes_world_data_latitude=@col83, engagement=@col84, reach=@col85, provider=@col86, generator_type=@col87, source_extended_attributes_alexa_unique_visitors=@col88, article_extended_attributes_twitter_likes=@col89, extra_author_attributes_description=@col90, article_extended_attributes_linkedin_shares=@col91, extra_source_attributes_name=@col92, word_count=@col93,
created_at=NOW(), updated_at=NOW()";A query futtatása után visszakapok egy számot arról,hogy mennyi sor került be adatbázisba, ami eddig mindig helyes volt.
A probléma az, hogy amikor megnézem az adatbázist, sokszor nem annyi sort pakol be rögtön, mint amenynit visszaad a query. 519.000-nek kellene lennie, de pl. a legutóbbi importnál csak 463.000 volt. Ennél furcsább, hogy ha pár mp múlva újra lekérem az ab táblát, már több sort mutat benne - kb 1000-esével növekedik cca 30mp-enként.
Tehát nagyjából egy 40p alatt felmegy a tényleges 519.000 sorra az inserted sorok száma.
Ez miért van? Olyan, mintha utólag aszinkron pakolná be a sorokat. Ki lehet ezt valahogy kerülni?
+ update
Még az is furcsa, hogy az importált sorok lekérésénél, amikor még fut ez az aszinkron 'utóimport(?)' elszáll a szerver memóriatúllépés miatt, de csak ha azokat a sorokat kérem le. Ha egy korábban futtatott import sorait kérem le, no problemo.
Olyan lehet, hogy a MYSQL szerver lecache-elte azokat a sorokat amire már nem volt elég memóriája és szépen üríti? Szintén szuper lenne ide egy megoldás -
trisztan94
őstag
válasz
trisztan94 #19133 üzenetére
Wow, oké, rájöttem.
Helyesen rendezte ez, csak én csökkenő sorrendbe akartam rakni és valamiért feltételeztem, hogy telepatikus a php...
Bocsi, meghalt az agyam egy kicsit.
-
trisztan94
őstag
válasz
disy68 #19132 üzenetére
Néztem a
usort
-ot, de valamiért nagyon furcsán működik:Ha a
total_rows
index alapján rendezem, nem történik semmi:usort($array, function($a, $b) {
return intval($a['total_rows']) <=> intval($b['total_rows']);
});Output:
array:2 [▼
0 => array:4 [▼
"user_id" => "4"
"total_rows" => "250"
"delete_member" => "0"
"phase" => "1"
]
1 => array:4 [▼
"user_id" => "3"
"total_rows" => "1050"
"delete_member" => "0"
"phase" => "3"
]
]De ha más, jelen példában a
user_id
alapján, akkor működik ahogy kéne:usort($project_members, function($a, $b) {
return intval($a['user_id']) <=> intval($b['user_id']);
});Output:
array:2 [▼
0 => array:4 [▼
"user_id" => "3"
"total_rows" => "1050"
"delete_member" => "0"
"phase" => "3"
]
1 => array:4 [▼
"user_id" => "4"
"total_rows" => "250"
"delete_member" => "0"
"phase" => "1"
]
]Mi nem tetszik neki a
total_rows
-ban? -
trisztan94
őstag
Sziasztok,
Valószínű triviális a kérdésem.
Adott a következő array:
array:2 [▼
0 => array:4 [▼
"user_id" => "4"
"total_rows" => "250"
"delete_member" => "0"
"phase" => "3"
]
1 => array:4 [▼
"user_id" => "3"
"total_rows" => "1050"
"delete_member" => "1"
"phase" => "1"
]
]Szeretném rendezni a
total_rows
alapján. Tehát az legyen a legfelső tömb első eleme, amelyiknek a legnagyobb atotal_rows
értéke.array_multisort
-al próbálkoztam eddig, de nem sikerült.Hogyan kellene ezt megcsinálni?
-
trisztan94
őstag
Sziasztok,
Laravel-ben az Eloquent Relationship-ekkel bénázok.
Van egy projects és egy tasks táblám. A tasks táblában van egy project_id oszlop. Egy Task csak egy projektben lehet, de egy Projektben több Task is lehet, tehát 1 : N a relationship köztük. A project táblában nincs hivatkozás a tasks táblára.
A Project model-ben így akarok hivatkozni a relationshipre:
public function tasks() {
return $this->hasMany('App\Tasks');
}A Tasks model-ben pedig így hivatkozok vissza:
public function project() {
return $this->belongsTo('App\Project');
}Így próbálom lekérni az egyes projektek task-jeit:
$project = Project::where('public_id', intval($public_id))->get();
$project->tasks;De ezt a hibát kapom:
Property [tasks] does not exist on this collection instance.
Mit csinálok rosszul?
-
trisztan94
őstag
Sziasztok,
Egy elég komplex Laravel alapú WebApp-ot készítünk. Szükségünk lenne egy sok-sok tapasztalattal rendelkező Laravel fejlesztőre, aki átnézné Nekünk az adatbázis szerkezetet amit megterveztünk hozzá, hátha valamit elfelejtettünk/rosszul csináltunk, esetleg a keretrendszer konvenciói másképp követelnek valamit stb.
Lényeg, hogy egy külsős áldását, javaslatait szeretnénk kérni rá.
7 táblás MySQL-ről lenne szó, de kb mind össze van kapcsolva valamivel foreign key segítségével.
Privibe dobjatok kérlek egy árat, ha érdekes lehet!
-
trisztan94
őstag
Sziasztok
Két szöveget kell összehasonlítanom. Az első szöveg a második egy részlete (általában), de ahhoz, hogy tovább lépjen a progi, legalább 80%-os egyezésnek (vagy tolerancia itt a megfelelő szó?) kell lennie. Az is lehet, hogy az első szövegben el van írva valami.
Pl:
$szoveg1 = "hello darkness my old friend";
$szoveg1_elirva = "helo drakness my old friend";
$szoveg2 = "Hello darkness, my old friend I've come to talk with you again Because a vision softly creeping Left its seeds while I was sleeping And the vision that was planted in my brain
Still remains";Ha jól gondolom, nekem valami olyasmi kéne, mint a LIKE operátor SQL-ben - valamilyen szinten legyen köze
$szoveg1
-nek$szoveg2
-höz, de nem kell 100%-osnak lenni.Nagyon bután tehát:
if ($szoveg1 LIKE(80) $szoveg2) {
return true;
}Hogyan kezdjek ennek neki, minek nézzek utána?
-
trisztan94
őstag
válasz
fordfairlane #18377 üzenetére
Egy Mailchimp-be menő form egy hidden inputjának értéke lenne a változó, ami POST-ból jön.
Nyilván a MC csinál saját validation-t, de gondoltam a biztonság sosem árt.
-
trisztan94
őstag
Sziasztok!
Egyszerű kérdés:
Mi most a legjobb mód POST (vagy igazából akármilyen) változók biztonságos használatára?
if(!empty($_POST["package"]) && isset($_POST["package"])) {
$var = mb_addslashes($_POST["package"]);
}Elég ennyi, vagy kihagytam valamit?
-
trisztan94
őstag
Tárgytalan, teljesen elkerülte a figyelmem, hogy van egy COUNT endpointja az api-nak, amivel pont azt tudom csinálni amit akartam: lekérni az oldalmennyiséget....
Bocsesz.
Egy pluginen dolgozom, ami küld egy REST kérést egy API felé.
A trükkös rész az, hogy válaszként maximum 50 elemet kapok vissza oldalanként, hacsak nem mondom meg az uri-ban explicit, hogy hanyadik oldalról kérem a találatokat. Tehát pl. ha tudom, hogy amit keresek az a 151. elem a visszaadott adattömbben, akkor explicit megmondom az API-nak, hogy a 3. oldalról kérem a dolgokat.
Szeretném ilyen 50 elemes oldalakra bontani az oldalt, viszont az a baj, hogy fogalmam sincs honnan tudnám meg, hogy összesen hány oldalnyi elem van.
Ez egy példa response az API-tól:
stdClass Object
(
[ids] => Array
(
[0] => air4304753
[1] => air3432487
[2] => air638963
[3] => air803076
[4] => air3738354
[5] => air2285517
[6] => air4029464
[7] => air4099090
[8] => air3939774
[9] => air4084559
[10] => air4118889
[11] => air754158
[12] => air4583121
[13] => air3282714
[14] => air4445915
[15] => air1168152
[16] => air2867116
[17] => air2454422
[18] => air4526092
[19] => air4160250
[20] => air4396985
[21] => air577969
[22] => air1721789
[23] => air58076
[24] => air1561140
[25] => air206806
[26] => air978130
[27] => air1052042
[28] => air822340
[29] => air2858209
[30] => air3181224
[31] => air1499333
[32] => air1364739
[33] => air4358639
[34] => air1186217
[35] => air1213666
[36] => air1011319
[37] => air254844
[38] => air3774080
[39] => air742998
[40] => air1732428
[41] => air4119371
[42] => air4316805
[43] => air645091
[44] => air206478
[45] => air3439518
[46] => air3698344
[47] => air2070695
[48] => air1721598
[49] => air3062316
)
[queryType] => search
[status] => 200
[page] => 1
[resultsPerPage] => 50
[amtOfNights] => 0
[sort] => default
[isNearQuery] => 1
[runtime] => 55
[result] => Array
()};Látni, hogy visszakaptam 50 elemet, és meg is mondja, hogy ez a page 1.
Ha beírok valami random számot page-nek, mondjuk 123-mat és azon már nincs adat, ez a response jön vissza:
stdClass Object
(
[ids] => Array
(
)
[queryType] => search
[status] => 200
[page] => 123
[resultsPerPage] => 50
[amtOfNights] => 0
[sort] => default
[isNearQuery] => 1
[runtime] => 114
[result] => Array
(
)
)A kérdés:
Hogyan tudom egyszerűen megtudni, hogy összesen hány oldal van amiben van még adat?
Én arra gondoltam, hogy egy while(true) végtelen ciklusban elkezdem küldeni a kéréseket, és minden ciklusban amikor visszajön egy response, ellenőrzöm, hogy az ids tömb nem üres e. Ha igen, akkor paraszt módon ki break-elek a ciklusból.
Ezzel azon kívül, hogy baromi gány, még az a problémám, hogy ahhoz, hogy egyáltalán megtudjam hány oldalnyi kontent van, le kell kérnem az EGÉSZ result setet, ami több másodperc alsó hangon...
Másik alternatívám az, hogy csak next page és previous page gombokat rakok ki, aztán ha egy olyan oldalra lép amin már nincs adat, kap a user egy szomorú szmájlit. Ez viszont nem túl felhasználóbarát, szóval nem nagyon szeretném.
Nincs erre valami szép megoldás?
-
trisztan94
őstag
válasz
PumpkinSeed #18191 üzenetére
Az megvan, hogy hogy működik a Vagrant, nem az a lényeg.
Vannak a Wordpress lokális fájljai: /Home/www/VVV/www/projektneve/htdocs
a Home/www/ mappa nem webszerver, csak egy mappa aminek én adtam a www nevet. A 'VVV' a 'Varying Vagrant Vagrants' nevű environment helye (a neve tényleg hülye), abban van a vagrantfile, etc. Az abban lévő www mappa a projektek mappája, azt szinkronizálja a Centos virtuális géppel.
Tehát a virtuális gépben /www/projektneve/htdocs a Wordpress telepítés elérési útja.
A problem az, hogy én a Virtuális gép sync mappájától (/Home/www/VVV/www/) függetlenül egy teljesen másik mappában (/Home/www/pluginneve/) akarom tárolni a projektem fájljait úgy, hogy azok folyton szinkronban legyenek a virtuális gép sync könyvtárán belül lévő Wp telepítés plugins mappájával. (/Home/www/VVV/www/Projektneve/htdocs/wp-content/plugins/). Ezt meg tudom oldani egy symbolic link-el ugye, de a kérdésem arra irányult, hogy ha már a PHPstorm külön megkérdezi, hogy hol a WP telepítésem amihez a plugint akarom fejleszteni, akkor ez bele van-e építve.
-
trisztan94
őstag
Hali
Nem tudom, hogy jó helyen vagyok-e, de PHPStorm kérdésem lenne. Egy Wordpress Plugin-t fejlesztek, és most vettem észre, hogy a kedvenc IDE-m alapból tudja.
Amit tudni kell:
A Wordpress telepítés egy VVV (Varying Vagrant Vagrants) Vagrant boxot használja, annak elérési útja: /Users/felhasznalonevem/www/VVV/www/pluginneve/htdocs/
A fejlesztett plugin fájljai a /Users/felhasznalonevem/www/pluginneve/ mappában vannak.
Amikor elkészítettem az új projektet, a PHPStorm elkérte a WP telepítés elérési útját, amit meg is adtam neki.
Én értelmeztem rosszul, hogy lehet külön mappában maga a plugin és a WP telepítés? A katyvasz elérési útja miatt, no meg azért mert egy virtuális gépben van, nem akarom a WP telepítés plugins mappájába rakni az összes fájlt.
Hogy tudom azt megoldani PHPStorm-al, hogy a /Users/felhasznalonevem/www/pluginneve/ mappa folyamatos szinkronban legyen a /Users/felhasznalonevem/www/VVV/www/pluginneve/htdocs/ mappával? A git repo sem a WP telepítésben lenne, hanem a plugin fájljainál.
Tehát az kellene, hogy amikor mentek a szerkeztett fájlokra, a változtatásokat automatikusan lássam a Wordpressben úgy, hogy a fájlok mégsem ott vannak elsődlegesen.
OSX 10.11 az oprendszer ha számít valamit.
-
trisztan94
őstag
válasz
PumpkinSeed #18042 üzenetére
Korrupt a .phar fájlod. Töltsd le újra.
-
trisztan94
őstag
-
trisztan94
őstag
válasz
fordfairlane #17887 üzenetére
if(empty($_GET['order_id']) or !is_numeric($_GET['order_id'])) {
echo "<p>Helytelen fájl.</p>";
}Simán az exit elég tré szvsz, valami feedback-et mindenképp kell(ene) küldeni.
Vagy még jobb lenne egy 404-et visszaküldeni, természetesen beállítva egy custom oldalra, ami a hiba miértjét megmagyarázza:
if(empty($_GET['order_id']) or !is_numeric($_GET['order_id'])) {
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
include("holAzXMLNincsItt.php");
}(itt a kérdezőnek írom, hogy fontos, hogy a header() azelőtt legyen meghívva mielőtt bármi output lenne.)
-
trisztan94
őstag
válasz
hoczaj #17852 üzenetére
Tényleg, teljesen benéztem a key-ek sorrendjét a relációknál. Ez volt a problem, köszönöm!
A App\Category elvileg helyes. Laravel 5.1-et használok, ott eltűnt a Models mappa. 4.2-ben simán beírtam, hogy Category és jó volt, viszont ebben a verzióban nem találja az osztályt amíg meg nem adom a teljes névteret valamiért.
-
trisztan94
őstag
Hali!
Laraveles kérdésem lenne.
Van egy categories nevű táblám adatbázisban, amelyben van egy parent_category_id mező. A parent_category_id foreign key-el van ugyanúgy a categories table-re kötve.
Adatbázis migráció:
Schema::create('categories', function (Blueprint $table) {
$table->increments('id');
$table->string('category_name');
$table->integer('parent_category_id')->unsigned()->nullable();
$table->timestamps();
$table->foreign('parent_category_id')
->references('id')
->on('categories');
});A Category model-em:
public function parent(){
return $this->belongsTo('App\Category', 'id', 'id');
}
public function children() {
return $this->hasMany('App\Category', 'id', 'id');
}Magyarra lefordítva egy kategória egy darab szülőhöz tartozhat, de lehet több gyermeke ugye.
Itt egy kategória az adatbázisban:
Viszont ha meghívom rá a $venues->venueCategories[0]->category->parent sort, NULL-t kapok vissza. Ha nem kérem le a parent property-t, akkor viszont visszakapom a 77-es id-val rendelkező kategóriát (ami a screenshotban is van).
Mit csinálok szerintetek rosszul?
Köszi!
-
trisztan94
őstag
Hali!
Egy menetlevél készítő szoftvert hegesztek egy futárcégnek. Ezt a nagyszerű PHPExcel library-vel valósítom meg.
Egy ilyen menetlevélnek a következő nyomtatási sablonnak kell megfelelnie:
Minden lap tetején egy fejléc, ahol a jármű neve és az egy műszakos menetlevélnek a számozása (tehát pl menetlevél 3/1, menetlevél 3/2 stb) van. Ha esetleg kevesebb sor lenne, mint ami kifér egy lapra, akkor is üresen kell hagyni a lap további részét, tehát még véletlen sem kerülhet 4-5 sor után a következő járműnek a fejléce a lapra. Ugyanígy nem csúszhat át a fejléc egy másik lapra, stb.
Itt az a probléma, hogy egy bszott nagy táblázatból generálja a szoftver a menetlevelet. Ilyen 20-30.000 soros táblázat a bemenet, ami 100-120 autóra van felbontva, ahol minden sor egy címet jelöl.
Na szóval a tényleges probléma az lenne, hogy nem tudom, hogy amikor írom az Excel fájlt kódban, hogyan tudnám azt, hogy mikor van a lap vége. Próbáltam azt, hogy egy fix sor számot (29-et) állítottam be, de az sem volt jó, mert a megjegyzés mező ha hosszabb és esetleg 2-3 sorra széthúzza magasságban a cellát amiben van, akkor nem fér ki ugye a 29 egy lapra.
Esetleg csinált már valaki ilyet?
TL;DR: hogyan tudom ellenőrizni, hogy egy excel fájl írása közben mikor van a nyomtatási lapnak a vége?
-
trisztan94
őstag
válasz
Sk8erPeter #15731 üzenetére
De ha mindenkepp ragaszkodik, akkor a \r\n helyett jobb a PHP_EOL
-
trisztan94
őstag
válasz
Sk8erPeter #15705 üzenetére
De. De attol meg vannak nagyon jo cuccok a platformban, mint pl. a Batch Geocoder.
-
trisztan94
őstag
válasz
Drótszamár #15703 üzenetére
Hat ha tudsz erre aldozni par eurot evente, akkor a legjobb megoldas a Here Platform Batch Geocoding szolgaltatasa: [link]
-
trisztan94
őstag
válasz
trisztan94 #15657 üzenetére
Megoldva, nem volt telepítve a php-xml
-
trisztan94
őstag
Még egy kérdésem lenne, PHPExcel-el kapcsolatban.
A következő kódot próbálom használni egy xlsx írásához:
$data = $_POST["data"];
try {
require('PHPExcel.php');
$objPHPExcel = new PHPExcel();
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
$objWriter->setOffice2003Compatibility(true);
$objSheet = $objPHPExcel->getActiveSheet();
$objSheet->setTitle('Profiútvonal letöltés');
for ($i = 1; $i <= count($data); $i++) {
$cella = "A".$i;
$cellb = "B".$i;
$cellc = "C".$i;
$objSheet->getCell($cella)->setValue($data[$i-1][0]);
$objSheet->getCell($cellb)->setValue($data[$i-1][1]);
$objSheet->getCell($cellc)->setValue($data[$i-1][2]);
}
$objWriter->save("valami.xlsx");
echo json_encode(Array("Result" => "OK", "data" => $data));
}
catch (Exception $e)
{
echo json_encode(Array("Result" => $e));
}De elszáll ezzel a hibával:
Fatal error: Class 'XMLWriter' not found in /vagrant/php/PHPExcel/Shared/XMLWriter.php on line 44
Most szedtem le egy friss PHPExcelt. Mit rontottam el?
-
trisztan94
őstag
Hali
Vagrantot használok PHP fejlesztéshez. A box a tárhelypark blogjából letöltött box, mert elsősorban az a célkörnyezet.
Na most az a problémám, hogy hibákat nem ír. Akármi szintaktikai, kutyfosnyi hiba van, rögtön 500 Internal Server Error-t kapok, ami nem túl jó debugolásra. Gondolom a PHP.ini-ben van letiltva a hiba megjelenítés, viszont nagyon nem vágom, hogy hogyan kell SSH-zni.
Tudna nekem valaki ebben segíteni? Hogyan tudom terminalból átírni (bessh-zva a boxba) a php.init?
Vagy ha nem az a probléma, mitől lehet ez?
Koszi!
-
trisztan94
őstag
válasz
helpmepls88 #15642 üzenetére
Hát mivel DOM-ot manipulálsz, ezért ez javascripttel kellene csinálni.
(#15643) DeltaPower
-
trisztan94
őstag
válasz
PumpkinSeed #15539 üzenetére
De nem csak kisbetűssé kellett a kérdezőnek alakítania. Gondolom valami URL/URI barát név kell neki, tehát ki kell szedni az ékezeteket, a szóközöket lecserélni aláhúzásokra, stb.
-
trisztan94
őstag
válasz
csabyka666 #15473 üzenetére
-
trisztan94
őstag
válasz
csabyka666 #15471 üzenetére
-
trisztan94
őstag
válasz
PumpkinSeed #15446 üzenetére
Titkosításhoz menjen HTTPS protokoll alatt.
-
trisztan94
őstag
válasz
Speeedfire #15368 üzenetére
Vannak itt szépek
Saját?
-
trisztan94
őstag
válasz
kemkriszt98 #15357 üzenetére
Utf-8 without boomboom
-
trisztan94
őstag
válasz
Sk8erPeter #15339 üzenetére
nem biztos, hogy feltétlenül kell irányítószám
De kelljen
Ha nem követelem meg, hogy legyen benne szépen irányítószám + város + teljes cím, akkor a hülyének rossz találatokat is berakhat az útvonalba a dolog (Például, ha csak annyit ír be, hogy Kossuth Lajos utca. Hát abból kb. városonként 4 db van) és akkor nekem jön majd a zugatás, hogy "szarul tervez".
Tehát egyszerűen vagy pontosan adja meg, vagy sehogy. Amúgy is ez egy ilyen full automatizált dolog, tehát feltölti, feldolgozza, elküldi a txt fájlt a batch geocoder-nek, folyamatosan figyeli a response-t, amikor kész, akkor letölti a feldolgozott fájlt (tehát geocode-olt címeket), megint feldolgozza és végül megtervezi az útvonalat. Nincs közben idő arra, hogy "nem úgy értetted, hogy...x". Főleg, hogy nem 10-15 címmel, hanem 500-1.000.000 címmel dolgozunk (jó, sosem lesz az 1.000.000, de az a maximum amit elbír), ekkora mennyiségnél egyszerűen nincs lehetőség megkérdezni, hogy úgy gondolta e. -
trisztan94
őstag
válasz
Sk8erPeter #15336 üzenetére
+(#15335) moltam88
Köszi srácok!
Igazából nem az egész címre kell a csekkolás, tehát, hogy milyen formában írta bele a felhasználó, csupán azt kell nézni, hogy egyáltalán cím-e. Amúgy is csak akkor tud vele valamit kezdeni a geocoder, ha irányítószámmal kezdődik, tehát szvsz bőven elég az, hogy megnézzük, hogy 4 számmal kezdődik-e (esetleg egy magyar irányítószámok adatbázison még átfuttathatjuk). A többi lényegtelen, mert elég okos a cucc, ismeri a közterületek neveinek rövidítését (u., krt., stny., stb), az sem okoz neki gondod, ha többféleképpen van leírva a házszám (7/b, 7b, stb).
Szvsz összesen 3 lehetőség van:
rossz az irányítószám -> error
jó az irányítószám -> a címet is sikerült geocode-olni -> pass
jó az irányítószám -> hibás a cím -> error -
trisztan94
őstag
válasz
trisztan94 #15332 üzenetére
Jó, tényleg nem megy a gondolkodás, megvan a megoldás. A $string.='"'.$temp; utasítást a belső ciklusban hagytam véletlenül, kirakva a belső ciklus utánra már no problem.
Thx
-
trisztan94
őstag
válasz
moltam88 #15330 üzenetére
Köszi!
-----
(#15331) moltam88Így csináltam:
for($row = 1; $row <= $lastRow; $row++)
{
$string = $row . "|";
$temp = "";
foreach ($columns as $column)
{
if($worksheet->cellExists($column.$row))
{
$cell = trim($worksheet->getCell($column.$row)->getValue());
$temp.=$cell.' ';
}
$string.='"'.$temp;
}
$string = trim($string);
$string.='"|HUN'.PHP_EOL;
fwrite($fileHandle, $string);
}Ennek ez lett az eredménye:
3|"1158 "1158 Budapest "1158 Budapest Késmárk u. 7/b. "1158 Budapest Késmárk u. 7/b."|HUN
Így kellene kinéznie:
3|"1158 Budapest Késmárk u. 7/b."|HUN
Mit csinálok szarul?
Elég kába vagyok, jól megfáztam, nem nagyon megy a gondolkodás
-
trisztan94
őstag
válasz
trisztan94 #15328 üzenetére
Másik dolog,
Azt is ki kellene szűrni, ha hülye user úgy tölt fel egy .xls-t, hogy nem minden sorban van adat, vagy éppen rossz adat van benne, mondjuk pl. benne hagyják a fejlécet.
Azt, hogy üres-e a cella egy sima $cell != '' elágazással ellenőrzöm.
Az biztos, hogy a cím egy irányítószámmal kezdődik, amit egy városnév követ, utána egy utca majd házszám, tehát erre szerintem egy Regexp lenne a legjobb, nem? Elég lenne azt csekkolni, hogy van-e egy négyjegyű szám a string elején? Ha igen, tudnátok nekem írni erre egy regexpet pls?Így néz ki egy sample string:
1158 Budapest Késmárk u. 7/b.
-
trisztan94
őstag
Hali
A térképes app amit csinálok xls fájlokból (is) dolgozik. Feltölt a júzer egy xls-t vagy xlsx-et és az abban található címekből összerak egy útvonalat.
Eddig úgy volt, hogy a cím darabjai fixen az I, J, K és L oszlopokban voltak (irányítószám, város, utca, házszám), viszont most kiderült, hogy úgy kellene, hogy a felhasználó kiválaszthassa feltöltéskor, hogy melyik oszlop(ok)ban van a cím. Tehát le kell kezelni azt is, ha az egész cím egy oszlopban van, meg ha több oszlopban van és össze kell fűzni a végén..Ez volt az eddigi kódom:
for($row = 1; $row <= $lastRow; $row++)
{
$string = $row . "|";
for($column = 'I'; $column != 'M'; $column++)
{
if($worksheet->cellExists($column.$row))
{
$cell = $worksheet->getCell($column.$row)->getValue();
switch($column){
case 'I':
$string.= '"'.trim($cell).' ';
break;
case 'J':
$string.= trim($cell).' ';
break;
case 'K':
$string.= trim($cell).' ';
break;
case 'L':
$string.= trim($cell);
break;
}
}
}Ez nagyon szépen kiszedte az eredményeket és összefűzte a stringeket.
Most, hogy ez ki lett találva, átalakítottam erre:
for($row = 1; $row <= $lastRow; $row++)
{
$string = $row . "|";
foreach ($columns as $column)
{
if($worksheet->cellExists($column.$row))
{
$cell = $worksheet->getCell($column.$row)->getValue();
switch($column){
case $columns[0]:
$string.= '"'.trim($cell).' ';
break;
case $columns[1]:
$string.= trim($cell).' ';
break;
case $columns[2]:
$string.= trim($cell).' ';
break;
case $columns[3]:
$string.= trim($cell);
break;
}
}
}
}Ez így rendesen működik is akkor, ha 4 oszlopban van a cím.
A kérdés az lenne, hogy hogyan tudom megcsinálni, hogy akkor is működjön, ha kevesebb, mint 4 oszlopban van a cím?
A $columns változó egy tömb, pl:
[0]=>A
[1]=>B
stbMindig annyi elem van benne, amennyit kiválasztott a júzer.
-
trisztan94
őstag
válasz
Sk8erPeter #15315 üzenetére
Jogos.
Csak rossz tapasztalataim vannak egy Postre-hez kotodo meloval, ezert valoban kicsit elfogult vagyok ilyen teren.
-
trisztan94
őstag
válasz
Dave-11 #15312 üzenetére
Így berakja szóköz nélkül?
$q = $db->prepare("INSERT INTO tabla (nev) VALUES (:nev)");
$q->execute(array(":nev" => trim($aktualis_nev)));Lehet az a baja, hogy nem adtál meg neki hosszt. Sokat szptam korábban egy PostgreSQL adatbázis miatt. Miért nem MySQL-t használsz?
"A varchar alatt a character varying-ot érted?"
-
trisztan94
őstag
Nem tudom, hogy az előzőek után mennyire merjek itt kérdezni, egyszer megpróbálom még..
----
PHP cURL request-et szeretnék küldeni egy REST API felé. Sosem használtam cURL-t, tehát fogalmam sincs, hogy hogyan kell kinéznie, nagyon sok a doksi és holnapra ennek meg kellene lennie. Tehát ha úgy vesszük, szívességet kérnék.
Az API dokumentációjában azt írták, hogy így kell kinéznie egy cURL request-nek:add the following header: Content-Type: text/plain
submit the payload using the --data-binary parameterÉs itt egy sample request:
curl -X POST -H "Content-Type: text/plain" --data-binary @addresses.txt
"http://batch.geocoder.cit.api.here.com/6.2/jobs?
&app_code=AJKnXv84fjrb0KIHawS0Tg
&app_id=DemoAppId01082013GAL
&action=run
&header=true
&inDelim=;
&outDelim=,
&outCols=recId,latitude,longitude,locationLabel
&mailto=<my_email>
&outputcombined=true
&language=de-DE"Ezt sikerült eddig összehegesztenem:
$cURLHandler = curl_init();
curl_setopt($cURLHandler, CURLOPT_HTTPHEADER, array('Content-Type: text/plain'));
curl_setopt($cURLHandler, CURLOPT_BINARYTRANSFER, true);
curl_setopt($cURLHandler, CURLOPT_POST, true);
$url = "";
if($cURLHandler) {
}
else {
throw new RuntimeException("Nem sikerült felvenni a kapcsolatot egy távoli szerverrel.");
}Tehát megadtam a header-t, a binarytransfer paramétert és azt, hogy HTTP POST-al küldje.
Kérdések
Mi az a -X és -H és hogyan kell őket megadni PHP-ban?
Hogyan tudom megadni a fájlt amit küldenék? (a fenti példában @addresses.txt)
Hogyan tudom megadni az url-t amire menjen a kérés?
Hogyan tudok az URL-hez paramétereket hozzáadni? Simán ¶mnév=érték-kel az URL-hez hozzáfűzve, vagy azt is külön kell?Illetve még annyi, hogy így kell-e kinéznie a cURL request-nek?
-
trisztan94
őstag
válasz
Sk8erPeter #15291 üzenetére
+ (#15294) moltam88
Ja, végül rájöttem. Múltkor a jQuery topikban volt szó erről, a PageSlide plugin amit használok valamiért duplikálja a div-et ami az oldalban van, ezért lett két form.(#15292) cucka + (#15293) Sk8erPeter + (#15295) cucka + (#15296) Sk8erPeter
Szerintem nem értettétek meg rendesen a problémát
. Kva mindegy, hogy milyen az a kód, egy tetves tutorial alapján csináltam, ott volt ez a kód. Most, hogy rájöttem a hibára és működésre bírtam, szerintetek azt a kódot használom?
Tegnap volt a határidő. Nem engedhettem meg magamnak, hogy írjak egy normális kódot, amikor bizonytalan volt, hogy egyáltalán így lesz-e csinálva. Olvastam a tutorialt, kimásoltam belőle a kódot, átírkáltam néhány helyen. Kövezzetek meg pls.
Ahelyett, hogy ez akár fel is merült volna bennetek, megy itt a mocskolódás, hogy kiég a retinám, meg hogy vérezhetek el ilyenen, egyáltalán nem értek a dologhoz, ezért inkább előbb olvassak, tanuljak meg debugolni, mekkora szar vagyok, hogy nem emlékeztem arra, hogy egy tetves jQuery plugin duplikálja a kódomat (fogadok a következő az lesz, hogy miért nem cserélted még le. Elébe vágok: Mert rohadtul nem volt arra időm, hogy lecseréljem, azé'), stb..Kezd a tököm kilenni ezzel a fórummal, tipikus nagyképű stílusban kell mindent mondani, majd ócsárolni szépen a másikat.
-
trisztan94
őstag
válasz
trisztan94 #15286 üzenetére
Megvan a megoldás!
Valami számomra érthetetlen okból, a formdata változónak nem a form 0. elemét, hanem az 1. elemét kellett átadni.
Itt van a SO kérdésem, a kommentekben lehet olvasni a tippeket.
-
trisztan94
őstag
válasz
DNReNTi #15287 üzenetére
Csórt kód.
Nyilván nem ezt használnám élesben, de sehogy sem megy.
Most kicsit egyszerűbb kóddal próbálkozom:
if(!empty($_FILES['xls'])) {
echo '<pre>',print_r($_FILES,1),'</pre>';
}
else {
die('POST ÜRES');
}Ezt dobja a print_r():
Array
(
[xls] => Array
(
[name] =>
[type] =>
[tmp_name] =>
[error] => 4
[size] => 0
)
)Fogalmam sincs, hogy mi az a 4 error.
-
trisztan94
őstag
válasz
Tele von Zsinór #15275 üzenetére
Nagyon jó a post, köszönöm!
Más:
HTML5-ös ajax fájlfeltöltéssel bénázom nagyon (ez lehet inkább jQuery topikba kellene, de nagyon úgy érzem PHP oldalon van a probléma)
Tehát egy SO-n 50+ upvote-olt válasz volt, többen is írták, hogy működik..
Van ez a formom:
<form name="form-uploadXLS" id="form-uploadXLS" method="post" action="php/uploadXLS.php" enctype="multipart/form-data" >
<hr />
<div class="form-group">
<div class="col-md-12">
<input type="file" name="xls" class="xls" />
</div>
</div>
<input type="submit" value="Feltöltés" class="btn-uploadXLS" />
</form>Az lenne a lényeg, hogy csak .xls vagy .xlsx fájlt lehessen feltölteni, de az most teljesen mindegy.
Itt a jQuery kód ami lekezelné:$('#form-uploadXLS').on('submit', function (event) {
console.log("submitted");
event.preventDefault();
var formData = new FormData($('#form-uploadXLS')[0]);
$.ajax({
url: 'php/uploadXLS.php',
type: 'POST',
success: function(data) {
console.log("success");
console.log(data);
},
error: function(msg) {
console.log("error");
console.log(msg);
},
data: formData,
cache: false,
contentType: false,
processData: false
}, 'json');
});És itt a mögötte lévő PHP:
if(isset($_FILES["xls"]) && $_FILES["xls"]["error"]== UPLOAD_ERR_OK)
{
############ Edit settings ##############
$UploadDirectory = $_SERVER['SERVER_NAME'].dirname($_SERVER["REQUEST_URI"]) . '/xls/';
##########################################
/*
Note : You will run into errors or blank page if "memory_limit" or "upload_max_filesize" is set to low in "php.ini".
Open "php.ini" file, and search for "memory_limit" or "upload_max_filesize" limit
and set them adequately, also check "post_max_size".
*/
//check if this is an ajax request
if (!isset($_SERVER['HTTP_X_REQUESTED_WITH'])){
die();
}
//allowed file type Server side check
switch(strtolower($_FILES['xls']['type']))
{
//allowed file types
case 'application/vnd.ms-excel':
break;
default:
die('Nem támogatott fájlformátum!'); //output error
}
$File_Name = strtolower($_FILES['xls']['name']);
$File_Ext = substr($File_Name, strrpos($File_Name, '.')); //get file extention
$Random_Number = rand(0, 9999999999); //Random number to be added to name.
$NewFileName = $Random_Number.$File_Ext; //new file name
if(move_uploaded_file($_FILES['xls']['tmp_name'], $UploadDirectory.$NewFileName ))
{
// do other stuff
die('Sikeres feltöltés!');
}else{
die('Hiba történt a feltöltés során!');
}
}
else
{
die('wtf');
}(Ezt is SO-ról csórtam)
Na akármit csinálok, mindig a "wtf" hibaüzenetet kapom.
Elvileg a formData üres, de megint csak elvileg annak mi nem is láthatjuk a tartalmát.
HTTP 200 OK-al jön vissza a wtf hibaüzenet?
Könyvtárak helyét, nevét ellenőriztem, a php.ini-t is.
Mit nem veszek észre?
-
trisztan94
őstag
Sziasztok!
Jelszó hash-eléssel kapcsolatban lenne egy kérdésem.
Ha jól értettem a leírásokat, az a legbiztonságosabb, ha a jelszóhoz hozzáadunk egy egyéni salt-ot. Eddig md5-öt használtam, de az tudjuk, hogy mennyire nem biztonságos.
Tehát amikor regisztrál a felhasználó, akkor generálok egy salt-ot, majd base64_encode()-al hashelem a jelszó+salt kombót?
Ezek után, berakom az adatbázisba a hashelt jelszót és egy külön oszlopba a salt-ot?
Tehát amikor bejelentkezni akar a júzer, akkor előbb egy query-vel kiszedem a salt-ot, majd hozzáadom a jelszóhoz, megint csinálok ebből egy hash-t és csekkolom, hogy egyezik-e az adatbázisban lévő jelszóval?
Így kell ezt csinálni? Ha nem, akkor hogyan kell rendesen?
Ez a kód, amit a salt létrehozásához használok:
base64_encode(mcrypt_create_iv(24, MCRYPT_DEV_URANDOM));
Szerk:
Egy másik gyors kérdés.
Include-olva van egy fájlomban az adatbázis kapcsolódás, a PDO osztály példánya a $conn változóban van. Na most ezt a változót használnám azon a lapon, amibe be van include-olva, viszont netbeans aláhúzza, hogy uninitalized. Működik attól még, annyi érdekelne, hogy csak a jelenlegi scope-ban nem találja, vagy kell-e ezzel egyáltalán foglalkozni?
-
trisztan94
őstag
válasz
Peter Kiss #15261 üzenetére
+ (#15262) fordfairlane
Köszönöm szépen, így már sokkal tisztább a kép. Nekiesek majd valamikor jövőhéten egy új projektnek, ott megpróbálom majd implementálni ezeket.
Köszi mégegyszer uraim!
-
trisztan94
őstag
válasz
Sk8erPeter #15259 üzenetére
Tisztán szeretnék látni, nem akarok több felesleges hülyeséget csinálni, mint ahogyan most kiderült, hogy a PDO osztályom is az volt.
-
trisztan94
őstag
válasz
Peter Kiss #15256 üzenetére
Tehát ha jól értem, teljesen jó az, ha a PDO-val kapcsolatos dolgokat csak beírom a kódomba ahová kell?
Tehát mondjuk adatbázis kapcsolódás az most a database.php fájlban van, abban van ez az osztály. Tehát konkrétan csak oda beírom azt ami a konstruktorban van, majd ha kell egy másik fájlban az ab, akkor csak importálom a database.php-t és csak beírom abba a fájlba a query-ket majd futtatom őket a database.php-s PDO példányommal?
Vagy hogy lenne jó alkalmazni?
-
trisztan94
őstag
válasz
Sk8erPeter #15247 üzenetére
Nem hulyeseg.
Gettype-al valahogy igy nezne ki a switch, nem?
switch (gettype($value)) {
case "integer"
$type = PDO::PARAM_INT;
break;
case "boolean":
$type = PDO::PARAM_BOOL;
break;
case "NULL":
$type = PDO::PARAM_NULL;
break;
default:
$type = PDO::PARAM_STR;
}Viszont amit elozo hsz.-emben bemasoltam, az egesz kod a fajlban, megis parse errort kapok
Hogy erted azt, hogy bebugyolaltam egy metodust egy masikbs?
-
trisztan94
őstag
Készítettem egy PDO kezelő osztályt.
<?php
class Database {
private $host = DB_HOST;
private $user = DB_USER;
private $pass = DB_PASS;
private $dbname = DB_NAME;
private $dbh;
private $error;
private $stmt;
public function __construct(){
$dsn = 'mysql:host=' . $this->host . ';dbname=' . $this->dbname;
$options = array(
PDO::ATTR_PERSISTENT => true,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
);
try{
$this->dbh = new PDO($dsn, $this->user, $this->pass, $options);
}
catch(PDOException $e){
$this->error = $e->getMessage();
}
}
public function query($query){
$this->stmt = $this->dbh->prepare($query);
}
public function bind($param, $value, $type = null){
if (is_null($type)) {
switch (true) {
case is_int($value):
$type = PDO::PARAM_INT;
break;
case is_bool($value):
$type = PDO::PARAM_BOOL;
break;
case is_null($value):
$type = PDO::PARAM_NULL;
break;
default:
$type = PDO::PARAM_STR;
}
}
$this->stmt->bindValue($param, $value, $type);
}
public function execute(){
return $this->stmt->execute();
}
public function resultset(){
$this->execute();
return $this->stmt->fetchAll(PDO::FETCH_ASSOC);
}
public function single(){
$this->execute();
return $this->stmt->fetch(PDO::FETCH_ASSOC);
}
public function rowCount(){
return $this->stmt->rowCount();
}
public function lastInsertId(){
return $this->dbh->lastInsertId();
}
public function beginTransaction(){
return $this->dbh->beginTransaction();
}
public function endTransaction(){
return $this->dbh->commit();
}
public function cancelTransaction(){
return $this->dbh->rollBack();
}
public function debugDumpParams(){
return $this->stmt->debugDumpParams();
}
}
?>Parse error:
PHP Syntax Check: Parse error: syntax error, unexpected '{' in your code on line 36
if (is_null($type)) {Ez a bind() függvénynél van
Na én már vagy fél órája nézem a kódot, de nem látom, hogy hol rontottam el a szintaktikát
Ti láttok valamit?
-
trisztan94
őstag
válasz
don_peter #15197 üzenetére
Mac laposom van és rohadt bonyolult benne ezen karakterek beírása
Éppen ma jöttem rá, hogy a jobb és bal kacsacsőröket gyakorlatilag a Jobb ALT+SHIFT+Y-X gombokkal tudom beírni...Én is Mac-ről nyomom, megszokás kérdése.
Amúgy meg baloldali shift-alt-y a <, shift-alt-x pedig a >. -
trisztan94
őstag
válasz
DNReNTi #15168 üzenetére
Én már futottam bele céges intranetre szánt megrendelésnél abba, hogy miután leadtam kb. rögtön hívtak, hogy az ékezetes betűk viccesen jelennek meg. Kiderült, hogy FF2.0 és IE6-hoz vannak kötve, ami nem támogatja a HTML5-öt. És persze a helyi rendszergazda nagy arrogánsan csak annyit írt: "Megoldottam, ezt a varázslatos sort hagytad ki az oldalból: --html4 charset -- Legközelebb figyelni kellene erre."
Azóta amikor eszembe jut, mindig a HTML4-es UTF-8 karakterkódolást adom meg a biztonság kedvéért. -
trisztan94
őstag
válasz
#68216320 #15155 üzenetére
Nem tudsz class-t adni a kepekhez? Onnantol kezdtve csak jQuery.attr() fuggvennyel tudod cserelni a href-et es .before-al es .after-el beszurni az a tag-eket.Ha nem tudsz osztalyt hasznalni, akkor meg egy tag selectorral is meg lehet ugyanezt csinalni.Jo, most esett le, hogy ez a PHP topik, es nem a weblap Keszites..
Es hogy PHP-val kell megoldani, ugy most hirtelen nincs otletem.
-
trisztan94
őstag
Mivel a Brackets html + js + css-el lett írva, így a program és főleg a pluginek platformfüggetlenek.
FTP plugin, de mindenképp a program pluginkezelőjével kell felrakni.
-
trisztan94
őstag
válasz
mnorbi89 #15112 üzenetére
Szerintem olvass utána egy kicsit a php-nak, hogyan működik, legyél tisztában az alapjaival, mert látszik, hogy egyáltalán nem konyítasz hozzá. Alapzat nélkül nem lehet házat építeni.
PumpkinSeed-ről tudom, hogy ő is könyvből tanult meg PHP-zni, kérdezd meg tőle miből tanult.
-
trisztan94
őstag
hirtelenjében a következő ötlet jutott eszembe: először lekérdeződik mondjuk 30 sor, user scrollol, ha a page 3/4-énél jár (mondjuk jquery onscroll-al), akkor jön egy ajax hívás, hogy a következő 30-as blokkot kérdezze le, és az eredményt beillesztem a html tábla végére
Pont erre való a LazyLoad.
-
trisztan94
őstag
válasz
Sk8erPeter #15025 üzenetére
Maximalisans egyetertek. En is nezegettem korabban a BBCode-ot, de egyszeruen nem ertettem mi ertelme van ennek. Nem sokkal bonyolultabb html tageket hasznalni, cserebe sokkal atlathatobb.
Vagy ha mar mindenkepp valami html-tol fuggetlen formazasi nyelvet akar az ember, akkor markdown. Annak is baromi egyszeru a szintaktikaja es nagyon lightweight (nem veletlenul hasznalja a Reddit, SO, stb)
-
trisztan94
őstag
válasz
Speeedfire #14970 üzenetére
Szerintem csak pointer, legalábbis a legtöbb normális OOP nyelv így működik.
-
trisztan94
őstag
válasz
PumpkinSeed #14960 üzenetére
Egy fény nélküli szénakazal.
-
trisztan94
őstag
válasz
csabyka666 #14957 üzenetére
Akkor félreértettem.
Tehát nem az a baj, hogy nem fut le az SQL fetch minden id-re?
Azt írtad, hogy a $value értéke az jó a foreach-ben, mert kiírva rendesen írta ki. Akkor itt az egyedüli dolog ami kell az, ohgy a foreach cikluson belül minden egyes ciklusba lépéskor fetch-eled.
Nem tudsz kódot mutatni? Így elég nehéz a sötét szénakazalban megtalálni azt az egy szénaszálat, ami neked kell.
-
trisztan94
őstag
válasz
csabyka666 #14955 üzenetére
Berakod a PDO (vagy MySQLi) query-t futtató kódot a foreach-be.
-
trisztan94
őstag
válasz
PumpkinSeed #14952 üzenetére
-
trisztan94
őstag
válasz
PumpkinSeed #14946 üzenetére
Nem localhost.domain.hu-ra gondolt az admin? Mert már láttam olyat.
-
trisztan94
őstag
-
trisztan94
őstag
válasz
Sk8erPeter #14838 üzenetére
Ezen jót mosolyogtam, pedig tiszta ideg vagyok.
-
trisztan94
őstag
válasz
Sk8erPeter #14834 üzenetére
Késő van, stressz van, mert jön a határidő. Muszáj volt kérdeznem, mert nem nagyon van időm akármivel is bénázni (sőt, PH!-zásra sem lenne időm
), de mire leírtam meg is oldottam. Nagyjából.
-
trisztan94
őstag
válasz
Sk8erPeter #14832 üzenetére
Jelen esetben sem MySQLi-t, sem PDO-t nem tudok használni. Ez egy másik csapat összegányolt mocsadéka, amit nekem kell most működésre bírnom. Megrendelő azt kérte, hogy holnap-holnapután indulhasson el a dolog, amint elindult rögtön újraírjuk nulláról, normálisan.
PostgreSQL lekérdezések vannak, pg_fetch_array meg társaik. Mondjuk igen, elég ótvar a tömbözés, de az egész így van írva, nincs lelki erőm átírogatni mindent.
-
trisztan94
őstag
Hogyan tudom csekkolni, hogy egy változó értéke egyenlő-e egy asszociatív tömb indexével?
pl
tömb:
Array
(
[19] => Y
[page_1] => Y
[20] => N
[page_2] => N
[21] => Y
[page_3] => Y
[22] => Y
[page_4] => Y
[23] => N
[page_5] => N
)(csomó mindent kiszedtem most, ez print_r output)
változóm értéke:
$valtozo = "page_5";
tehát azt kellene ellenőrizni, hogy valtozo egyezik-e az egyik indexxel.. Lehet egyáltalán ilyet?
Szerk:
Megoldva, nagyon józan paraszti ésszel:
if ($data[$pageID] !== "N") {}
-
trisztan94
őstag
válasz
Sk8erPeter #14764 üzenetére
Igen, ha rossz az útvonal-megadás a fájlhoz, akkor teljesen "normális", hogy 500 Internal Server Error a büntetésed.
Na ez az amit nem tudtam!
Pedig direkt nézegettem az apache error logokat, de ott sem láttam semmit. Néha amúgy elég érdekesen működik, bejön a login ablak, beírom az adatokat és kapom az Internal Server Error-t, máskor még a login ablak sem jön be.
Nem tudom amúgy, hogy miért relatív útvonalat adtam neki, megpróbálom mindjárt ahogy írtad, abszolút útvonallal.Köszi!
-
trisztan94
őstag
válasz
Sk8erPeter #14761 üzenetére
Olvastam már, nézegettem is már. Nem az útvonal a legnagyobb probléma, vágom ám, hogy hogyan működnek az útvonalak, csak biztosra akartam menni. De attól függetlenül még mindig nem tudom tesztelni, hogy jó helyen van-e, mert akárhova rakom a auth kódot a .htaccess-ben, mindig internal server error-t kapok.
-
trisztan94
őstag
Sziasztok!
Korábban kérdeztem a .htaccess-es jelszóvédelemről. Na most itt próbálkozok vele egy ideje, de mindig 500-as server hibát dobál. Elég nagy a .htaccess, biztos rossz helyre pakolom. Így néz ki most a fájl:
#
# Apache/PHP/Drupal settings:
#
# Protect files and directories from prying eyes.
<FilesMatch "\.(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl|svn-base)$|^(code-style\.pl|Entries.*|Repository|Root|Tag|Template|all-wcprops|entries|format)$">
Order allow,deny
</FilesMatch>
# Don't show directory listings for URLs which map to a directory.
Options -Indexes
# Follow symbolic links in this directory.
Options +FollowSymLinks
# Make Drupal handle any 404 errors.
ErrorDocument 404 /index.php
# Force simple error message for requests for non-existent favicon.ico.
<Files favicon.ico>
# There is no end quote below, for compatibility with Apache 1.3.
ErrorDocument 404 "The requested file favicon.ico was not found.
</Files>
# Set the default handler.
DirectoryIndex index.html index.php
# Override PHP settings. More in sites/default/settings.php
# but the following cannot be changed at runtime.
# PHP 4, Apache 1.
<IfModule mod_php4.c>
php_value magic_quotes_gpc 0
php_value register_globals 0
php_value session.auto_start 0
php_value mbstring.http_input pass
php_value mbstring.http_output pass
php_value mbstring.encoding_translation 0
</IfModule>
# PHP 4, Apache 2.
<IfModule sapi_apache2.c>
php_value magic_quotes_gpc 0
php_value register_globals 0
php_value session.auto_start 0
php_value mbstring.http_input pass
php_value mbstring.http_output pass
php_value mbstring.encoding_translation 0
</IfModule>
# PHP 5, Apache 1 and 2.
<IfModule mod_php5.c>
php_value magic_quotes_gpc 0
php_value register_globals 0
php_value session.auto_start 0
php_value mbstring.http_input pass
php_value mbstring.http_output pass
php_value mbstring.encoding_translation 0
</IfModule>
# Requires mod_expires to be enabled.
<IfModule mod_expires.c>
# Enable expirations.
ExpiresActive On
# Cache all files for 2 weeks after access (A).
ExpiresDefault A1209600
<FilesMatch \.php$>
# Do not allow PHP scripts to be cached unless they explicitly send cache
# headers themselves. Otherwise all scripts would have to overwrite the
# headers set by mod_expires if they want another caching behavior. This may
# fail if an error occurs early in the bootstrap process, and it may cause
# problems if a non-Drupal PHP file is installed in a subdirectory.
ExpiresActive Off
</FilesMatch>
</IfModule>
# Various rewrite rules.
<IfModule mod_rewrite.c>
RewriteEngine on
# If your site can be accessed both with and without the 'www.' prefix, you
# can use one of the following settings to redirect users to your preferred
# URL, either WITH or WITHOUT the 'www.' prefix. Choose ONLY one option:
#
# To redirect all users to access the site WITH the 'www.' prefix,
# (http://example.com/... will be redirected to http://www.example.com/...)
# adapt and uncomment the following:
# RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
# RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
#
# To redirect all users to access the site WITHOUT the 'www.' prefix,
# (http://www.example.com/... will be redirected to http://example.com/...)
# uncomment and adapt the following:
# RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
# RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]
# Modify the RewriteBase if you are using Drupal in a subdirectory or in a
# VirtualDocumentRoot and the rewrite rules are not working properly.
# For example if your site is at http://example.com/drupal uncomment and
# modify the following line:
# RewriteBase /drupal
#
# If your site is running in a VirtualDocumentRoot at http://example.com/,
# uncomment the following line:
# RewriteBase /
# Rewrite URLs of the form 'x' to the form 'index.php?q=x'.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
</IfModule>
# $Id: .htaccess,v 1.90.2.5 2010/02/02 07:25:22 dries Exp $
RewriteCond %{HTTP_HOST} ^fenykepespolo\.hu$ [OR]
RewriteCond %{HTTP_HOST} ^www\.fenykepespolo\.hu$
RewriteRule ^/?$ "http\:\/\/fenykepespolo\.hu" [R=301,L]
RewriteCond %{HTTP_HOST} ^gyermekpolo\.hu$ [OR]
RewriteCond %{HTTP_HOST} ^www\.gyermekpolo\.hu$
RewriteRule ^/?$ "http\:\/\/gyermekpolo\.hu" [R=301,L]
RewriteCond %{HTTP_HOST} ^horoszkopospolo\.hu$ [OR]
RewriteCond %{HTTP_HOST} ^www\.horoszkopospolo\.hu$
RewriteRule ^/?$ "http\:\/\/horoszkopospolo\.hu" [R=301,L]
RewriteCond %{HTTP_HOST} ^noipolo\.hu$ [OR]
RewriteCond %{HTTP_HOST} ^www\.noipolo\.hu$
RewriteRule ^/?$ "http\:\/\/noipolo\.hu" [R=301,L]
RewriteCond %{HTTP_HOST} ^emblemazottpolo\.hu$ [OR]
RewriteCond %{HTTP_HOST} ^www\.emblemazottpolo\.hu$
RewriteRule ^/?$ "http\:\/\/pologuru\.hu" [R=301,L]
RewriteCond %{HTTP_HOST} ^pologuru\.hu$ [OR]
RewriteCond %{HTTP_HOST} ^www\.pologuru\.hu$
RewriteRule ^/?$ "http\:\/\/pologuru\.hu" [R=301,L]
RewriteCond %{HTTP_HOST} ^szulinapipolo\.hu$ [OR]
RewriteCond %{HTTP_HOST} ^www\.szulinapipolo\.hu$
RewriteRule ^/?$ "http\:\/\/szulinapipolo\.hu" [R=301,L]
#
#RewriteCond %{HTTP_HOST} ^jelespolo\.hu$ [OR]
#RewriteCond %{HTTP_HOST} ^www\.jelespolo\.hu$
#RewriteRule ^/?$ "http\:\/\/gyermekpolo\.hu" [R=301,L]
#
#RewriteCond %{HTTP_HOST} ^csakrapolo\.hu$ [OR]
#RewriteCond %{HTTP_HOST} ^www\.csakrapolo\.hu$
#RewriteRule ^/?$ "http\:\/\/horoszkopospolo\.hu" [R=301,L]Hová pakoljam ezt a kódot:
AuthUserFile /.htpasswd
AuthType Basic
AuthName "Jelszoval vedett tartalom"
Require valid-userMég egy kérdés: a .htaccess a public_html mappa gyökerében van, a .htpasswd fájlt pedig egy mappával feljebb, a gyökér mappában van ("/"). Jól írtam az útvonalat?
Amúgy nem én írtam a .htaccess-t, egy korábbi srác munkáját fejezem be. Eléggé fogom mondjuk miatta a fejem, sok hülyeség van.
-
trisztan94
őstag
válasz
Tele von Zsinór #14752 üzenetére
Király, köszönöm!
honnan jön ez az adat eredetileg?
Ez egy PostgreSQL tömb, annak ez a formátuma. Tényleg eléggé hasonlít a JSON-ra most, hogy így mondod, megpróbálom majd ha lesz egy kis szabadidőm a JSON encode-dal. -
trisztan94
őstag
Sziasztok!
PostgreSQL adatbázisból lekérek egy tömböt, ilyen formában kapom vissza:
{alma,barack,körte}
Ebből nekem ilyet kellene készítenem:
alma, barack, körte
Ennek eléréséhez ezt a kódot használom:
$karakterek = array("{", "}");
$eddigiKategoriakRosszVesszokkel = str_replace($karakterek, "", $shirtImagesDb->categories);
$eddigiKategoriakJoVesszokkel = str_replace(",", ", ", $eddigiKategoriakRosszVesszokkel);Itt ugye az a lényeg, hogy a vesszők mögé be kell rakni egy szóközt. Lehet ezt valahogy egyszerűbben és szebben egyszerre csinálni a { és } karakterek eltávolításával, vagy jó így?
-
trisztan94
őstag
válasz
Sk8erPeter #14673 üzenetére
Na hát igen, ez az a pillanat amikor nem tudok mit mondani.
Utánanéztem, tényleg irdatlan nagy hülyeséget mondtam
Az az igazság, hogy sosem néztem nagyon bele ezekbe, mondhatjuk azt is, hogy "találgattam" a működésüket. Jó, nyilván nem találgattam, a titkosítottat sem úgy értettem (mert ugye az csak https-el van).
Minden jó, ha a vége jó: utánanéztem, most már kenem-vágom a témát. Mindennap tanul valamit az ember
-
trisztan94
őstag
válasz
Fecogame #14665 üzenetére
Az általános kérések GET-tel mennek a szerver felé. Egy ilyen GET kérésben lehet pluszinfó is, pl. változók. Erre egy nagyon jó példa itt a PH! működése, ennek a hsz. író felületnek ez a GET kérése:
http://prohardver.hu/muvelet/hsz/uj.php?thrid=552418&rtoid=14665
Ez lefordítva magyarra:
http kapcsolattal menj fel a prohardver.hu domain alatt lévő muvelet mappában lévő hsz mappán belülre, ott futtatsd le az uj.php fájlt. + vannak változók is, a thrid és az rtoid. Ebből a thrid az a "thread identification", azaz a topik egyedi azonosítója, a rtoid pedig a hsz.-ed azonosítója amire válaszolok. Ezekből a változókból, meg még egy pár dologból rakja magát össze ez a rendszer.
Na most ennek a kinyerése roppant egyszerű:
[link]A másik lehetőség a POST kérés, ami egy titkosított kérés. Ezt általában regisztrációs felületeken, login felületeken, vagy bármi olyanon szokták használni, ami titkosítást igényel. Cserébe nyilván sokkal lassabb, mint a GET. Ezt kinyerni szinte lehetetlen, ebben a topikban nem is foglalkozunk ezzel, nem akarjuk, hogy bárki kivegye más oldalak POST kéréseit. Mert az nagyon rossz lenne.
-
trisztan94
őstag
válasz
PumpkinSeed #14652 üzenetére
Szebb úgy, ha a string összefűzést egy külön változóban csinálod, majd azt adod meg, mint index
for($i=0;$i<7;$i++)
{
$index = "input_".$i;
$input = $_POST[$index];
echo $input;
}Később sokkal átláthatóbb lesz.
-
trisztan94
őstag
válasz
Sk8erPeter #14479 üzenetére
Szép is lenne, ha egy weboldal tudná kezelni a felhasználó hardvereit. Milyen vírusok lennének már
-
trisztan94
őstag
válasz
Sk8erPeter #14452 üzenetére
"Nyilván azért tartoznak a legnépszerűbb IDE-k közé a NetBeans, meg az Eclipse is, mert akkora szarok."
Nem magák az IDE-k a szarok, hanem az, hogy Java-ban vannak írva. Persze, azt megértem, hogy így egyszer kell csak megírni a kódot, ami kb. egy univerzális alkalmazást ad, amit minden Java-t támogató op. rendszeren tudsz futtatni. De azért valljuk be, ha egy natív IDE-t kifejlesztenének, legyen most Windows vagy OSX, tök mindegy, ami ugyan azokat a dolgokat tudja, mint a Java-ban írt társuk, akkor te is a natívat használnád, mert sokkal gyorsabb lenne
Most egy picit ki is forgathatnám a szavad azzal, hogy: Azért használod a NetBeans-t meg az Eclipse-t, mert nincs más normális alternatíva. (vágom, hogy van Aptana, meg Komodo, meg PHPStorm, de most egyrészt OpenSource és operációs rendszer natív alkalmazásról beszélek)
"vettél fél milkáért egy Macet, mert az menő, és azóta folyamatosan szenvedsz vele. Megérte?"
Nem fél millióért vettem, "csak" 200.000,- pénzért. Most ezt ha összevetjük a profi Windows alapú gépekkel, akkor kb. egy szinten van: i5 2.4ghz, 4gb ram, 500gb hdd, 7-8 órás akku. Egy ultrabook is körülbelül ugyan ennyibe kerül, de annak nagy valószínűséggel nem lesz ilyen jó billentyűzete, nem lesz full alumíniumból a háza, nem lesz ennyire jól összerakva. (persze tisztelet a kivételnek)"Nem találsz hozzá menő OS X-es alkalmazásokat (ebbe nyilvánvaló, hogy beletartozik a csillivilli, különben nem menő, és nem menő módon nem lehet dolgozni, hát milyen már az, hogy csak úgy simán hatékonyan tudod végezni a munkádat, mindenféle menőség nélkül), amiket hatékony munkára tudnál használni, vagy ha találsz is, akkor azért perkálni kell (ha még nem lett volna elég drága a gép). "
Most ez megint hülyeség, kezd Windows vs OSX felé tolódni a dolog.. Ugyanúgy használok vim-et, pedig annak a kinézete nem mondható "menőnek", azért mert jól működik, produktivitás terén kimagasló. Ezért is vettem Mac-et, mert produktivitás terén odavágja a Windows-t. (ebbe légyszi ne menjünk bele, hosszú oldalakat lehetne írni, hogy miért, miért nem, stb, ne flame-eljük tele a topikot - szubjektív vélemény) Na, és itt jön képbe, hogy mi bajom van a NetBeans-el: mivel belassítja a gépet a produktivitás csökken. És baromira idegesítő az, hogy 1-2 óránként újra kell indítanom a programot, mert a Safari is 10 mp-e ugrál ott a Dock-on miatta. De amíg Windows-os gépem volt, ott is ugyan ez volt a bajom ezekkel az IDE-kel, csak ott legalább tudtam Visual Studio-t PHP IDE-nek használni.
"Ezeket a "Java alapú sz*rokat" egyébként lehet különböző paraméterezésekkel indítani, amikkel korlátozni tudod a memóriahasználatukat, meg egyéb erőforrásokkal kapcsolatos dolgaikat."
De miért állítgassak neki paramétereket, miért sz*rakodjak terminal-ban ezzel? 2013-ban már-már elvárná az ember, hogy minden kis apró hülyeséghez legyen GUI. Annyira nehéz lenne feldobnia a programnak egy ablakot, hogy "Add meg, hogy maximum mennyi memóriát használhasson a program"? Miközben írtam ezt esett le, hogy ez egy OpenSource progi, így nem szidom a fejlesztőket, de azért nem lenne annyira bonyolult belerakni
Új hozzászólás Aktív témák
Hirdetés
- Mobil flották
- Formula-1
- Autós topik
- Folyószámla, bankszámla, bankváltás, külföldi kártyahasználat
- Okosóra és okoskiegészítő topik
- Tőzsde és gazdaság
- Revolut
- Kínai és egyéb olcsó órák topikja
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- Házi barkács, gányolás, tákolás, megdöbbentő gépek!
- További aktív témák...
- Telefon felvásárlás!! iPhone 12 Mini/iPhone 12/iPhone 12 Pro/iPhone 12 Pro Max
- ÁRGARANCIA! Épített KomPhone i5 13400F 32/64GB RAM RX 7700 XT 12GB GAMER PC termékbeszámítással
- Samsung Galaxy A41 64GB Kártyafüggetlen, 1Év Garanciával
- Giant Talon 0 Sport - Hardtail Mountain Bike
- LENOVO ThinkBook 13s - 13.3" FullHD IPS - i5-10210U - 8GB - 256GB SSD - Win11 - MAGYAR
Állásajánlatok
Cég: PC Trade Systems Kft.
Város: Szeged
Cég: CAMERA-PRO Hungary Kft
Város: Budapest