Autor Zpráva
slovakCZ
Profil
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 *
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 *
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
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
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
Zřejmě je chyba v dotazu, po provedení dotazu si nech vypsat mysql_error();
slovakCZ
Profil
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... :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: