Morphius Posted July 25, 2009 Report Share Posted July 25, 2009 (edited) Lieta sekojoša... Tekstu vēlos sadalīt pa diviem vārdiem, pārbaudīt vai tāda frāze jau neeksistē datubāzē un ja ne tad pievienot! Viss jau būtu labi, tikai apstrādājot lielāku tekstu, izmet kļūdu pie 16 cikla... Lūk mans veikums: $teksts="WASHINGTON House Democrats announced agreement Friday on far-reaching steps designed to rein in the relentless growth of Medicare, part of a concerted effort to counter the impression that President Barack Obama's health care legislation is in deep trouble. Speaker Nancy Pelosi hailed the agreement as a giant step forward for the bill that Obama has made a test of his leadership. Advocates said it eventually would turn Medicare toward a program that rewards quality, rather than volume, as well as alter a system that pays doctors and other providers more in some regions of the country than others."; $varduSkaits=str_word_count($teksts); //Seit ir info par vaardu skaitu $masivs=str_word_count($teksts, 1); //Seit viss teksts tiek ievietots masiivaa $a=0; $b=1; while ($a<$varduSkaits) { $vards1=$masivs[$a]; $vards2=$masivs[$b]; $fraze=$vards1." ".$vards2; include ("db.php"); $result=mysql_query("SELECT * FROM vardi WHERE fraze='$fraze'", $db); if(mysql_num_rows($result) > 0) { // Ja fraaze eksistee, nedaram neko un veidojam naakamo ciklu echo "Fraaze eksistee!<br>"; } else { echo "Fraaze neeksistee!<br>"; // $insertDB=mysql_query("INSERT INTO vardi (fraze) VALUES ('$fraze')", $db) or die(mysql_error()); } $a=$a+2; $b=$b+2; } Pielikumā ir redzams rezultāts ar visu kļūdu... Ja teksts ir mazāks, respektīvi ja ir 15 vārdu pāri, tad viss strādā kā nākas, bet tikko ir 16-tais vārdu pāris, tā izmet, man nesaprotamu, kļūdu! Kur ir problēma? Vai varbūt savādāk var risināt šo problēmu? Edited July 25, 2009 by Morphius Quote Link to comment Share on other sites More sharing options...
Wuu Posted July 25, 2009 Report Share Posted July 25, 2009 Pirmkārt kur tu pieslēdzies datubāzei? Otrkārt str_word_count($teksts, 1); neatgriež ciparus ,ērtāk būtu izmantot EXPLODE Treškārt $insertDB=mysql_query("INSERT INTO vardi (fraze) VALUES ('$fraze')", $db) or die(mysql_error()); Kam tev vajag šo rindu $insertDB= ,ja tu neko neatgriez? Ceturtkārt http://lv.php.net/manual/en/function.mysql-errno.php 5. fraze='$fraze'" < Pēdiņas trūkst man apnika :D Quote Link to comment Share on other sites More sharing options...
Val Posted July 25, 2009 Report Share Posted July 25, 2009 Kļūda kverijā izveidojas dēļ vārda - Obama's Skaties kaut uz http://lv.php.net/mysql_real_escape_string Quote Link to comment Share on other sites More sharing options...
Morphius Posted July 25, 2009 Author Report Share Posted July 25, 2009 (edited) Pirmkārt kur tu pieslēdzies datubāzei? include("db.php"); //iekš cikla redzama šī rindiņa Otrkārt str_word_count($teksts, 1); neatgriež ciparus ,ērtāk būtu izmantot EXPLODE Manuprāt te Tu par daudz salēji... Treškārt $insertDB=mysql_query("INSERT INTO vardi (fraze) VALUES ('$fraze')", $db) or die(mysql_error()); Kam tev vajag šo rindu $insertDB= ,ja tu neko neatgriez? $insertDB vajadzīgs tālākām operācijām, kuras neesmu paspējis sarakstīt! Tādēļ esmu ielicis komentārā, lai netraucē šī funkcija ar savu darbību. Ceturtkārt http://lv.php.net/manual/en/function.mysql-errno.php Kā šis links man var palīdzēt nesaprotu?! Es jau izmantoju mysql_error() bet nekādu jēdzīgu info neemsu dabujis 5. fraze='$fraze'" < Pēdiņas trūkst Kādas f****** pēdiņas...ar sintaksi viss ir kārtībā man apnika :D Manuprāt Tu 30 sekundes atpakal pamodies no dziļa miega, tāpēc sajēga, par apkārt notiekošo, vēl nav pilnībā aktivizējusies. Par to EXPLODE...es pamēģināšu, bet man ir liela nojausma ka rezultāts būs tas pats kas iepriekš! PS Nu redz kā cienītais "Val" atrisināja šo elementāro problēmu...paldies liels Edited July 25, 2009 by Morphius Quote Link to comment Share on other sites More sharing options...
Val Posted July 25, 2009 Report Share Posted July 25, 2009 (edited) Nedomāju, ka $insertDB vajadzētu izpildīt ciklā - labāk visas pievienojamās frāzes pievienot vienā kverijā pēc cikla beigām. Ja vēlies atrast frāzes ierakstu skaitu, tad "SELECT *" ir bik pa traku. Un izvāc pieslēgšanos DB pirms cikla. Paskaties, kas notiek ciklā, ja ir nepāra skaits vārdu (iekš $teksts), ar error_reporting(E_ALL); Edited July 25, 2009 by Val Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.