Jump to content
php.lv forumi

atari

Reģistrētie lietotāji
  • Posts

    35
  • Joined

  • Last visited

Posts posted by atari

  1. Kad nedara neke? Ja sakrīt pilnīgi visi lauki? Vai tikai unikaals_kods?

    Ko darīt gadījumā, ja unikaals_kods sakrīt, bet citi lauki atšķirās?

    Nu tik smalki jau ir pa glauno, bet to nevajag, būtība ir tāda, ka to skriptu palaižot pirmo reizi ierakstās tabulas kolonnās ieraksti, palaižot nākamreiz to skriptu, tas atkal nolasa CSV failu, bet ar jau izmaiņām(jauniem ierakstiem, kas ir CSV failā) un atkal izveido ierakstus tabulas kolonnās, bet tādi jau ir no pirmās reizes palaišanas. Saproti ērtāk laikam ir salīdzinat pēc nezinu jebkā, kas jau ir kolonnās, vienalga kāds tabulas kolonas lauks, bet tikai lai neizveidojas vēl tāds, ja jau viens ir. . Problēmas kopsavilkums redzams bildē šeit: http://www.ht2.lv/bildes/kopsavilkums.jpg

     

    p.s. ceru pēc bildes palika skaidrāks, labi, var palikt pie tā, ja kaut viens no CSV faila laukiem sakriīt ar jau esošo kas ir kādā no datubāzes kolonām (varu pateikt priekšā, ja skaritīs, tad sakritīs visi, bet nu kā php vai mysql ir ērtāk nezinu) , tad viss nerakstam to pa jaunu (kā ir tagad, manā nelaimīgā php skriptā), lai tas kaut kur gaisā karājas, nezinu, nahrenizēt bez jūtām, tikai ne datubāze, pietiek, ka viens tāds ieraksts tur jau ir.

  2. peec kaa tu tos datus skaties ?

    var mainiities vienai rindai kaut kaadi lauki?

    vai klaat var naakt tikai jauna rinda?

    ja klaat var naakt tikai jauna rinda, tad skaties peec taa unikaalaa koda ...

    ja taada nav tad rindu ievieto.

     

    a ja var mainiities jebkursh lauks tad droshi vien vajag to ar DUPLICATE KEY

    katrai rindai iekš CSV faila un attiecīgi ieraksti tabulas kolonnās mainās katru reizi, nekas nav vienāds, bet ir "vecās" kuras nevajag mainīt/rakstīt vēlreiz pa jaunu/dajebko/likt mierā/un punkts/basta , CODEZ mos iesaki, ka lai šeit: INSERT INTO test VALUES (dati) on duplicate key update nedara neko ar to kolonnu rindu; , ja kāds lauks sakrīt; piemēram:

    tikko palaists tas php skripts un tabulā ierakstījās ar daudziem citiem ierakstiem šis te:

     

    |vards|unikaals_kods|vards3|vards4|vards5|vards6|vards7|vards8|vards9|vards10| un laižam nakamreiz to skriptu tad ja tajā CSV failā atkal ir šā te rindiņa:

     

    |vards|unikaals_kods|vards3|vards4|vards5|vards6|vards7|vards8|vards9|vards10| tad liekam to mierā neko nedaram, t.i. pats galvenais nerakstam to vēlreiz.

     

    pagaidām nekas nesanāk.

  3. Sorry, par iebraucienu drusku ne pa tēmu, bet šito es arī nekad neesmu varējis saprast kā var taisīt tādus kolonu nosaukumus :OOOOOO

    Tas ir tikpat kā bāzt galvu labprātīgi cilpā, nu vienkārši nenormāli prasās pēc bugiem ;)

     

    Update tablea set '1' = 2

    Update tablea set '1' = '2'

     

    vai piemēram

     

    select 1 from tablea

    select '1' from tablea

     

    Gints Plivna

    http://datubazes.wordpress.com

    Kolonnu nosaukumi koes rakstīju ir kā piemērs, ja Tu domā: |vards|unikaals_kods|vards3|vards4|vards5|vards6|vards7|vards8|vards9|vards10| it kā tādas kollonas ir CSV faila un attiecīgi kas tajās ir rakstīts ierakstās datubāzes tabulā test šajās kolonnās (1,2,3,4,5,6,7,8,9,10)

  4. tev to failu vajag saglabaat ???

    maini visu laiku vinjam nosaukumu.

    liec nosaukumaa time() veertiibu

    un buus tev visas veestures ...

    nu tad rakstīsies katru reizi viss pa jaunu un ieraksti saglabāsies katru reizi, neskatories uz to jau iepriekšējo reizi kad palaists skripts tādi jau ierakstījās ieks datubāzes, taja CSV faila ir (kā to varētu izprast mysql) 10 kolonnas, varu pafantazēt lai izprastu |vards|unikaals_kods|vards3|vards4|vards5|vards6|vards7|vards8|vards9|vards10|. katru reizi ka tas skripts nolasīs CSV failu taja var rasties izmaiņas, teiksim būs tā aptuveni 30% vecāko lauku nemainīsies, bet sākuma lauki tajā CSV failā kādi 70% būs jauni, tas var mainīties 50%-50%, 80%-20% utt. mēģināšu tūlīt codez variantu par on duplicate key update liekas ļoti saprotami, pat man, malacis par paskaidrojumu!

  5. Vispār tev nederēs gan tas on dublicate.

     

    Tev tās rindas baigi daudz ? Varbūt vienkārši dari kā Klez rādīja.

    ir datubaze vārdā 'datubāze' taja ir viena tabula vārdā 'test' taja test tabula ir 10 lauki tā arī saucas lauki (1,2,3,4,5,6,7,8,9,10), no 1-9 ir pāris vārdi izņemot otraja unikāls kods, bet 10 lauka būs kādi 10-15 vārdi. Tas augšējais, manis postētais kods vispār tjā lietā neder, ko man vajag? To uzraku meklējot guglē CSVtoSQL.

  6. bet to cvs failu tak ar php var noka4aat ...

    pirms katra insterta taisi selectu :)

     

    $a = mysql_query("SELECT x from table where y='$data'");

    if (mysql_num_rows($a) == 0) mysql_query("INSERT INTO table (y) VALUES ('$data')");

     

    vai arii katru reizi iztiiri tabulu un liec visu cvs saturu tabulaa pa jaunu ...

    ok, ja arī dabūtu to lokāli, ar to pašu cron katras 5. minutes tas fails "pārrakstītos", bet šo te kāds nevar palīdzēt pielabot "ON DUPLICATE KEY UPDATE kaut kas utt." ko vajadzetu pievienot šeit, cik saprotu:

    $sql = "insert into test values (". implode("'", $arr).") ON DUPLICATE KEY UPDATE kaut kas utt.";

     

    tabulā test otrais lauks ir unikāls(cipari un burti), ja tas kaut kā palīdz varbūt var kaut kā slīdzinat, ja tāds jau ir tad daram -neko, jan nav tad ierakstam tabulā test, tā es sava diletanta prātā iedomājos, kā tas ir pareizi un iekš mysql pagaidām nezinu, bet būsu priecīgs uzzināt.

  7. atari, te tiešām nav vajadzīgs PHP.

    Paņem consolē, mysqladminā vai mysql query browserī ieraksti kveriju, kuru izveidosi, izlasot šo dokumentācijas lapu:

    http://dev.mysql.com/doc/refman/5.0/en/load-data.html

    Tur ir daudz piemēri, jo CSV faili var būt ar dažādām atdalošiem simboliem, utt., tāpēc kverijs tev jāizveido pašam.

     

     

    Varētu derēt šis gadījums:

    LOAD DATA INFILE 'data.txt' INTO TABLE tbl_name
     FIELDS TERMINATED BY ',' ENCLOSED BY '"'
     LINES TERMINATED BY '\n';

     

    Nu redzi man tiešām vajag php, jo tas csv fails atrodas citā tīkla uz cita servera, tad tas fails tiek ņemts un ar tā nelaimīgā php koda palīdzību ievadīti datubāzē ieraksti, kas it kā apdeitojas, vecie paliek kā ir un nāk klāt jaunie un tas php skripts reizi 5. minūtēs ar cron palīdzību tiek palaists. Viss darbojas lperfekti, līdz tam, ka ieraksti datubāzē atkārtojas pie katras palaišanas, nav tā ka apdeitojas tikai jaunais, laikam nevajadzēja vispār man skart tēmu par CSV, to tikai informācijas pēc pateicu, interesē lai kāds palīdzētu ar izmaiņām, kāds kods izsktatītos (izmainīts no tā ko iepostēju), lai būtu tikai ierakstu apdeits.

  8. Kāds tur "php pusei" ar kautko sakars? Tā ir tīri MySQL lieta.

    Nu kā tad tie dati ierakstās iekš mysql datubāzes? Ar domu spēku, vai ? Esmu iesācejs, bet domāju, ka jāuzraksta kaut kāds kods, kas tiek izpildīts, lai tas ierakstītos datubāzēs palaižot PHP skriptu. Ar to arī domāju "php pusi", kuru lūdzu palabot, no sērijas laikam te ir tā, tipa zinu, bet neteikšu un nah tadam palīdzet, bet di*rst pasūtīt tā kā laikam nav smuki.

  9. Nu par The CSV Storage Engine par kuru "bubu" rakstīja, tur nav piemērs no php puses kā lai izveido to kodu, bet pamainot uz ENGINE = CSV nekas nemainās. Varbūt kādam/ai nesagādā grūtības palabot to kodu, tā lai tie ieraksti nerakstās pa jaunu. Paldies!

  10. Ir CSV fails (1.CSV), fajag tos ierakstus iedabūt datubāzē (db: datubaaze, tabula: test) uzmeklēju sekojošu skriptu:

     

    <?php

    $connection = mysql_connect("hosts", "vaards", "parole") or die ("Unableto connect to server");

    $db = mysql_select_db("datubaaze", $connection) or die ("Unable toselect database");

    $fcontents = file ('./1.csv');

    for($i=0; $i<sizeof($fcontents); $i++) {

    $line = trim($fcontents[$i]);

    echo "$line<BR>";

    $arr = explode("\"", $line);

    echo "$arr";

    $sql = "insert into test values (". implode("'", $arr)")";

    mysql_query($sql);

    echo $sql ."<br>\n";

    if(mysql_error()) {

    echo mysql_error() ."<br>\n";

    }}

    ?>

     

    Jautājums: vai pastāv iespēja, ka ieraksti no CSV faila neatkārtojas tabulā (neierakstas pa jaunu tai datubazes tabulā) pēc katras skripta palaišanas, bet pārbauda teiksim ja ir tāds ieraksts iekš tabulas 'test', tad neko neadara, ja nav tad it kā apdeito to.

    Paldies jau ieprieks!

     

    p.s. tabulas test izskatas šādi:

     

    CREATE TABLE IF NOT EXISTS `test` (

    `1` text,

    `2` text,

    `3` text,

    `4` text,

    `5` text,

    `6` text,

    `7` text,

    `8` text,

    `9` text,

    `10` text

    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;

  11. Nu ir vajadzīgs un viss, tur nekāds sakars ar profiliem nav, lai izprastu to speciali Tev varu paskaidrot tolku, kam vajadzīgs ID, iedomājies sludinājuma dēli, kur nedrīkst būt redzams vārds un uzvārds, kas ir sludinajumā kā nepieciešamais lauks, visiem, dažiem utt., bet tā vietā visi skaisti redz sludinājuma ID un pēc tā vadās. Lūdzu, tik gūti uzrakstīt, kā man pareizi uzrakstīt to pieskaitīšanu?

  12. Tu gribi teikt, ka tā ierakstīt iekš koda (...id+10*7+19 ). Tas vajadzīgs lai lietojot meklētāju nevarētu pēc id uzzināt citus datus no datubāzes teiksim Tev ir lietotājs Centis Ūbele ar id=5, tad lai domā , ka vinja id=94, tīri tā pa vienkaršo man vajag, nekas nopietns zem ta visa nav.

  13. Tāds sīkums priekš Jums vien būs. Būtu vajadzība biku sajaukt pēdas, lai teiksim lietotāja id vērtība iekš datubāzes nesakristu ar to ko redzēs uz "ekrāna" (ir tāda vajadzība, lai būtu redzams), tātad: echo $row->id; un vajadzētu teiksim id+10*7+19 un tātad uz "ekrāna" , ja id datubāzē piem. ir 5, 94. kā un kas šeit jāpalabo echo $row->id;

    Paldies.

  14. Ir sekojosh skripts:

     

    <?php

     

    if ($userid=$my->id == "66") {

    echo "<b>kautkaads teksts ja sakriit ar id</b>";

    }

    else

    {

    echo "<b>kautkaads teksts ja nesakriit ar id</b>";

    }

    ?>

     

     

    Ir vajadziiba pievienot id veetiibas ( tagad tur ir veertiiba 66, vajadzeetu piem. 50, 51, 52 utt.), kopaa 100. Kas buutu jaapierksta klaat, jau esoshai veertiibai,

    lai taas atdaliitu?

  15. paldies, tagad ir gandrīz tas, ko vēlos, ir tikai viena nianse, parāda visus lietotāja rakstus, kas pēdējais to pievienojis, teiksim lietotājs

    "vasja pupkin" ir ierakstījis pēdējos 3 rakstus no visiem lietotājiem un rāda šādi:

     

    vasja pupkin

    vasja pupkin

    vasja pupkin

     

    bet es vēlos, lai rāda tikai lietotāju vārdus kuri pēdējie rakstījuši rakstus:

     

    vasja pupkin

    chumazik

    borja

  16. Ir šads skripts:

     

     

     

    <?

    // Connect to the database

    mysql_connect ('localhost', 'root', 'password') ;

    mysql_select_db ('db');

     

    // Select random rows from the database

    $result = mysql_query ("SELECT * FROM content, users ORDER BY catid ASC LIMIT 3");

     

    // For all the rows that you selected

    while ($row = mysql_fetch_array($result))

     

    {

    // Display them to the screen...

    echo "<a href=http://localhost/site/celjsh=" . $row["id"] ." target='_parent'>

     

    <b>" . $row["username"] . "</b>

    </a>

    <br />" ;

    }

    ?>

     

     

    kas tas iedarbinās tad tas parāda visus ierakstus no tabulas "users" lauka "username", bet es vēlos, lai parādītu tikai tos "username" ierakstus, kuri ir tabulā "content" kaut ko ierakstījuši, laikam saprotamāk būtu, tā, kad tas skripts iedarbinās parāda visus lietotājus, bet es vēlos, lai parāda tikai tos kuri ir kaut ko ierakstījuši html formā, kas saglabājas tabulā "content" laukā "fulltext" un linku uz viņu rakstu. Piezīme, tabulā "content " ir lauks "created_by" kas sakrīt ar vērtību tabulas "users" lauku "id" . "cat_id" ir tabulas "content" lauks.

     

    Ja sanāca saprotami, palīdziet ar padomu.

  17. Lieta tāda, kad kāds ienāk saitā iedarbinās šads skripts:

     

    <?

    $juuzera_ip = $_SERVER["REMOTE_ADDR"];

    $sliktaas_ip = array('127.0.0.1', '192.168.0.1' utt., utml.);

    if (in_array($juuzera_ip, $sliktaas_ip)) {

    include_once('1.php');

    } else {

    include_once('index.php');

    }

    ?>

     

    Varbūt kādam nesagādā grūtības pievienot šim skriptam, tādu iespēju, ka tiktu izsūtīts e-mail uz piem.: [email protected] ar info, ka ši (banned) IP adrese tikos un tikos ir apmeklējusi saitu.

     

    Paldies!

×
×
  • Create New...