| 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: 17 let
|
|||
0