Schleife erkennt nur einen Wert

EddieG

Erfahrenes Mitglied
Hi,
ich habe einen array mit Namen den ich mit einer Liste die mehre Seiten besitzt vergleiche. Den Match gibt es mir jedoch lediglich bei einer obwohl alle daten vorliegen.

PHP:
function getCraftedEnchantID($item_name,$url='')
    {
        $itemName='';
        $id='';
        $items = array();
        $arrTmp;
        echo "<pre>##Name++Line 456### ".print_r($item_name,true)."</pre>"; 
           
            for($i=0;$i<count($item_name);$i++)
            {
                if(isset($itemName))
                {   
                    if($this->is_multi($item_name))
                    {                    
                    $name_search = $item_name[$i][1];
                    echo "<pre>##Name++Line 465### ".print_r($name_search,true)."</pre>";   
                    } else {
                        $name_search = $item_name[0];
                        echo "<pre>##Name++Line 468### ".print_r($name_search,true)."</pre>";
                    }
                }
                else{
                    $name_search = $item_name;
                }
                echo "<pre>##Name++Line 474### ".print_r($name_search,true)."</pre>";
                    $getUrl = $this->apiURL->getUrl('searchItemByName',$name_search,$this->token);
                    $content = $this->tools->jsonDecode($getUrl,$this->token);
                   $content_i = json_decode($content,true);
                    if(isset($content_i['results'][0]['data']['name']['en_US']) && $this->tools->stripEnchantFromItemName($content_i['results'][0]['data']['name']['en_US'])==$name_search)
                    {
                         echo "<pre>".$content_i['results'][0]['data']['name']['en_US']."</pre>";
                          echo "<pre>##Datensatz gefunden++Line 481### ".print_r($name_search,true)."</pre>";
                        
                    }else{
                         echo "<pre>##Name++Line 484### ".print_r($name_search,true)."</pre>";
                       # echo "<pre>url vor ifs ".print_r($url,true)."</pre>";
                        if(isset($url) && !empty($url))
                        {
                               //rebuild name
//                         $re = '~&name.en_US=(.*?)&_page~m';
//                         $nRebuild = $url[0];
//                          preg_match($re, $nRebuild, $nRebuildArr);
//                          echo "<pre> rebuildArr".print_r($nRebuildArr,true)."</pre>";
//                          $rebuildName = str_replace('&%20', ' ', $nRebuildArr[1]);
                           echo "<pre>##Name++Line 494### ".print_r($name_search,true)."</pre>";
                            $getUrl_ = $this->apiURL->getUrl('searchItemByName',array($name_search,$url[0]),$this->token);
                          
                        }else{
                           echo "juhu bin in get url ohne das es ein array ist gelandet \n";
                           echo "<pre>URL :: ".print_r($url,true)."</pre>";
                            echo "<pre>##Name++Line 500### ".print_r($name_search,true)."</pre>";
                           $getUrl_ = $this->apiURL->getUrl('searchItemByName',$name_search,$this->token);
                            }
                        # $getUrl = $this->apiURL->getUrl('searchItemByName',$item_name[$i],$this->token);
                        $contentR = $this->tools->jsonDecode($getUrl_,$this->token);
                        #  echo "foreach aus else start{$i} <pre>".print_r($getUrl,true)."</pre>";
                        $content_R = json_decode($contentR,true);
                         echo "<pre>##Name++Line 507### ".print_r($name_search,true)."</pre>";
                        $this->pageFlipTest($content_R, $name_search, $getUrl_);
                }
        }
       return $items;
    }

wenn der gesuchte Wert nicht gefunden wurde rufe ich die Methode pageFlipTest auf welche dann die neue api url zurückgibt mit dem page offset.
PHP:
function pageFlipTest($inhalt,$suche,$url)
    {
       
        echo "<pre>##Name++Line 297### ".print_r($suche,true)."</pre>";   
        $tt;
        $re = '/_page=\d+/m';
        if (is_array($url)) {
            $str      = $url[0];
            preg_match($re, $str, $matches); //get current page number spot str.
            $currPage = explode('=', $matches[0]);  //extracts the current page number from url
            echo "<pre>##Name++Line 304### ".print_r($name_search,true)."</pre>";   
        } else {
            $re = '/_page=\d+/m';
            echo "<br/> url copyx." . $url . "\n";
            echo "<pre>##Name++Line 308### ".print_r($suche,true)."</pre>";   
        }
        if (is_array($inhalt)) {
            $reTP     = '/_page=\d+/m';
            preg_match($re, $url, $matchesTP);
            $currPage = explode('=', $matchesTP[0]);
            echo "<pre> curr page lautet " . print_r($currPage, true) . "</pre>";
            echo "<pre>##Name++Line 315### ".print_r($suche,true)."</pre>";   
            if ($inhalt['pageCount'] === 1) {
                echo "<pre>##Name++Line 317### ".print_r($suche,true)."</pre>";   
            } elseif ($inhalt['pageCount'] >= 1 && $currPage[1] <= $inhalt['pageCount']) {
                echo "<pre>else if anfang von page count > current page, da " . $inhalt['pageCount'] . " >= " . $currPage[1] . " ist</pre>";
                echo "<pre>##Name++Line 320### ".print_r($suche,true)."</pre>";   
                $nextPage = $currPage[1] + 1; //addition calc 0+currentPage+1 to get the next page
                $re       = '/_page=\d+/m';
                $str      = $url;
                echo "<pre> url ohne änderungen" . print_r($url, true) . "</pre>";
                preg_match($re, $str, $matches); //get current page number spot str.
                //extracts the current page number from url
                $nextPage = ($currPage[1]) + 1; //addition calc 0+currentPage+1 to get the next page
                $regEX    = '~((https?|ftp)://)?([a-z0-9\-\.]*)\.'
                        . '(([a-z]{2,4})|([0-9]{1,3}\.([0-9]{1,3})\.'
                        . '([0-9]{1,3})))(/([a-z0-9+$_%-]\.?)+)*/?'
                        . '(\?[a-z+&\$_.-][a-z0-9;:@&%=+/$_.-]*)?'
                        . '([A-z0-9+$_.&%-]*)(([=A-Za-z*)?('
                        . '[A-Za-z&%0-9]*\s.[A-Za-z]*)|'
                        . '([=A-Za-z*)?([A-Za-z&%0-9]*[A-Za-z]*))?'
                        . '([A-Za-z=_&]*)?(([0-9]{1,5}))~m';
                echo "<pre>##Name++Line 479### ".print_r($suche,true)."</pre>";   
                preg_match($regEX, $url, $nU);
                $nURL = $nU;
                echo "<pre> next Page:: " . print_r($nextPage, true) . "</pre>";
                echo "<pre> nUrl Page:: " . print_r($nURL, true) . "</pre>";
                $t    = preg_replace('/=\d+/m', '=' . $nextPage, $nURL);
                $tt   = $t;
                preg_match('/&access_token=.+\S/m', $url, $res);
                $expl = explode('=', $res[0]);
                echo "<pre>##Name++Line 345### ".print_r($suche,true)."</pre>";   
                $this->getCraftedEnchantID(array($suche), array($tt[0], $expl[1]));
               
            } else {
                echo "<pre>Page count > current page, da " . $inhalt['pageCount'] . " >= " . $currPage[1] . " ist</pre>";
                echo "<pre>##Name++Line 350### ".print_r($suche,true)."</pre>";   
            }
        } else {
            echo "<pre>Beim Inhalt handelt es sich um keinen Array " . print_r($inhalt, true) . "</pre>";
            echo "<pre>##Name++Line 354### ".print_r($suche,true)."</pre>";   
        }
    }
mir ist es einfach nicht ersichtlich, weshalb es nur bei einem Datensatz zuschlägt wo alle anderen 30 auch vorhanden sind.
 
Zuletzt bearbeitet:

Yaslaw

n/a
Moderator
In der ersten Funktion. Was ist da die Liste mit den Namen ? Und was für Seiten sollen wie mit einem Namen abgeglichen werden?
Ist ein wenig viel undokumentierter Code um deine Zweiteilige Frage darin zu finden.
Und in welchem Fall findet er etwas in und welchem nicht?
Hast du ein print_r dieser Liste?
 

EddieG

Erfahrenes Mitglied
Ich ziehe die wichtigen namen aus der db mit fetch_assoc in einer while schleife gebe ich diese weiter um danach zu suchen
PHP:
while($row = $res->fetch_assoc())
         {
            echo "<pre> Gesucht werden muss :: ".print_r($row['item_name'],true)."</pre>";
             $this->getCraftedEnchantID($row['item_name']);
         }
ausgegeben wird dann das
Code:
 Gesucht werden muss :: Agile Soulwalker
 Gesucht werden muss :: Ascended Vigor
 Gesucht werden muss :: Bargain of Critical Strike
 Gesucht werden muss :: Bargain of Haste
 Gesucht werden muss :: Bargain of Mastery
 Gesucht werden muss :: Bargain of Versatility
 Gesucht werden muss :: Celestial Guidance
 Gesucht werden muss :: Damage Retaliator
 Gesucht werden muss :: Dimensional Shifter
 Gesucht werden muss :: Electro-Jump
 Gesucht werden muss :: Eternal Agility
 Gesucht werden muss :: Eternal Insight
 Gesucht werden muss :: Eternal Intellect
 Gesucht werden muss :: Eternal Skirmish
 Gesucht werden muss :: Eternal Stats
 Gesucht werden muss :: Shadowlands Gathering
 Gesucht werden muss :: Sinful Revelation
 Gesucht werden muss :: Soul Treads
 Gesucht werden muss :: Soul Vitality
 Gesucht werden muss :: Strength of Soul
 Gesucht werden muss :: Tenet of Critical Strike
 Gesucht werden muss :: Tenet of Versatility
...

und so schaut die liste die durchsucht werden muss aus

JSON:
Ascended Vigor
{
  "page": 2,
  "pageSize": 14,
  "maxPageSize": 100,
  "pageCount": 2,
  "results": [
    {
      "key": {
        "href": "https://us.api.blizzard.com/data/wow/item/172365?namespace=static-9.0.5_37760-us"
      },
      "data": {
        "level": 1,
        "required_level": 10,
        "sell_price": 22500,
        "item_subclass": {
          "name": {
            "en_US": "Enchanting",
          },
          "id": 10
        },
        "is_equippable": false,
        "purchase_quantity": 1,
        "media": {
          "id": 137815
        },
        "item_class": {
          "name": {
            "en_US": "Recipe",
          },
          "id": 9
        },
        "quality": {
          "name": {
            "en_US": "Common",
          },
          "type": "COMMON"
        },
        "max_count": 1,
        "is_stackable": false,
        "name": {
          "en_US": "Enchant - Ascended Vigor",
        },

ich habe die Methode getCraftedEnchantID nochmal überarbeitet jetzt scheint die Datensätze zu finden jedoch habe ich es irgendwie hinbekommen, daraus eine endlosschelife zu gestalten
Code:
Durchlauf 0 :: Gesucht werden muss :: Agile Soulwalker
count inhalt R :: 100
page sizefor der for schleife:: 100
 URL in ELSE https://eu.api.blizzard.com/data/wow/search/item?namespace=static-eu&locale=en_GB&name.en_US=Agile&%20Soulwalker&_page=1&_pageSize=100&orderby=id&access_token=E...
 item name in ELSE Agile Soulwalker
NAME: :: Agile Soulwalker
 TOKEN :: E...
  https://eu.api.blizzard.com/data/wow/search/item?namespace=static-eu&locale=en_GB&name.en_US=Agile&%20Soulwalker&_page=1&_pageSize=100&orderby=id&access_token=E...
##neue URL ### https://eu.api.blizzard.com/data/wow/search/item?namespace=static-eu&locale=en_GB&name.en_US=Agile&%20Soulwalker&_page=2
 url is ein array und nicht leer
https://eu.api.blizzard.com/data/wow/search/item?namespace=static-eu&locale=en_GB&name.en_US=Agile&%20Soulwalker&_page=2&_pageSize=100&orderby=id&access_token=E...
count inhalt for der for schleife:: 5
page size der for schleife:: 14
AUSGABE in der for schleife fürs array :: Saber's Eye of Agility===Agile Soulwalker
 Datensatz nicht gefunden 1 
  https://eu.api.blizzard.com/data/wow/search/item?namespace=static-eu&locale=en_GB&name.en_US=Agile&%20Soulwalker&_page=2&_pageSize=100&orderby=id&access_token=E...
AUSGABE in der for schleife fürs array :: Agile Brawler's Purse===Agile Soulwalker
 Datensatz nicht gefunden 1 
  https://eu.api.blizzard.com/data/wow/search/item?namespace=static-eu&locale=en_GB&name.en_US=Agile&%20Soulwalker&_page=2&_pageSize=100&orderby=id&access_token=E...
AUSGABE in der for schleife fürs array :: Kraken's Eye of Agility===Agile Soulwalker
 Datensatz nicht gefunden 1 
  https://eu.api.blizzard.com/data/wow/search/item?namespace=static-eu&locale=en_GB&name.en_US=Agile&%20Soulwalker&_page=2&_pageSize=100&orderby=id&access_token=E...
AUSGABE in der for schleife fürs array :: Battle Potion of Agility===Agile Soulwalker
 Datensatz nicht gefunden 1 
  https://eu.api.blizzard.com/data/wow/search/item?namespace=static-eu&locale=en_GB&name.en_US=Agile&%20Soulwalker&_page=2&_pageSize=100&orderby=id&access_token=E...
AUSGABE in der for schleife fürs array :: Battle Potion of Agility===Agile Soulwalker
 Datensatz nicht gefunden 1 
  https://eu.api.blizzard.com/data/wow/search/item?namespace=static-eu&locale=en_GB&name.en_US=Agile&%20Soulwalker&_page=2&_pageSize=100&orderby=id&access_token=E...
AUSGABE in der for schleife fürs array :: Battle Potion of Agility===Agile Soulwalker
 Datensatz nicht gefunden 1 
  https://eu.api.blizzard.com/data/wow/search/item?namespace=static-eu&locale=en_GB&name.en_US=Agile&%20Soulwalker&_page=2&_pageSize=100&orderby=id&access_token=E...
AUSGABE in der for schleife fürs array :: Scroll of Agile Swimming===Agile Soulwalker
 Datensatz nicht gefunden 1 
  https://eu.api.blizzard.com/data/wow/search/item?namespace=static-eu&locale=en_GB&name.en_US=Agile&%20Soulwalker&_page=2&_pageSize=100&orderby=id&access_token=E...
AUSGABE in der for schleife fürs array :: Brawler's Battle Potion of Agility===Agile Soulwalker
 Datensatz nicht gefunden 1 
  https://eu.api.blizzard.com/data/wow/search/item?namespace=static-eu&locale=en_GB&name.en_US=Agile&%20Soulwalker&_page=2&_pageSize=100&orderby=id&access_token=E...
AUSGABE in der for schleife fürs array :: Superior Battle Potion of Agility===Agile Soulwalker
 Datensatz nicht gefunden 1 
  https://eu.api.blizzard.com/data/wow/search/item?namespace=static-eu&locale=en_GB&name.en_US=Agile&%20Soulwalker&_page=2&_pageSize=100&orderby=id&access_token=E...
AUSGABE in der for schleife fürs array :: Leviathan's Eye of Agility===Agile Soulwalker
 Datensatz nicht gefunden 1 
  https://eu.api.blizzard.com/data/wow/search/item?namespace=static-eu&locale=en_GB&name.en_US=Agile&%20Soulwalker&_page=2&_pageSize=100&orderby=id&access_token=E...
AUSGABE in der for schleife fürs array :: Superior Battle Potion of Agility===Agile Soulwalker
 Datensatz nicht gefunden 1 
  https://eu.api.blizzard.com/data/wow/search/item?namespace=static-eu&locale=en_GB&name.en_US=Agile&%20Soulwalker&_page=2&_pageSize=100&orderby=id&access_token=E...
AUSGABE in der for schleife fürs array :: Potion of Spectral Agility===Agile Soulwalker
 Datensatz nicht gefunden 1 
  https://eu.api.blizzard.com/data/wow/search/item?namespace=static-eu&locale=en_GB&name.en_US=Agile&%20Soulwalker&_page=2&_pageSize=100&orderby=id&access_token=E...
AUSGABE in der for schleife fürs array :: Agile Soulwalker===Agile Soulwalker
##Datensatz Gefunden 1 druchlauf 12### Agile Soulwalker
AUSGABE in der for schleife fürs array :: Eternal Agility===Agile Soulwalker
 Datensatz nicht gefunden 1 
  https://eu.api.blizzard.com/data/wow/search/item?namespace=static-eu&locale=en_GB&name.en_US=Agile&%20Soulwalker&_page=2&_pageSize=100&orderby=id&access_token=E...
NAME: :: Agile Soulwalker
 TOKEN :: E...
  https://eu.api.blizzard.com/data/wow/search/item?namespace=static-eu&locale=en_GB&name.en_US=Agile&%20Soulwalker&_page=1&_pageSize=100&orderby=id&access_token=E...
##neue URL ### https://eu.api.blizzard.com/data/wow/search/item?namespace=static-eu&locale=en_GB&name.en_US=Agile&%20Soulwalker&_page=2
 url is ein array und nicht leer
https://eu.api.blizzard.com/data/wow/search/item?namespace=static-eu&locale=en_GB&name.en_US=Agile&%20Soulwalker&_page=2&_pageSize=100&orderby=id&access_token=E...
count inhalt for der for schleife:: 5
page size der for schleife:: 14
AUSGABE in der for schleife fürs array :: Saber's Eye of Agility===Agile Soulwalker
 Datensatz nicht gefunden 1 
  https://eu.api.blizzard.com/data/wow/search/item?namespace=static-eu&locale=en_GB&name.en_US=Agile&%20Soulwalker&_page=2&_pageSize=100&orderby=id&access_token=E...
AUSGABE in der for schleife fürs array :: Agile Brawler's Purse===Agile Soulwalker
 Datensatz nicht gefunden 1 
 https://eu.api.blizzard.com/data/wow/search/item?namespace=static-eu&locale=en_GB&name.en_US=Agile&%20Soulwalker&_page=2&_pageSize=100&orderby=id&access_token=E...
AUSGABE in der for schleife fürs array :: Kraken's Eye of Agility===Agile Soulwalker
 Datensatz nicht gefunden 1 
 https://eu.api.blizzard.com/data/wow/search/item?namespace=static-eu&locale=en_GB&name.en_US=Agile&%20Soulwalker&_page=2&_pageSize=100&orderby=id&access_token=E...
AUSGABE in der for schleife fürs array :: Battle Potion of Agility===Agile Soulwalker
 Datensatz nicht gefunden 1 
 https://eu.api.blizzard.com/data/wow/search/item?namespace=static-eu&locale=en_GB&name.en_US=Agile&%20Soulwalker&_page=2&_pageSize=100&orderby=id&access_token=E...
AUSGABE in der for schleife fürs array :: Battle Potion of Agility===Agile Soulwalker
 Datensatz nicht gefunden 1 
  https://eu.api.blizzard.com/data/wow/search/item?namespace=static-eu&locale=en_GB&name.en_US=Agile&%20Soulwalker&_page=2&_pageSize=100&orderby=id&access_token=E...
AUSGABE in der for schleife fürs array :: Battle Potion of Agility===Agile Soulwalker
 Datensatz nicht gefunden 1 
  https://eu.api.blizzard.com/data/wow/search/item?namespace=static-eu&locale=en_GB&name.en_US=Agile&%20Soulwalker&_page=2&_pageSize=100&orderby=id&access_token=E...
AUSGABE in der for schleife fürs array :: Scroll of Agile Swimming===Agile Soulwalker
 Datensatz nicht gefunden 1 
  https://eu.api.blizzard.com/data/wow/search/item?namespace=static-eu&locale=en_GB&name.en_US=Agile&%20Soulwalker&_page=2&_pageSize=100&orderby=id&access_token=E...
AUSGABE in der for schleife fürs array :: Brawler's Battle Potion of Agility===Agile Soulwalker
 Datensatz nicht gefunden 1 
  https://eu.api.blizzard.com/data/wow/search/item?namespace=static-eu&locale=en_GB&name.en_US=Agile&%20Soulwalker&_page=2&_pageSize=100&orderby=id&access_token=E...
AUSGABE in der for schleife fürs array :: Superior Battle Potion of Agility===Agile Soulwalker
 Datensatz nicht gefunden 1 
  https://eu.api.blizzard.com/data/wow/search/item?namespace=static-eu&locale=en_GB&name.en_US=Agile&%20Soulwalker&_page=2&_pageSize=100&orderby=id&access_token=E...
AUSGABE in der for schleife fürs array :: Leviathan's Eye of Agility===Agile Soulwalker
 Datensatz nicht gefunden 1 
  https://eu.api.blizzard.com/data/wow/search/item?namespace=static-eu&locale=en_GB&name.en_US=Agile&%20Soulwalker&_page=2&_pageSize=100&orderby=id&access_token=E...
AUSGABE in der for schleife fürs array :: Superior Battle Potion of Agility===Agile Soulwalker
 Datensatz nicht gefunden 1 
  https://eu.api.blizzard.com/data/wow/search/item?namespace=static-eu&locale=en_GB&name.en_US=Agile&%20Soulwalker&_page=2&_pageSize=100&orderby=id&access_token=E...
AUSGABE in der for schleife fürs array :: Potion of Spectral Agility===Agile Soulwalker
 Datensatz nicht gefunden 1 
  https://eu.api.blizzard.com/data/wow/search/item?namespace=static-eu&locale=en_GB&name.en_US=Agile&%20Soulwalker&_page=2&_pageSize=100&orderby=id&access_token=E...
AUSGABE in der for schleife fürs array :: Agile Soulwalker===Agile Soulwalker
##Datensatz Gefunden 1 druchlauf 12### Agile Soulwalker
AUSGABE in der for schleife fürs array :: Eternal Agility===Agile Soulwalker

PHP:
function getCraftedEnchantID($item_name, $url = '') {
        $itemName = '';
        $id       = '';
        $items    = array();
        $arrTmp;
        if (isset($url) && !empty($url)) {
            echo "<pre> url is ein array und nicht leer</pre>";
            $getUrl    = $this->apiURL->getUrl('searchItemByName', array($item_name, $url[0]), $this->token);
            $content   = $this->tools->jsonDecode($getUrl, $this->token);
            $content_i = json_decode($content, true);
            #echo "<pre>".print_r($getUrl,true)."</pre>";
            $k         = 0;
            #echo "<pre>count inhalt :: ".count($content_i)."</pre>";
            if ($k < $content_i['pageSize']) {
                for ($i = 0; $i < $content_i['pageSize']; $i++) {
                     echo "<pre>AUSGABE in der for schleife fürs array :: ".print_r($this->tools->stripEnchantFromItemName($content_i['results'][$i]['data']['name']['en_US']),true).""
                            . "===".$item_name."</pre>";
                    if (isset($content_i['results'][$i]['data']['name']['en_US']) && $this->tools->stripEnchantFromItemName($content_i['results'][$i]['data']['name']['en_US']) === $item_name) {
                        echo "<pre>##Datensatz Gefunden 1 druchlauf {$k}### " . print_r($item_name, true) . "</pre>";
                        $items = $content_i;
                        #echo "IF url array ::  <pre>" . print_r($items, true) . "</pre>";
                    } else {
                         $this->pageFlipTest($content_i, $item_name, $getUrl);
                        #    echo "<pre> Datensatz der gerade verglichen wurden mit dem gesuchten war :: ".$this->tools->stripEnchantFromItemName($content_i['results'][$i]['data']['name']['en_US'])."</pre>";
                    }
                    $k++;
                }
            } else {
               # echo "<pre> Datensatz nicht gefunden </pre>;"
         
            }
        }
  
  
        else {
            $getUrl_   = $this->apiURL->getUrl('searchItemByName', $item_name, $this->token);
            $contentR  = $this->tools->jsonDecode($getUrl_, $this->token);
            $content_R = json_decode($contentR, true);
            # echo "<pre>count inhalt :: ".count($content_R)."</pre>";
            # echo "<pre>".print_r($getUrl_,true)."</pre>";
            $k         = 0;
            if ($k < $content_R['pageSize']) {
                for ($i = 0; $i <$content_R['pageSize']; $i++) {
                   
                    if (isset($content_R['results'][$i]['data']['name']['en_US']) && $this->tools->stripEnchantFromItemName($content_R['results'][$i]['data']['name']['en_US']) === $item_name) {
                        echo "<pre>##Datensatz gefunden 2 ### " . print_r($item_name, true) . "</pre>";
                        $items = $contentR;
                       echo "ELSE :: <pre>" . print_r($items, true) . "</pre>";
                    } else {
                            $getUrl_   = $this->apiURL->getUrl('searchItemByName', $item_name, $this->token);
                            $contentR  = $this->tools->jsonDecode($getUrl_, $this->token);
                            $content_R = json_decode($contentR, true);
                            #  echo "<pre>".print_r($getUrl_,true)."</pre>";
                            $this->pageFlipTest($content_R, $item_name, $getUrl_);
                         # sorgt für endlosschleife irgendwie :: $this->pageFlipTest($content_R, $item_name, $getUrl_);
                    }
                    $k++;
                }
            } else {
                #echo "<pre> Datensatz nicht gefunden ".$this->tools->stripEnchantFromItemName($content_R['results'][$i]['data']['name']['en_US'])."</pre>";
                $getUrl_   = $this->apiURL->getUrl('searchItemByName', $item_name, $this->token);
                $contentR  = $this->tools->jsonDecode($getUrl_, $this->token);
                $content_R = json_decode($contentR, true);
                #  echo "<pre>".print_r($getUrl_,true)."</pre>";
               # $this->pageFlipTest($content_R, $item_name, $getUrl_);
            }
        }

        return $items;
    }
Bevor ich es geschafft habe die Endlosschelife daraus zu gestalten. Was auch interessant ist, dass es mir manche listen eintrage die ich durchsuche mehrfach ausgibt wie bspw. "Battle Potion of Agility"

Wenn ich keine mehreren Seiten zu durchsuchen habe gibt er mir die Datensätze zurück jedoch wurden die nicht in form eines arrays ausgegeben. Obwohl ich json_decode(..,true) gesetzt habe.
Code:
{"page":1,"pageSize":77,"maxPageSize":100,"pageCount":1,"results":[{"key":{"href":"https://eu.api.blizzard.com/data/wow/item/22678?namespace=static-9.0.5_37760-eu"},""data":{"level":29,"required_level":0,"sell_price":111303,"item_subclass":{"name":{"it_IT":"V....
 
Zuletzt bearbeitet:

EddieG

Erfahrenes Mitglied
Ich habe das vergleichen noch einmal neu geschrieben, er findet nun alle daten die zumindest nur eine Seite haben worin sie zu finden seien könnten. Jedoch findet er nicht die Daten die auf Seite 2 /3 4 etc seien könnten.
PHP:
   function getCraftedID($content, $str) {
        # echo "<pre>content inhalt == ".print_r($content,true)."</pre>";
        $found = 0;
        #echo "<pre>".print_r($content,true)."</pre>";
        echo "<pre><b>Gesucht wird {$str} dieser hat ".$content['pageSize']." inhalte auf der Seite ".$content['page']." und ".$content['pageCount']." Seiten in Summe </b></pre>";
        for ($i = 0; $i < (int) $content['pageSize']; $i++) {

            if ($this->tools->stripEnchantFromItemName($content['results'][$i]['data']['name']['en_US']) === $str) {
                echo "<pre><i>Durchlauf {$i}</i> <b>Datensatz gefunden ::                    " . $content['results'][$i]['data']['name']['en_US'] . "</b></pre>";
                $found = 1;
                break;
            } else {
                $found = 0;
                echo "<pre><i>Durchlauf {$i}</i> Datensatz nicht gefunde " . $content['results'][$i]['data']['name']['en_US'] . "</pre>";
            }
        }
        echo "<pre>".print_r($found,true)."</pre>";
        if ($found == 0) {
            echo "<pre>Der Str {$str} konnte auf der Seite ".$str." nicht gefunden werden</pre>";
            $currentPage = $content['page'];
            $nextPage    = 0;
            $nextPage    = $currentPage + 1;
            $getUrl      = $this->apiURL->getUrl('searchItemByNamePage', $str, $this->token, $nextPage);
            echo "<pre> str wird neu gesucht mit der URL " . print_r($getUrl, true) . "</pre>";
            $content_new = $this->tools->jsonDecode($getUrl, $this->token);
            $content_i   = json_decode($content_new, true);
            echo "<pre>".print_r($content_i,true)."</pre>";
            $this->getCraftedID($content_i, $str);
        } else {
            echo "<pre><b><h1>Datensatz gefunden ::                    " . $str . "</h1></b></pre>";
        }
    }

Der Print_r Sieht so aus

Code:
Durchlauf 0 :: Gesucht werden muss :: Agile Soulwalker
Gesucht wird Agile Soulwalker dieser hat 100 inhalte auf der Seite 1 und 2 Seiten in Summe
Durchlauf 0 Datensatz nicht gefunden Scroll of Agility II
Durchlauf 1 Datensatz nicht gefunden Elixir of Minor Agility
Durchlauf 2 Datensatz nicht gefunden Recipe: Elixir of Minor Agility
Durchlauf 3 Datensatz nicht gefunden Scroll of Agility
Durchlauf 4 Datensatz nicht gefunden Elixir of Lesser Agility
.
.
.
Durchlauf 97 Datensatz nicht gefunden Formula: Enchant Cloak - Word of Agility
Durchlauf 98 Datensatz nicht gefunden Formula: Enchant Cloak - Binding of Agility
Durchlauf 99 Datensatz nicht gefunden Saber's Eye of Agility

Der Str Agile Soulwalker konnte auf der Seite Agile Soulwalker nicht gefunden werden
 str wird neu gesucht mit der URL https://eu.api.blizzard.com/data/wow/search/item?namespace=static-eu&locale=en_GB&name.en_US=Agile&%20Soulwalker&_page=2&_pageSize=100&orderby=id&access_token=E...

Durchlauf 1 :: Gesucht werden muss :: Ascended Vigor
Gesucht wird Ascended Vigor dieser hat 77 inhalte auf der Seite 1 und 1 Seiten in Summe
Durchlauf 57 Datensatz nicht gefunden Recipe: Ascended Leviathan's Eye Loop
Durchlauf 58 Datensatz gefunden ::                    Enchant Weapon - Ascended Vigor
Durchlauf 2 :: Gesucht werden muss :: Bargain of Critical Strike
Gesucht wird Bargain of Critical Strike dieser hat 9 inhalte auf der Seite 1 und 1 Seiten in Summe
Durchlauf 0 Datensatz nicht gefunden Death's Bargain
Durchlauf 1 Datensatz nicht gefunden Haramad's Bargain
Durchlauf 2 Datensatz nicht gefunden Bargain Gloves
Durchlauf 3 Datensatz nicht gefunden Perilous Bargain
Durchlauf 4 Datensatz nicht gefunden Bwonsamdi's Bargain
Durchlauf 5 Datensatz gefunden ::                    Enchant Ring - Bargain of Critical Strike
.
.
.
Durchlauf 8 Datensatz gefunden ::                    Enchant Ring - Bargain of Versatility
Datensatz gefunden ::                    Bargain of Versatility

Durchlauf 6 :: Gesucht werden muss :: Celestial Guidance
Gesucht wird Celestial Guidance dieser hat 100 inhalte auf der Seite 1 und 2 Seiten in Summe
Durchlauf 0 Datensatz nicht gefunden Celestial Orb
Durchlauf 1 Datensatz nicht gefunden Celestial Stave
Durchlauf 2 Datensatz nicht gefunden Celestial Tunic
.
.
.
Durchlauf 99 Datensatz nicht gefunden Celestial Calf

Der Str Celestial Guidance konnte auf der Seite Celestial Guidance nicht gefunden werden
 str wird neu gesucht mit der URL https://eu.api.blizzard.com/data/wow/search/item?namespace=static-eu&locale=en_GB&name.en_US=Celestial Guidance&_page=2&_pageSize=100&orderby=id&access_token=E...
 
Zuletzt bearbeitet:

Yaslaw

n/a
Moderator
Ich muss ganz ehrlich sein. Ich habe mir die Zeit nicht genommen um herauszufinden was da ab geht. Du suscht nach irgendwas in einem JSON das du Liste nennst. Ich erkenne darin keinerlei Listenstruktur.
 

EddieG

Erfahrenes Mitglied
Ich muss ganz ehrlich sein. Ich habe mir die Zeit nicht genommen um herauszufinden was da ab geht. Du suscht nach irgendwas in einem JSON das du Liste nennst. Ich erkenne darin keinerlei Listenstruktur.
für mich ist es einfach eine aber es ist keine listen Struktur. Ich habe es mehr oder weniger gelöst. Das einzige was ich nicht verstehe ist weshalb manche Daten zurückgeschickt werden und manche wiederum nicht. (Die Daten die einen rekursiven Aufruf der Methode benötigen werden nicht zurück geschickt)

der Aufbau ist folgender

PHP:
function getItemsToUpdate()
{
...
     while($row = $res->fetch_assoc())
         {
            echo "<pre>Durchlauf {$i} :: Gesucht werden muss :: ".print_r($row['item_name'],true)."</pre>";
             $getUrl = $this->apiURL->getUrl('searchItemByName',$row['item_name'],$this->token);
             $content  = $this->tools->jsonDecode($getUrl, $this->token);
             $content_decoded = json_decode($content, true);
             $itemData = $this->getCraftedID($content_decoded,$row['item_name']);
          
            echo "<pre>".print_r($itemData,true)."</pre>";
     }

}

function getCraftedID($content, $str) {
        $found = 0;
        $page = 1;
        $key= 0;
        $localization = array();
        $id=0;
        for ($i = 0; $i < (int) $content['pageSize']; $i++) {

            if ($this->tools->stripEnchantFromItemName($content['results'][$i]['data']['name']['en_US']) === $str) {
                $found = 1;
                array_push($localization,array('it'=>$content['results'][$i]['data']['name']['it_IT'],'ru'=>$content['results'][$i]['data']['name']['ru_RU'],
                        'gb'=>$content['results'][$i]['data']['name']['en_GB'],'tw'=>$content['results'][$i]['data']['name']['zh_TW'],
                        'kr'=>$content['results'][$i]['data']['name']['ko_KR'],'us'=>$content['results'][$i]['data']['name']['en_US'],
                    'br'=>$content['results'][$i]['data']['name']['pt_BR'],'es'=>$content['results'][$i]['data']['name']['es_ES'],
                    'cn'=>$content['results'][$i]['data']['name']['zh_CN'],'fr'=>$content['results'][$i]['data']['name']['fr_FR'],
                    'de'=>$content['results'][$i]['data']['name']['de_DE']));
                $id=$content['results'][$i]['data']['id'];
              
                break;
            } else {
                $found = 0;
            }
        }
        if ($found == 0) {
            $currentPage = $content['page'];
            $nextPage    = 0;
            $nextPage    = $currentPage + 1;
            $getUrl      = $this->apiURL->getUrl('searchItemByNamePage', $str, $this->token, $nextPage);
           # echo "<pre> str wird neu gesucht mit der URL " . print_r($getUrl, true) . "</pre>";
            $content_new = $this->tools->jsonDecode($getUrl, $this->token);
            #echo "<pre> content NEU " . print_r(json_decode($content_new), true) . "</pre>";
            $content_i   = json_decode($content_new, true);
            #echo "<pre>".print_r($content_i,true)."</pre>";
            $this->getCraftedID($content_i, $str);
        } else {
            echo "<pre><b><h1>Datensatz gefunden ::                    " . $str . "</h1></b></pre>";
            return array('id'=>$id,'localization'=>$localization);
        }
    }
Innerhalb der Methode getCraftedID sind noch alle Daten vorhanden sobald ich die Daten aber an die Update Methode sende bekommt er aber nur die die wie bereits genannt die Daten die keine Rekursion der Methode getCraftedID durchlebt haben.

Ok habs gelöst hatte ein return vor dem erneuten aufruf derselben Methode vergessen. Musste nur Zeile 50
PHP:
$this->getCraftedID($content_i, $str);
in
PHP:
return $this->getCraftedID($content_i, $str);
ändern
 
Zuletzt bearbeitet: