Autor | Zpráva | ||
---|---|---|---|
slovakCZ Profil |
#1 · Zasláno: 28. 10. 2009, 16:46:38
dobrý den, jsem tu opět s problémem, který neumim vyřešit. Snažím se upravit záznamy v db v jedné tabulce hrmadně. Ovšem skript mi upravuje pouze poslední záznam v této tabulce a nikde nemohu najít chybu. Tento konkrétní příklad má zjistit sranky vložených stránek do textarea a poté je vložit do databáze. Ukážu zde jen tu poslední problematickou čát kódu. Nevidíte tam někde chybu, která způsobuje to, že mi upravuje pouze poslední záznama ne všechny?
<?php include "inc/config.php"; //zde jsou udaje o pripojeni k db if (isset($_POST['urls'])) //kdyz jsou odeslane url v textarea tak pokracujeme... { $ziskane = $_POST['urls']; //url se vlozi do promene $ziskane $pieces = explode("\n", $ziskane); //projdeme si ziskane url z textarea foreach ($pieces as $url){ //zde zacina skript, ktery zjisti srank $params = array("0", htmlspecialchars("http://www.$url"), 0); $request = xmlrpc_encode_request("getRank", $params); $context = stream_context_create(array('http' => array('method'=>"POST",'header'=>"Content-Type: text/xml",'content'=>$request))); $file = file_get_contents('http://srank.seznam.cz', false, $context); $response = xmlrpc_decode($file); //konec skriptu ktery zjistuje srank if ($response['status'] == 200) { echo "$url - "; //vypiseme URL kterou jsme vlozili do textaream $zjisteny = (round($response['rank'] / 2.55,0)); // do promene $zjisteny ulozime nas zjisteny srank dane url echo $zjisteny; //vypiseme zjisteny srank echo "<br>"; // odradkujeme a pote se vypisi dalsi url a jejich sranky $vloz = mysql_query("UPDATE `tabulka` SET `srank` = '$zjisteny' WHERE `url` = '$url'", $spojeni); }}} ?> vypis sranku na stranku mi funguje bez problemu... proc tedy UPDATE daabaze ne? nevidim tam nikde zadnou chybu =o/ |
||
dan_55 Profil * |
#2 · Zasláno: 28. 10. 2009, 17:07:19
WHERE `url` = '$url'" Když to upravuješ podle WHERE url='$url' tak to změní pouze věci se stejnou url v db |
||
dan_55 Profil * |
#3 · Zasláno: 28. 10. 2009, 17:10:44
promin beru zpět,.
ty máš vše ve foreach. Dotaz máš v proměné $vloz, a nikde ten sql dotaz nevykonáš. Asi ho vykonáš až za foreach, tuďiž se provede jen update té poslední url echo "<br>"; // odradkujeme a pote se vypisi dalsi url a jejich sranky $vloz = mysql_query("UPDATE `tabulka` SET `srank` = '$zjisteny' WHERE `url` = '$url'", $spojeni); if ($vloz){echo"Vše ok";}else{echo"Nastala chyba";} }}} |
||
slovakCZ Profil |
#4 · Zasláno: 28. 10. 2009, 17:51:38
jen se tedy zeptam, jak mysql dotaz vykonat :) mam podobny skript, kde zjistuju a ukladam do DB stejnym zpusoem pagerank... a vse funguje ok...
kde ho vykonavam nejak takto: foreach ($pieces as $url) { $url = trim($url); echo $url; echo "<br>PR: "; echo pagerank($url); $zjisteny = pagerank($url); echo "<br><br>"; $vloz = mysql_query("UPDATE `tabulka` SET `pagerank` = '$zjisteny' WHERE `url` = '$url'", $spojeni); } a vse mi jde OK.. takze nechapu proc zde ne.. v prikladu s pagerankem take vypisu jendrive URL a jeji PR a pote updatuju DB.. v prikladu nahore (s srankem) to mam resene naprosto stejne a nefunguje to =o/ nejaka chybka tam byt musi a netusim ale kde =o/ |
||
slovakCZ Profil |
#5 · Zasláno: 28. 10. 2009, 17:55:35
aha... nasel jsem kde to blbne.. kdyz odstranim tu podminku:
if ($response['status'] == 200) { tak jde vse v poradku.. no tak to teda nechapu, jelikoz vyis dat na stranku je take v teto podmince a ten se vykona a mysql_query se uz nevykona?? cim to muze byt zpusobeno?? |
||
AM_ Profil |
#6 · Zasláno: 28. 10. 2009, 20:10:38
Zřejmě je chyba v dotazu, po provedení dotazu si nech vypsat mysql_error();
|
||
slovakCZ Profil |
#7 · Zasláno: 28. 10. 2009, 20:19:36
no nejak to nechapu, restartoval se mi sam PC kvuli aktualizacim a ted mi vse funguje OK a bez problemu... uz nemam sily se pidit po tom, kde byla chyba (v mysql dotazu urcite ne).. hlavni je, ze to z nejakeho duvodu proste funguje.. diky vsem za ochotu a ja jdu pracovat dal, konecne to mam po nekolika hodinach vyresene a ani sam nevim jak se mi to povedlo... :)
|
||
Časová prodleva: 15 let
|
0