Vairāk

Funkcijas REPLACE izmantošana ArcGIS Server Query - vai tā tiek atbalstīta?


Es strādāju pie Flex lietojumprogrammas klientam, kas aizstās viņu mantoto lietojumprogrammu, kas ir rakstīta .net / adf. Pašreizējā kodu bāzē viņi izmanto ADF vaicājumu ar funkciju Replace, kur klauzula.

adfQueryFilter.WhereClause = "REPLACE (TMS, '-',"), piemēram, '% "+ ColValue +"%' ";

Iemesls tam ir tas, ka viņiem ir vairākas paku tabulas, un katrai tabulai ir TMS kolonna, kurā viņi vaicā. Katras tabulas TMS vērtībām ir unikālas numuru grupas, piemēram, ### - ## - ## - ### vai #### - ## - ## - ## utt. Konsekvence ir tāda, ka tās visas satur 10 ciparus . Iepriekš minētais mainīgais ColValue satur skaitļu secību BEZ defisēm (piemērs: ###########). ColValue viņu datos pastāv tikai šādā veidā, un to nevar pārveidot par defisētu formātu bez konfigurācijas noteikumiem un kodēšanas. Šī papildu konfigurācija un kodēšana ir tas, no kā es cenšos izvairīties, ja iespējams, un funkcija Aizstāt, šķiet, spēj to izdarīt vienalga - ADF.

Tātad rodas jautājums, vai REPLACE var izmantot ArcGIS servera vaicājumā, vai to atbalsta tikai ADF?

Šis vaicājums ģenerēs atlasi ArcMap: Atlasiet * no ParcelTable kur: REPLACE (TMS, '-', ") PATĪK '% 63%'

Tomēr, mēģinot to pašu vaicājumu ArcGIS Server atpūtas galapunktā, tas neizdodas.

Tas ir ArcGIS 10.2.1 karšu pakalpojums fyi.

Paldies par ieguldījumu šajā jautājumā!


Protams, uzreiz pēc šīs publicēšanas es atrodu atbildi. Pulksten 10.2 ESRI automātiski iespējoja standartizēto vaicājumu, kas novērš iespēju izmantot datu bāzei specifiskas funkcijas ArcGIS Server karšu pakalpojumu vaicājumos. Norādījumus par šī iestatījuma atspējošanu var atrast lapā Par standartizētiem vaicājumiem:

Šajā lapā (zem virsraksta “Standartizēto vaicājumu atspējošana”) jāatzīmē, ka:

Atspējojot šo drošības opciju, jūsu vietne kļūst neaizsargātāka pret SQL injekcijas uzbrukumiem.

tāpēc paturiet to prātā, ja saskaras ar līdzīgu problēmu.

Es arī atradu problēmu, kas manā situācijā darbojās. Šis risinājums ļāva atstāt iespējotu standartizēto vaicājumu (tas nozīmē, ka nav Aizstāt funkcionalitāti un drošāks). Es vienkārši pievienoju aizstājējzīmes starp katru meklēšanas vērtības rakstzīmi, kas ļāva man mainīt vaicājumu uz vienkāršu kur TMS = '% 6% 3% x %% x%…'

Vienkārši to pievienojot, cerot, ka tas palīdzēs kādam, kurš drošības apsvērumu dēļ nevar atspējot standartizēto vaicājumu.


Lai apgrieztu abās pusēs, izmantojiet:

Es pieņemu, ka tas ir vienreizējs datu tīrīšanas vingrinājums. Kad tas ir izdarīts, pārliecinieties, ka pievienojat datu bāzes ierobežojumus, lai nākotnē novērstu sliktus datus, piemēram,

Apsveriet arī iespēju atteikties no citām rakstzīmēm (cilne, atvilktnes atgriešana, rindas padeve utt.), Kas var radīt problēmas.

Var būt arī labs laiks sadalīt šos vārdus uz ģimenes_vārds, vārds_vards utt. :)

SQL Server 2008 R2 ar ssis izteiksmi mums ir funkcija trim.

SQL Server integrācijas pakalpojumi (SSIS) ir Microsoft SQL Server datu bāzes programmatūras sastāvdaļa, kuru var izmantot, lai veiktu plašu datu migrēšanas uzdevumu klāstu.

Pilnu aprakstu varat atrast šajā saitē

taču šai funkcijai ir daži ierobežojumi, kurus msdn piemin arī šajā lapā. bet tas ir iekšā SQL Server 2008 R2

Paplašinātā “REPLACE” versija:

Lai apgrieztu jebkuru rakstzīmju kopu no virknes sākuma un beigām, varat veikt šādu kodu, kur @TrimPattern nosaka apgriežamās rakstzīmes. Šajā piemērā tiek apgrieztas atstarpes, tabulēšanas, LF un CR rakstzīmes:

Paziņot @Test nvarchar (50) = Concat ('', char (9), char (13), char (10), '', 'TEST', '', char (9), char (10), char ( 13), '', 'Test', '', char (9), '', char (9), char (13), '')

DECLARE @TrimPattern nvarchar (max) = '% [^' + char (9) + char (13) + char (10) + ']%'

SELECT SUBSTRING (@Test, PATINDEX (@TrimPattern, @Test), LEN (@Test) - PATINDEX (@TrimPattern, @Test) - PATINDEX (@TrimPattern, LTRIM (REVERSE (@Test))) + 2)


7 Atbildes 7

Atjaunināt 2020. gadu:

Vienkārši izsauciet fhoffa.x.pivot (), kā sīki aprakstīts šajā ziņojumā:

Piemēram, 2019. gada piemērā:

Atjaunināt 2019. gadu:

Tā kā tas ir populārs jautājums, ļaujiet man atjaunināt uz #standardSQL un vispārīgāku pagrieziena gadījumu. Šajā gadījumā mums ir vairākas rindas, un katrs sensors aplūko cita veida īpašumu. Lai to pagrieztu, mēs rīkotos šādi:

Kā alternatīvu AVG () varat izmēģināt MAX (), ANY_VALUE () utt.

Es neesmu pārliecināts, ko jūs mēģināt darīt, bet:

ATJAUNINĀT: Tādi paši rezultāti, vienkāršāks vaicājums:

Iedvesmojies arī no kā simulēt pagrieziena galdu ar BigQuery? , šāds pieprasījums, izmantojot subselect, dod precīzu vēlamo rezultātu:

Viltība ir tāda, ka MAX (NULL, 'ATTENDED', NULL,.) Ir vienāds ar 'ATTENDED'.

Lietu case / if izmantošana, lai izveidotu pagrieztas kolonnas, ir viens no veidiem, kā to izdarīt. Bet kļūst ļoti kaitinoši, ja pagriežamo kolonnu skaits sāk pieaugt. Lai to risinātu, esmu izveidojis Python moduli, izmantojot python pandas, kas automātiski ģenerē SQL vaicājumu, kuru pēc tam var palaist BigQuery. Šeit ir neliels ievads tam:

Attiecīgais github kods, ja github pazeminās:

Atjaunināt 2021. gadu:

BigQuery ir ieviests jauns PIVOT operators.

Pirms PIVOT tiek izmantots pārdošanas un ceturkšņa pagriešanai Q1, Q2, Q3, Q4 kolonnās:

produktu pārdošana ceturksnī
Kale 51 Q1
Kale 23 Q2
Kale 45 Q3
Kale 3 Q4
Apple 77 Q1
Apple 0 Q2
Apple 25 Q3
Apple 2 Q4

Pēc tam, kad PIVOT tiek izmantots pārdošanas un ceturkšņa pagriešanai Q1, Q2, Q3, Q4 kolonnās:

Lai dinamiski izveidotu kolonnu sarakstu, izmantojiet izpildi tūlīt:

Ne visi var izmantot ne pitonu, ne pandas (padomājiet par dataAnalysts un BI dudes :)), šeit ir dinamiska šarnīra procedūra standartā SQL @ Bigquery. tas vēl nav apkopots. sākumā jums jāiesniedz tabula ar jau pe-KPI agregētām vērtībām (ja nepieciešams). bet tas automātiski izveido tabulu un ģenerē visas pagrieztās kolonnas.

sākuma hipotēze ir tāda, ka jūsu ievadē tabula myDataset.myTable ir šāda:
GARS, LAT, KPI, ASV, EUR
A, 1, temp, 78,45
A, 1, spiediens, 120, 114
B, 1, temp, 12,8
B, 1, spiediens, 85,52

ja jūs piezvanīsit zemāk, rīkojieties šādi:

jūs saņemsiet jaunu tabulu ar nosaukumu myDataset.myTable_pivot šādi:

LONG, LAT, temp_US, temp_EUR, spiediens_US, spiediens_EUR
A, 1,78,45, 120, 114
B, 1,12,8, 85, 52

Dīvainas lietas: ligzdotas, kamēr cilpas nedarbojas BQ. tiek izpildīta tikai pēdējā, kamēr cilpa. Tāpēc procedūras kodā jums ir maisījums WHILE un LOOP


Sagatavotie apgalvojumi tiek atbalstīti SQL Server, taču, iespējams, jums ir grūti atrast to izmantošanas piemērus, jo tie nav īsti nepieciešami.

Jūs varētu piezvanīt sp_prepare, lai iegūtu a rokturis un pēc tam nodod to sp_execute. Vai arī jūs varat izsaukt vai nu sp_prepexec, vai sp_prepexecrpc, kas abi apvieno darbības "sagatavot" un "izpildīt". Visos gadījumos jūs beigtu, izsaucot (galu galā) sp_unprepare, nododot rokturis atgrieza sp_prepare, sp_prepexec un sp_prepexecrpc.

Tomēr, kā minēts iepriekš, Microsoft SQL Server šis modelis ir novecojis / nevajadzīgs, jo vaicājumi un izpildes plāni tiek saglabāti kešatmiņā. Vaicājumi tiek saglabāti kešatmiņā un tiek meklēti, pamatojoties uz vaicājuma teksta jaucējkrānu. Ad hoc vaicājumi tiek saglabāti kešatmiņā, pamatojoties uz precīzi, vaicājuma pilns teksts (binārs salīdzinājums), iekļaujot vērtības, kas apvienotas vaicājumā, lai izmantotu filtrēšanai utt. Šie plāni, visticamāk, netiks izmantoti atkārtoti, ja vien precīzi tas pats vaicājums (attiecībā uz atstarpi un visu pārējo) tiek izpildīts vēlreiz. Parametrētie vaicājumi tiek saglabāti kešatmiņā, pamatojoties uz vaicājuma tekstu, kurā nav parametru vērtību, un tos var atkārtoti izmantot dažādām parametru vērtībām - tāpat kā veicot "sagatavošanu". Tādējādi nav nepieciešams izsaukt sagatavot / exec / sagatavoties.


Nevar pieprasīt LDAP serveri 389. portā Win2K domēna kontrollerī no cita apakštīkla

Man ir diezgan mulsinoša problēma ar LDAP piekļuvi Active Directory Windows domēnā. Konfigurācija ir šāda:

  • Ir divi galvenie tīkli: 192.168.0.0/24 un 192.168.100.0/24
  • Šie tīkli ir savienoti ar OpenVPN saiti (pārsūtīšanas tīkls ir 192.168.201.0/30)
  • Domēna kontrolleris, kurā darbojas sistēma Windows 2000 SP3 Server un Exchange 2000 tīklā 192.168.0.0/24
  • Atbilstoša maršrutēšana
  • Abi apakštīkli vietnē ir reģistrējušies vietņu un pakalpojumu papildprogrammā

Gandrīz viss darbojas: lietotāji no abu tīklu mašīnām var pieteikties, piekļūt SMB akcijām failu serveros tīklā 192.168.0.0/24, izmantot programmu Outlook ar savu Exchange kontu un tā tālāk. Arī visi DNS vaicājumi, ieskaitot AD specifiskos SRV ierakstus (piemēram, _ldap._tcp.dc._msdcs. $ DOMAINNAME), norāda uz pareizajām vietām

Saitē OpenVPN nav ugunsmūra.

Tagad problēma: es nevaru vaicāt DC LDAP serverim (NTDS, 389. ports) no jebkura datora tīklā 192.168.100.0/24. Interesanti, ka LDAP vaicājumi globālajā katalogā (3268 ports tajā pašā serverī) darbojas nevainojami. Es pat saņemu savienojumu ar 389. portu, bet serveris to nekavējoties atiestata.

Direktorija pakalpojuma notikumu žurnālā (LDAP saskarnē) nav aizdomīgu ierakstu pat ar maksimāli iespējamo žurnāla līmeni.

Šeit izejas piemērs no LDP rīka, mēģinot izveidot savienojumu ar DC 192.168.0.1:

Viss, ko atradu tīmeklī, izsaka divas un tās pašas lietas, galvenokārt: "pārbaudīt DNS" un "pārbaudīt ugunsmūri". Nu, es divreiz un trīs reizes pārbaudīju gan DNS, gan IP maršrutēšanu / filtrēšanu, un šķiet, ka tas ir kārtībā.

Vai jums ir kādas citas idejas, kur meklēt un ko pārbaudīt? Es novērtētu jebkuru atbildi. Ja jums nepieciešama papildu diagnostikas izeja, es to labprāt sniegtu.

Atjaunināt

Pateicoties Adamo atbildei, esmu spējis sašaurināt problēmu tālāk. Problēma ir tā, ka visa datplūsma uz 192.168.0.0/24 tīklu 389. ostā kaut kā tiek sajaukts ar mašīnu, kurā darbojas OpenVPN. Tas notiek neatkarīgi no tā, kurai mērķa mašīnai es mēģinu izveidot savienojumu portā 389 / tcp, un pat neatkarīgi no tā, vai mērķa mašīna patiešām klausās portā 389. Jebkura cita osta (piemēram, 390) darbojas labi, un es saņemu vai nu savienojums vai ziņojums "savienojums atteikts", ja šajā portā neviens process neklausās.

Arī ports 389 / udp darbojas labi.

Kas var izraisīt to, ka Windows 2000 serveris šādā ļoti selektīvā veidā sajauc trafiku?

2. atjauninājums

Lai samazinātu mijiedarbību starp DC / NTDS pakalpojumiem un OpenVPN, es pārvietoju OpenVPN serveri uz citu mašīnu (un attiecīgi mainīju IP maršrutēšanu). Tagad es varu izveidot savienojumu ar jebkuru mašīnu, izņemot DC portā 389 / tcp. Neskatoties uz to, ja es mēģinu izveidot savienojumu ar LDAP serveri DC 389 / tcp portā no tīkla 192.168.100.0/24, LDAP serveris nekavējoties pārtrauc savienojumu, tāpēc būtībā esmu atgriezies pirmajā vietā.

Vai ir kādas idejas, kā pārliecināt NTDS runāt ar citu tīklu? Vai varbūt kāds risinājums?


Funkcijas.php

Un tad .. vienkārši pievienojiet kaut ko tādu:

Ko jūs domājat par šo risinājumu?

Esmu mazliet optimizējis @Stabir Kira atbildi

Tagad jūs varat meklēt pēc (nosaukums, saturs, izņemot) vai (meta lauks) vai (pēc abiem).

Saskaņā ar Nika Perkinsa ieteikumu man bija jāapvieno divi šādi vaicājumi:

Nu tā veida kapāt, bet tas darbojas. Jums jāpievieno posts_clauses filtrs. Šī filtra funkcijas pārbaude, vai kāds no vaicājuma vārdiem pastāv pielāgotajā laukā "izspēlēt", un atlikušais vaicājums paliek neskarts.

Es nevarēju atrast risinājumu, kā meklēt vairākus atslēgvārdus, kurus var sajaukt gan ziņas nosaukumā, gan aprakstā UN / VAI vienā, gan vairākās metās, tāpēc es pats papildināju meklēšanas funkciju.

Viss, kas jums nepieciešams, ir pievienot šādu kodu function.phpun ikreiz, kad standartā izmantojat argumentu 's' WP_Query () funkciju un vēlaties, lai tā meklētu arī vienā vai vairākos meta laukos, jūs vienkārši pievienojat argumentu “s_meta_keys”, kas ir meta (u) atslēgas (-u) masīvs, kurā vēlaties meklēt:

Šajā piemērā tiks meklēti atslēgas vārdi un atslēgas vārdi, kurus meklēt un citēt ziņu nosaukumos, aprakstos un meta taustiņos “short_desc” un “tags”.

Atslēgvārdus var atrast vienā vai vairākos iesniegtajos failos, jebkurā secībā. Tas atgriezīs jebkuru ziņu, kurā visi atslēgvārdi ir norādītajos laukos.

Jūs varat paklausīgi piespiest meklēšanu meta atslēgu sarakstā, kuras esat iekļāvis funkcijā, un atbrīvoties no papildu pamatiem, ja vēlaties, lai VISOS meklēšanas vaicājumos būtu iekļautas šīs meta atslēgas :)


Datu bāze

Tā kā katrs API pieprasījums var ģenerēt JSON atbildes objektu, kas atšķiras atkarībā no lauka nosaukuma, t.i., tam ir atšķirīga shēma, dabiska izvēle būtu izmantot uz dokumentiem balstītu NoSQL risinājumu. Turklāt, tā kā mēs neparedzam pilnībā zināt šo atbildes objektu struktūru pirms pieprasījumu iesniegšanas pēc tiem, mums ir jāizmanto risinājums bez shēmas, lai mēs varētu izmest visus atbildes objektus, pēc tam analizēt un notīrīt neparedzētus atribūtu izvietojumus vai deģenerētas atbildes. (Piezīme: Šī ir ērtības izvēle. Visu teorētisko atribūtu variantu atrašana a priori ir laikietilpīga un nav pārāk atalgojoša, jo dažu datu neizmantošana ir minimāla.) Tā kā tas ir ērti lietojams, liels kopienas atbalsts un spēcīga integrācija ar Mezgls, MongoDB šķiet pareizā izvēle.

Datu avoti ✔Automatizācijas rīks ✔ Datu bāze ✔

Izveidosim savu vidi šo rīku izmantošanai.


jq uzdevuma darbības var atjaunināt tik daudz vietas vienlaikus, cik vien varat nosaukt, un tiek veiktas šāda veida situācijām. Tu vari izmantot

uz atrodiet katru lauku ar nosaukumu & quotname & quot jebkur un nomainiet vērtību visos uzreiz ar & quotXXXX & quot, un izvadiet iegūto objektu.

Tas ir tikai .. | .a? piemērs no rekursīvās nolaišanās dokumentācijas apvienojumā ar atjauninājumu piešķiršanu.

Tas izmanto rekursīvo nolaišanās operatoru .. lai atrastu katru atsevišķu vērtību kokā, pēc tam no katra ar .name izvelk lauku & quotname & quot, nomāc visas kļūdas no neatbilstošām vērtībām ar? , un pēc tam objektu visās šajās vietās vienlaikus atjaunina ar & quotXXXX & quot, izmantojot atjaunināšanas piešķiršanas operatoru | =, un izdod jauno objektu.

Tas darbosies neatkarīgi no faila struktūras un atjauninās katru nosaukuma lauku visur.

Alternatīvi, ja failam vienmēr ir šāda struktūra, un tā tas ir tie konkrētie lauki & quotname & quot, kurus vēlaties mainīt, ne tikai jebkuru veco vārdu, jūs varat tos vienkārši uzskaitīt un piešķirt arī viņiem kā grupu:

Tas veic to pašu uzdevumu

  1. augšējā līmeņa objekta lauks & quotname & quot
  2. lauka & quotname & quot laukā katrs objekts masīvā & quotcontact & quot un
  3. katra & quotgroup & quot masīva objekta lauks & quotname & quot.

viss vienā piegājienā. Tas ir īpaši noderīgi, ja failā varētu būt cits nosaukuma lauki tur, kas nav saistīts, kuru nevēlaties mainīt. Tas atrod tikai trīs tur nosaukto vietu kopas un atjaunina tās visas vienlaikus.

Ja vērtība ir tikai burtiska kā šeit, tad vienkāršs uzdevums ar = arī darbojas un ietaupa jums rakstzīmi: (.. | .nosaukums?) = & QuotXXXX & quot - jūs to vēlētos arī tad, ja jūsu vērtība tiek aprēķināta, pamatojoties uz kopumu augstākā līmeņa objekts. Ja tā vietā vēlaties aprēķināt jauno vārdu, pamatojoties uz veco, jūs vajadzība izmantot | =. Ja neesmu pārliecināts, ko lietot, stūra gadījumos parasti = | = izturas nedaudz jaukāk.

Ja Jums ir veicami vairāki aizstājēji, jūs varat tos savienot kopā:

visur atjauninās laukus & quotname & quot un & quotlname & quot, un vienu reizi izdos visu atjaunināto objektu.

Dažas citas pieejas, kas varētu darboties:

Jūs varētu arī izteikt skaidru informāciju par to, ar ko atlasāt

