Pieniä kysymyksiä ohjelmoinnista

Viestiketju alueella 'Ohjelmointi' , aloittaja kivibot, 27.12.2011.

NOSTOJA MUROPAKETIN SISÄLLÖSTÄ
  1. qweeqwqwe

    Rekisteröitynyt:
    31.05.2013
    Viestejä:
    149
    Mikäs tässä on vikana? Javascriptiä yritän vääntää, mut ei riitä tiedot ja taidot. Kokeilin onreadystateen heitellä tota ekaa funktiota ym. mut ei vaan tajua mikä mättää.

    https://pastebin.com/T18dmihK
     
  2. Paapaa

    Rekisteröitynyt:
    14.04.2005
    Viestejä:
    11 047
    Jos nyt vaikka aloitat siitä, että mitä oikein yrität tehdä ja millä tavalla koodisi ei toimi ja missä ajat tuota koodia, kutsutko noita funktioita jostain muualta vai oletitko että tuo tekee yksinään jotain, mitä? Vähän enemmän faktaa kehiin.
     
  3. qweeqwqwe

    Rekisteröitynyt:
    31.05.2013
    Viestejä:
    149
    Javascriptillä ihan perus verkkosivuja näperrän.

    Nappia painamalla lähtee käyntiin haeAsema funktio se käy json tiedostoa läpi ja tulostelee roinaa. Kyseinen funktio tarvii kuitenki ekan ja tokan funktion läpikäymästä JSON tiedostostosta asemakoodin ja sen se tekee, ainakin konsoliin palauttaa aivan oikein eli kirjottamalla helsinki se palauttaa helsingin asemakoodin. Ongelmana on etten osaa käyttää tai palauttaa sitä asemakoodia haeAsema funktiota varten, jota siis tarvitaan haeAsema funktion ajax haun urliin.

    tldr Ekojen 2 funktion tarkotuksena on hakee ja vertaa input boxiin laitettua infoa json tiedostoon, ja palauttaa inputtia vastaavan aseman asemakoodi. "Kolmas" funktio tarvitsee sen asemakoodin jotta se voi hakea tietyn aseman junien tiedot, eri json tiedostosta. Urlin osaksi tarvitaan asemakoodi.

    Vissii callbackejä pitäs/vois hyödyntää (?) mut ei mulle aukee.
     
    Viimeksi muokattu: 16.12.2017
  4. Paapaa

    Rekisteröitynyt:
    14.04.2005
    Viestejä:
    11 047
    Ensinnäkin, ota tavaksi nimetä funktiot järkevästi. Niin, että joku toinen (ja sinä itse viikon päästä) tajuaa funktion nimestä, mitä se tekee. asd() ja hommeli() ovat ehkä paskimmat nimet, joihin olen koskaan törmännyt.

    Ongelmasi on se, että rivillä 40 luulet palauttavasi jotain järkevää, mutta näin ei tietenkään tehdä. Eikä voidakaan, sillä asd:ssä tehdään asynkroninen kutsu joka valmistuu kun valmistuu. Tämä on helppo debugata, sen kuin logitat, minkä arvon input saa rivillä 40.

    Siis, sun pitää tehdä tuo riviltä 42 alkava asia rivin 13 jälkeen kun hommeli() on suoritettu. Vain siellä voit olla varma, että saat oikean datan sitä seuraavaa kutsua varten. Koodin luettavuuden takia kannattaa kääriä asiakokonaisuudet omiksi funktioikseen. Ehkä myös asynkronisen kutsun voi tehdä funktioksi, joka ottaa urlin ja callbackin parameteritä. Jne. Helpottaa koodin luettavuutta.

    Sen lisäksi sun pitää katsoa, mitä teet jos hommeli() ei löydä matchiä.
     
  5. qweeqwqwe

    Rekisteröitynyt:
    31.05.2013
    Viestejä:
    149
    Kiitoksia paljon, apinakin ymmärs tai luulee ymmärtävänsä. Koodi tuntuis toimivan nyt, tosin muutaman sekunnin viiveellä.

    Tiedä sitte johtuuko paskasta koodista vai API:sta vai molemmista.
     
    Viimeksi muokattu: 16.12.2017
  6. mystikkogames

    Rekisteröitynyt:
    12.03.2017
    Viestejä:
    150
    Se lukee netistä dataa, se on aina hidasta. Siitä se viive. Tunkisin nuo funktiot callbackiksi. Se on ainoa tapa.
     
  7. kasvi

    Rekisteröitynyt:
    16.11.2004
    Viestejä:
    176
    Tervehdys!

    Pystyykö joku jeesaan? Oon pari päivää yritäny saada toteutusta toimimaan, mutta ei onnaa.. elikkä ongelmana poistaa Wordpressissä custom tablesta tietoja. Pitäis jotenki onnistua lisäämään tableen buttoni millä ko. rivin vois poistaa. Hätäseen onnistuu se tehdä erillisellä php filellä gettiä käyttäen, mutta tarvisin ajax/json toteutuksen tota Wordpressiin $wpdb:tä käyttäen. Enkä ymmärrä miten ihmeessä ajaxin/jsonin/javascriptin saa edes toimimaan Wordpressissä? PHP:tä ajelen php_everywheren kautta.


    Taulu on mallia id autoincrement, username, syke, kesto, jne. Eli pitäis onnistua tota id:tä käyttäen poistamaan koko rivi.

    <table border="1">
    <tr>

    <th>Syke</th>
    <th>Kesto</th>

    </tr>

    <?php
    $current_user = wp_get_current_user();
    $username= $current_user->user_login;
    global $wpdb;
    $result = $wpdb->get_results ( "SELECT * FROM syke where username = '$username'" );
    foreach ( $result as $print ) {
    echo '<tr>';
    echo '<td>' . $print->rate .'</td>';
    echo '<td>' . $print->kesto .'</td>';

    echo '</tr>';
    }
    ?>

    </table>
     
    Viimeksi muokattu: 08.01.2018
  8. kasvi

    Rekisteröitynyt:
    16.11.2004
    Viestejä:
    176
    Paljon yksinkertasempi kysymys... miten tähän ämpätään toinen condition, ei toimi mitenkään päin.

    $wpdb->delete( $wpdb->prefix .'xxx',['ID'=> $_GET['id']],['%d']);

    Pitäis saada lisäksi username = $username tohon?
     
    Viimeksi muokattu: 08.01.2018
  9. Phoenx

    Rekisteröitynyt:
    20.11.2007
    Viestejä:
    216
    https://premium.wpmudev.org/blog/using-ajax-with-wordpress/

    Kokeileppa: $wpdb->delete( $wpdb->prefix .'xxx',['ID'=> $_GET['id'], 'username' => $username],['%d', '%s']);

    Olettaen, että tietokannan sarakkeen nimi on "username".

    https://codex.wordpress.org/Class_Reference/wpdb#Parameters

    Google rohkeesti laulamaan vaan.. :)
     
    Viimeksi muokattu: 09.01.2018
  10. kasvi

    Rekisteröitynyt:
    16.11.2004
    Viestejä:
    176
    Kiitoksia, täytyypä kokeilla jahka pääsee taas koneelle. Google oli kyllä käytössä, mutta ei onnannu.

    Tollasta ratkasua en kyllä koittanu, samat asiat pyöri lauseessa, mutta ei just tossa järjestyksessä.
     
  11. Phoenx

    Rekisteröitynyt:
    20.11.2007
    Viestejä:
    216
    Ilmoittele miten kävi, en siis ole tuota itse mitenkään testaillut, katselin vain Wordpress-dokkareista miten pitäisi mennä eli tuossa kutsutaan wpdb-objektin delete-metodia ja annetaan sille parametreina taulu, johon muutokset tehdään, taulukko jonka alkioiden perusteella etsitään rivi taulusta ja kolmantena parametrina taulukko, joka määrittää kakkosparametrissa käytetyt tietotyypit.
     
  12. kasvi

    Rekisteröitynyt:
    16.11.2004
    Viestejä:
    176
    Kyllä se näytti toimivan! Kiitoksia. Koitin itekki selailla noita dokkareita, vaan en vaan ymmärtäny miten sen toisen ehdon lisää. Kokeilin noita samoja mitä tossa toimivassa mallissa on, mutta en kertaakaan just noin. =)

    Yritin ainaki näin, eli se jäi noista yksistä suluista kiinni. :D
    ['ID'=> $_GET['id'], ['username' => $username],['%d', '%s']);
     
    Viimeksi muokattu: 11.01.2018
  13. mystikkogames

    Rekisteröitynyt:
    12.03.2017
    Viestejä:
    150
  14. kasvi

    Rekisteröitynyt:
    16.11.2004
    Viestejä:
    176
    Auttasko joku taas.. yritän opetella käyttään tota $wpdb:tä Wordpressissä. Tässä on musta kevyesti selkein meininki..

    <?php

    if ( isset( $_POST['submit'] ) ){

    global $wpdb;

    $current_user = wp_get_current_user();
    $username = $current_user->user_login;

    $tablename=$wpdb->prefix.'testi';

    $data=array(
    'username' => $username,
    'testi2' => $_POST['testi2'],
    'testi3' => $_POST['testi3'],
    'testi4' => $_POST['testi4'],
    'testi5' => $_POST['testi5'] );


    $wpdb->insert( $tablename, $data);
    }
    ?>
    ..mut saanko mä jotenki säilytettyä tuon saman rakenteen kutakuinkin, ku oon lukenu datan input kentiin ja haluasin vaan päivittää niitä kun username=$username?
    Manuskahan sanoo näin, mutta en mä taas vaan keksi miten tota muokkais, niin että se toimis.

    wpdb::update( string $table, array $data, array $where,array|string $format = null, array|string $where_format = null )

    EDIT: jahas, tää oli semi helppo $where = ['username' => $username]; ja $wpdb->update( $tablename, $data, $where);
     
    Viimeksi muokattu: 16.01.2018
  15. ****

    Rekisteröitynyt:
    28.01.2003
    Viestejä:
    566
    Pitäisi saada nolla arvot pois, eli tuo google scripti lähettää sheets taulukkoon lämpötila yms. arvoja, mitä pitäisi lisätä tuohon ao. koodiin, että jos esim. temp1 on 0, niin se ei tulisi taulukkoon ollenkaan, kaaviossa kun näkyvät ikävinä piikkeinä...






    Koodi:
    function doGet(e) {
      Logger.log( JSON.stringify(e) );  // view parameters
    
      var result = 'Ok'; // assume success
     
      var ss = SpreadsheetApp.getActiveSpreadsheet();
    //give your sheet name below instead of Sheet1
    var sheet = ss.getSheetByName("data");
    
    var datarange = sheet.getDataRange();
    var lastrow = datarange.getLastRow();
    
    
    var currentDate = new Date();
    var oneweekago = new Date();
    oneweekago.setDate(currentDate.getDate() - 2);
    
    for (i=lastrow;i>=2;i--) {
    var tempdate = sheet.getRange(i, 1).getValue();
    
    if(tempdate < oneweekago)
    {
      sheet.deleteRow(i);
    }
    }
    
    
      if (e.parameter == undefined) {
        result = 'No Parameters';
      }
      else {
        var id = '1HBzV2Tm9GeAk8IQOrj80Bsfzuul2fz5DO8EhCxxxxxxx';//docs.google.com/spreadsheetURL/d
        var sheet = SpreadsheetApp.openById(id).getActiveSheet();
        var newRow = sheet.getLastRow() + 1;
        var rowData = [];
        //var waktu = new Date();
        rowData[0] = new Date(); // Timestamp in column A
        
        for (var param in e.parameter) {
          Logger.log('In for loop, param='+param);
          var value = stripQuotes(e.parameter[param]);
          //Logger.log(param + ':' + e.parameter[param]);
          switch (param) {
            case 'humdata': //Parameter
              rowData[1] = value; //Value in column B
              break;
            case 'celdata':
              rowData[2] = value;
              break;
            case 'sisatemp': //Parameter
              rowData[3] = value; //Value in column B
              break;
            case 'sisahum':
              rowData[4] = value;
              break;
            case 'temp':
              rowData[5] = value;
              break;
            case 'temp1':
              rowData[6] = value;
              break;
            case 'temp2':
              rowData[7] = value;
              break;
            case 'temp3':
              rowData[8] = value;
              break;
            case 'temp4':
              rowData[9] = value;
              break;
            case 'temp5':
              rowData[10] = value;
              break;
            case 'temp6':
              rowData[11] = value;
              break;
            case 'light':
              rowData[12] = value;
              break;
            case 'sade':
              rowData[13] = value;
              break;
            case 'wind':
              rowData[14] = value;
              break;
            case 'suunta':
              rowData[15] = value;
              break;
            case 'vrksade':
              rowData[16] = value;
              break;
            case 'vrkmaxtemp':
              rowData[17] = value;
              break;
            case 'vrkmintemp':
              rowData[18] = value;
              break;           
            default:
              result = "unsupported parameter";
          }
        }
        Logger.log(JSON.stringify(rowData));
    
        // Write new row below
        var newRange = sheet.getRange(newRow, 1, 1, rowData.length);
        newRange.setValues([rowData]);
      }
    
      // Return result of operation
      return ContentService.createTextOutput(result);
    }
    
    
    
    
    /**
    * Remove leading and trailing single or double quotes
    */
    function stripQuotes( value ) {
      return value.replace(/^["']|['"]$/g, "");
    }
    
     
  16. Zvona

    Rekisteröitynyt:
    22.10.2001
    Viestejä:
    1 110
    En ihan tiedä, minkälaisessa ympäristössä toimit, mutta tässä ES6 (TypeScript) -esimerkki: https://codepen.io/zvona/pen/MZoveR?editors=0011

    Lisäksi esimerkki poistaa tarpeen loputtoman pitkältä switch-case:ltasi. Eli array täytetään siinä järjestyksessä kuin `rowIDs` on määritelty.

    Jäin vain itse miettimään, että miten jos meillä on vaikka:
    `[123, 456, 0, 789]`

    niin tästähän tulee (nolla poistettuna): `[123,456,789]`, eli tällöin järjestys ei enää täsmää?
     
    Viimeksi muokattu: 25.12.2018
  17. ****

    Rekisteröitynyt:
    28.01.2003
    Viestejä:
    566
    En tuolla esimerkillä saa toimimaan, olisiko muita ideoita tarjolla, muokattuna muuten toimivaan scriptiini niin, että jättäisi solun vain tyhjäksi jos arvo nolla?
     
  18. ****

    Rekisteröitynyt:
    28.01.2003
    Viestejä:
    566
    Toinen vaihtoehto olisi, että jos arvo on esim. +/-10 poikkeava edelliseen, sitä ei lähetetä taulukkoon, mutta miten tehdään, en osaa muuta kuin arduinon ohjelmaa jotenkin... Mitä kieltä tuo google script on? Voisi yrittää opetella, mutta löytyykö siihen jotain suomenkielistä opusta, tai netistä jotain alkeita?
     
  19. Grez

    Rekisteröitynyt:
    30.04.2001
    Viestejä:
    5 867
    Google Apps Script on oma kielensä. Syntaksiltaan siinä on kaikki Javascript 1.6:n ominaisuudet ja joitain uudempia ominaisuuksia.
     
  20. ****

    Rekisteröitynyt:
    28.01.2003
    Viestejä:
    566

    Tuosta koodista en paljoa ymmärrä, mutta olisiko mahdollista käyttää mitenkään if ehtoa? if(temp1 < 1)...
     
    Viimeksi muokattu: 18.02.2019
  21. kytkijä

    Rekisteröitynyt:
    25.12.2011
    Viestejä:
    185
    Moi,

    Minulla on ongelmia SQL-kyselyn kanssa. Tämä on todella yksinkertainen missä tahansa (Excel, python) kaavana, mutta SLQ:ssä en saa sitä toimimaan.

    Eli minulla on taulukossa mm. sarakkeet 'kpl' ja 'pvm'. Haluaisin palauttaa erillisissä kyselyissä sum(kpl) ja count(kpl) funktiot viikonpäivästä riippuen joko tälle ja huomiselle päivälle tai jos eletään perjantaita niin välille pe-ma.

    Varmaankin tässä tarvitaan CASE WHEN lauseketta.. Tällä hetkellä kysely näyttää tältä

    select count(kpl) from taulu1
    where pvm between convert(date,getdate()) and dateadd(day,1,getdate())
    and sarake1>1
    and lisää ehtoja...

    Tuolla tavalla saan tarvittavat tulokset yhdeltä päivämäärävalinnalta, mutta miten saisin lisättyä tuohon case when tapauksen datename() funktiolla, eli jos tänään on perjantai niin haetaan maanantaihin asti ja muina päivinä vain tämä ja seuraava päivä.

    Kokeilin kaikkia mahdollisia yhdistelmiä mutta ei vaan onnistu..
     
    Viimeksi muokattu: 20.02.2019
  22. ****

    Rekisteröitynyt:
    28.01.2003
    Viestejä:
    566
    Nyt keksin ja löysin koodin millä poistan nollat tai tuossa arvot jotka ovat alle 1. Voisiko joku muokata tuota niin, että poistaa alle 1 arvot ja yli 100 arvot B ja C sarakkeesta...

    Kiitos!

    Edit: onnistuin jo itse.

    Koodi:
    var data = sheet.getRange('B:B').getDisplayValues();
        var range = []; data.forEach(
          function(e, i){
          if (e[0] < "1.00") range.push("B" + (i + 1));
          });
        sheet.getRangeList(range).clearContent(); 
     
    Viimeksi muokattu: 08.03.2019
  23. embedded

    Rekisteröitynyt:
    01.11.2000
    Viestejä:
    860
    Opiskelen netistä Laravelliä ja ei oikein avaudu tuo MVC juttu

    miksi blade-templatessa viitataan
    Auth::check()
    mutta sama ei toimi controllerissa, vaan sielä täytyy kirjoittaa
    auth()->check()
    ?
     
  24. Sakkesimo

    Rekisteröitynyt:
    16.01.2013
    Viestejä:
    71
    Yritän tehdä nettikauppaa wordpressillä ja woocommercella ja ongelmaksi muodostui sivu Kauppa johon saan woocommerce sidebarin mutta miten saan tämän kauppa sivun näkymään muissa "tuote" / "kategoria" sivuissa? esim jos haluan tehdä megamenun eri kategorioille ja kun niitä klikkaa niin ne menee ihan "normi" sivulle kun pitäisi kai mennä Kauppa sivun kautta tai jotain...vittu pää hajoo. pitääkö ne muut osastot / sivut linkittään ton kauppa sivun kautta?
     
  25. Sakkesimo

    Rekisteröitynyt:
    16.01.2013
    Viestejä:
    71
    Edit. Löyty vastaus. Lisäämällä menuu tuoteosastoja ne näyttää kauppa sivulta.
     

Jaa tämä sivu

Alibi
Anna
Deko
Dome
Erä
Hymy
Kaksplus
Kippari
Kotilääkäri
Kotiliesi
Koululainen
Ruoka.fi
Parnasso
Seura
Suomen Kuvalehti
TM Rakennusmaailma
Tekniikan Maailma
Vauhdin Maailma
Golfpiste
Vene
Nettiauto
Ampparit
Plaza
Muropaketti