kas atrod visu, tad tikai objektus, pēc tam tikai objektus, kuriem ir & quotname & quot, pēc tam šo objektu nosaukuma lauks un veic to pašu atjauninājumu kā iepriekš.

Ja jūs izmantojat jq izstrādes versiju (maz ticams), staigāšanas funkcija var veikt arī šo darbu: staigāt (.nosaukums? = & QuotXXXX & quot). Visas pārējās versijas darbosies ar jaunāko izlaisto versiju 1.5.

Varētu būt alternatīva vairāku atjauninājumu versija

kas atrod visu ar vārdu un pēc tam katram objektam iestata gan & quotname & quot, gan & quotlname & quot, izmantojot aritmētisko update-assignment * = un objektu apvienošanas uzvedību, kāda ir +.


Aktivizējiet Windows PowerShell un palaidiet:

Rezultātam vajadzētu izskatīties apmēram šādi,

"LDAP veids", kā to izdarīt, būtu iegūt bāzes objektu ar GUID (vai SID), kas izgūs tikai bāzes objektu un tam nebūs pievienoti papildu klases dati. Tomēr no šī bāzes objekta jūs varat izgūt faktisko lietotāja objekta "eristēto vārdu". Iegūstot lietotāja objektu, izmantojot atribūtu "atšķirtsName", tiks atgriezts objekts DirectoryEntry (.Net / C # / PowerShell) vai objekts iadsUser (VBScript) ar pilniem klases datiem un ļaus jums iegūt jebkādus citus nepieciešamos atribūtu datus.

Problēma ir sākotnējā objekta izgūšana ar GUID (vai SID). Daži avoti teiks, ka virknes formāta GUID (ti, <28c67c50-9778-47a4-a77a-bf56f238a0c4>) jāpārvērš par baitu masīva virknes attēlojumu (ti, " 50 7c c6 28 78 97 a4 47 7a a7 bf 56 f2 38 a0 c4 "), lai tos nodotu LDAP. Saskaņā ar Microsoft dokumentāciju tas tā nav. Pietiek ar vienkāršu GUID / SID virknes attēlojumu.

Šeit ir paraugs tam, kā jūs varat saistīties ar objektu, izmantojot GUID, pēc tam izgūstiet faktisko lietotāja objektu ar pilniem klases datiem. Powershell faktiski velk visu objektu, ja saistāt ar GUID. Ja izmantojat VBScript, jums jāveic divpakāpju process.

Lūdzu, ņemiet vērā, ka, lai arī Microsoft dokumentos teikts, ka ir pieņemami vairāki GUID virkņu formāti, vienīgais, ko esmu veiksmīgi varējis izmantot, ir <> - rakstzīmju noņemšana. ARĪ, lūdzu, ņemiet vērā, ka tas tā ir pareiza virkne "baitu masīvs", bet vienkārši GUID virkne, kurai atņemtas īpašās rakstzīmes.

To pašu procesu var izmantot SID saistīšanai. MSDN lapā, kas to apraksta, teikts, ka ir pieejami vairāki fstring formāti, taču visizplatītākais būs s-1-5-. -. -. -. formātā.

Ja jūs gatavojaties veikt LDAP vaicājumu, lai atrastu objektu (piemēram, salīdzinot 'objectGUID' ar baitu masīvu vai 'objectSID' ar baitu masīvu, tas ir, kad jums būs jādara "pareizs" baits masīva pārveidošana. Ir svarīgi atzīmēt, ka baitu masīvam ir atšķirīga secība nekā virknes attēlojumam, jo ​​tas tiek glabāts kā DWORD-WORD-WORD-WORD-BYTES GUID, un VAI ŅEM vērā endian kārtību. Pārvēršot SID baitu masīvu, ir līdzīgi nosacījumi.

Pārveidei ir vairāki dažādi veidi, Technet ir vienkāršs vbScript algoritms. Jūs varētu arī izdarīt kaut ko iecienītāku ar C # / VB.Net, izmantojot System.Guid vai izmantojot vienkāršu skriptu PowerShell (jāiemīl PowerShell!):

Pēc tam jums vajadzētu būt iespējai vaicāt objektam, izmantojot standarta LDAP filtru:

. vai ko citu jūs varētu vaicāt. Tam vajadzētu darboties arī SID gadījumā.


Kā saglabāt un saņemt mainīgos WP sesijās?

Man ir veidlapa ar dažām izvēles rūtiņām un ievades lodziņiem, un tā parāda, ko lietotājs vēlas, izmantojot ajax zvanu. Problēma ir tāda, ka tad, kad lietotājs noklikšķina uz vienuma un tiek parādīta detalizētās informācijas lapa, un pēc tam nolemj atgriezties iepriekšējā lapā, viņam ir jānoklikšķina un vēlreiz jāizvēlas iepriekšējā izvēle.

Es gribētu likt WP glabāt visas sesijas opcijas, kad tiek noklikšķināts uz pogas uz detalizētas informācijas lapu, un saglabāt sesijā faktisko informāciju, un pēc tam, kad viņš atkal apmeklē lapu, sesijās vērtības tiks pārbaudītas un iestatītas, ja tādas ir atrasts.

Pārmērīgi vienkāršosim un teiksim, ka mums ir kaut kas līdzīgs šim:

Es savā veidlapā neizmantoju pogu Iesniegt, tā tiek mainīta, izmantojot AJAX.

Manos rezultātos nokļūt caur ajax man ir saite uz detalizētas informācijas lapu:

Vai ir kāda ideja, kā es varu saglabāt savas vērtības sesijā un izsaukt tās, pārlūkprogrammā atkārtoti apmeklējot / atkārtoti ielādējot / atpakaļ?

Man jāspēj izlasīt sesijas laikā saglabāto saturu un izmantot to, izmantojot? Javascript? un aktivizēt manu meklēšanu caur ajax, kas jau darbojas labi.

Man vienkārši jāuzglabā (iespējams, pirms došanās uz $ link in pogu href of by detail un lasīt un nosūtīt sesijas mainīgos (ja tādi pastāv).


11 Atbildes 11

Nē, pēc taksonomijas nav iespējams pasūtīt, jo no noteikta veida viedokļa tam faktiski nav lielas jēgas.

Taksonomijas ir veidi, kā grupēt lietas kopā. Tātad amatu taksonomijas jēga patiešām būtu tāda, ka šajā taksonomijā būtu noteikumi, kas tiek dalīti starp amatiem. Ja taksonomijā būtu termini, kas tika izmantoti tikai vienā amatā katrā, tas taksonomiju padarītu par bezjēdzīgu. Un, ja noteikumi būtu kopīgi, kā vajadzētu, tad pasūtīšana pēc tā nedos neko īpaši noderīgu.

Tas, ko jums vajadzētu izmantot šādā situācijā, ir post meta. Jūs varat pasūtīt pa pastu meta, un tas ir unikāls katram ierakstam.

Rediģēt: Tas nozīmē, ka jūs varat pasūtīt pēc taksonomijas, izveidojot pielāgotu SQL vaicājumu, izmantojot filtru, jūs vienkārši to nevarat izdarīt no nemodificēta WP_Query: http://scribu.net/wordpress/sortable-taxonomy-columns.html

Tomēr, ja jums ir jāizmanto šāda veida lietas, tad jūsu datu noformējuma struktūra vispirms ir nepareiza. "Termini" taksonomijā nav reāli "dati". Pašiem terminiem nav raksturīgas nozīmes, tie ir tikai apzīmējumi konkrētajai grupai, kuru viņi apraksta. Ja jūs tos uztverat kā nozīmīgus datus, jums ir pamatā esoša dizaina kļūda.

Taksonomijas grupē lietas, piešķirot tām terminus. Šī grupa ir viss taksonomijas jēdziens, termini grupai ir tikai jaukas sejas. Ja jums ir jēgpilni metadati, ko piešķirt ziņai, jums tā vietā jāizmanto ziņas meta. Un ka tu var kārtot pēc, jo post meta informācijas glabāšanai izmanto gan atslēgas, gan vērtības. Izmantojot taksonomiju, jūs faktiski glabājat tikai atslēgas, un to vērtības ir ziņas, kas sagrupētas pēc šī termina.

Lietas ir vieglāk ilgtermiņā, ja izmantojat pareizu pieeju tam. Lai gan es nesaku, ka ar taksonomiju jūs nevarat izdarīt kaut ko dīvainu, jūs vienkārši ilgtermiņā apgrūtināt sev lietas, nepareizi izmantojot to.


Skatīties video: ArcGIS Revision (Oktobris 2021).