SIMPLE HTML DOM - Pomoc – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

SIMPLE HTML DOM - Pomoc – PHP – Fórum – Programujte.comSIMPLE HTML DOM - Pomoc – PHP – Fórum – Programujte.com

 

webdorf0
Newbie
10. 11. 2016   #1
-
0
-

 Problém je, že ostatní názvy to vypisuje všechny, potřeboval bych ale vypsat jeden název... 
Aktuálně to dělá: Název ostatní: anglický-The Jungle Book;slovenský-Kniha džunglí 
Když dám třeba $nazev[$1], $nazev[$2] aby to vypsalo jen (jeden název)...

<?php
include 'global.php';

$host = 'host';
$db   = 'db';
$user = 'user';
$pass = 'pass';
$charset = 'utf8';

$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$opt = [
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES   => false,
];
$pdo = new PDO($dsn, $user, $pass, $opt);

$stmt = $pdo->query('SELECT SQL_CALC_FOUND_ROWS * FROM `filmy` WHERE `id` =600');
while ($row = $stmt->fetch())
{
    $id = $row['id'];
    $name1 = str_replace(" ", "+", $name = $row['nazev']);
    $name_en = $row['nazev_original'];
    $year= $row['rok'];
    
    
    //diakritiky

setlocale(LC_ALL, 'czech'); 
$name2 = iconv("utf-8", "us-ascii//TRANSLIT", $name1);
echo $name2;
//diakritiky

$html = file_get_html('http://www.csfd.cz/hledat/?q='.$name2.'+'.$year.'');
}
$filmy = '';

$i = 0;
foreach( $html->find('#search-films li') as $film_html){
  $i++;
  $film = str_get_html($film_html);
  $filmy[$i]['nazev'] = $film->find('a.film', 0)->innertext;
  $el_type = $film->find('.film-type', 0);
  $filmy[$i]['typ'] = $el_type ? $el_type->innertext : null;
  $filmy[$i]['rating'] = csfdRating( $film->find('a.film', 0)->class );
  $filmy[$i]['id'] = csfdId( $film->find('a.film', 0)->href );
  $filmy[$i]['rok'] = csfdHledatRok( $film );
}

if(!$filmy AND $html->find('#pg-film', 0)){
  $info = $html->find('.info', 0);
  $filmy[1]['nazev'] = trim( $info->find('h1', 0)->innertext );
  //echo $info->find('.origin', 0)->innertext;
  $filmy[1]['rok'] = csfdHledatRok( $info->find('.origin', 0) );
  $filmy[1]['id'] = csfdId( $html->find('.trivia a', 0)->href );
  $filmy[1]['typ'] = '';
  $filmy[1]['rating'] = csfdConvertRating( $html->find('#rating .average', 0)->innertext );
}

foreach($filmy as $film){
$iddd = $film['id'];
$rok =  $film['rok'];
$nazev = $film['nazev'];
}
?>

<?php
$dom = new domDocument;
$csfd = file_get_contents("http://www.csfd.cz/film/$iddd");
$html = (ord($csfd[0]) == 31) ? gzdecode($csfd) : $csfd;
@$dom->loadHTML($html);
$dom->preserveWhiteSpace = false;

$xpath = new DOMXPath($dom);
$nazvy = array();
$zeme = array();
$names_other = "";
$nodes = $xpath->query("//h1[@itemprop='name']");
$names_cs = $nodes->item(0)->nodeValue;

foreach($xpath->query("//ul[@class='names']/li/h3") as $li) {
    $nazvy[] = $li->nodeValue;
}
foreach($xpath->query("//ul[@class='names']/li/img") as $li) {
    $zeme[] = $li->getAttribute('alt');
}
for($i=0;$i<count($nazvy);$i++){
    if($i==count($nazvy)-1)
        $names_other .= $zeme[$i]."-".$nazvy[$i];
    else
        $names_other .= $zeme[$i]."-".$nazvy[$i].";";
}

$nodes = $xpath->query("//h2[@class='average']");
$hodnoceni = str_replace('%', '', $nodes->item(0)->nodeValue);

$nodes = $xpath->query("//p[@class='origin']");
$podrobnosti = explode(", ", $nodes->item(0)->nodeValue);

$nodes = $xpath->query("//p[@class='genre']");
$genre = str_replace(' / ', ', ', $nodes->item(0)->nodeValue);

$nodes = $xpath->query("//span[@data-truncate='340']");
$hraji = $nodes->item(0)->nodeValue;                                   

$nodes = $xpath->query("//div[@data-truncate='570']");
$popis = $nodes->item(0)->nodeValue;

$nodes = $xpath->query("//img[@class='film-poster']");
$poster_url = "http:".$nodes->item(0)->getAttribute('src');

?> Název CZ: <?php echo $names_cs; ?> </br> <?php
?> Název ostatní: <?php echo $names_other;      ?> </br> <?php
?> Rok: <?php echo $rok;   ?> </br> <?php
?> Žánry: <?php echo $genre;   ?> </br> <?php
?> Hodnocení: <?php echo $hodnoceni;  ?> </br> <?php
?> Hrají: <?php echo $hraji;   ?> </br> <?php
?> Plakát: <?php echo $poster_url;  ?> </br> <?php
?> Popis: <?php echo $popis;  ?> </br> <?php          

?>
Nahlásit jako SPAM
IP: 89.103.172.–
peter
~ Anonymní uživatel
4013 příspěvků
11. 11. 2016   #2
-
0
-

   

foreach($filmy as $film){
$iddd = $film['id'];
$rok =  $film['rok'];
$nazev = $film['nazev'];
}

To je nejspis nesmysl. Pokud je tam 10 filmu, tak se ulozi jen posledni radek.

 $nazev[$1]

A tohle je co? Chapal bych $nazev[0], ale s $? A vis jiste, ze mas zapnute error_reporting a to nehlasi zadny error? 

@ini_set("error_reporting", E_ALL);
@ini_set("display_errors", "on"); 
error_reporting(E_ALL);		//chyby = on

...jakykoliv dalsi php kod s chybami
?> Název CZ: <?php echo $names_cs; ?> </br> <?php
?> Název ostatní: <?php echo $names_other;      ?> </br> <?php
?> Rok: <?php echo $rok;   ?> </br> <?php
?> Žánry: <?php echo $genre;   ?> </br> <?php
?> Hodnocení: <?php echo $hodnoceni;  ?> </br> <?php
?> Hrají: <?php echo $hraji;   ?> </br> <?php
?> Plakát: <?php echo $poster_url;  ?> </br> <?php
?> Popis: <?php echo $popis;  ?> </br> <?php          

A tohle je zase co? <?php ?> Jaky ma smysl prepinat na php, nic v php neudelat a prepnout zas na html?

for($i=0;$i<count($nazvy);$i++){
    if($i==count($nazvy)-1)
        $names_other .= $zeme[$i]."-".$nazvy[$i];
    else
        $names_other .= $zeme[$i]."-".$nazvy[$i].";";
}

:))) Je ti jasne, ze kazde 'if' nebo kod navic je problem, ze? Zvlast v cyklu. Mozna by se dalo nejak pouzit implode. Pripadne nechat prvni radek, posledni a zavorku. A na konci pak provest substring a odstranit posledni strednik.

Nahlásit jako SPAM
IP: 2001:718:2601:26c:1c1a:87...–
peter
~ Anonymní uživatel
4013 příspěvků
11. 11. 2016   #3
-
0
-

Název ostatní: anglický-The Jungle Book;slovenský-Kniha džunglí 

?> Název ostatní: <?php echo $names_other; ?> </br> <?php

for($i=0;$i<count($nazvy);$i++){ if($i==count($nazvy)-1) $names_other .= $zeme[$i]."-".$nazvy[$i]; else $names_other .= $zeme[$i]."-".$nazvy[$i].";"; }

No, ale to je presne ten kod, propoji takto:
'anglický' + '-' + 'The Jungle Book' + ';' + 'slovenský' + '-' + 'Kniha džunglí'
Tak, jestli to propojovat nechces, tak to uloz do pole. A jestli neumis ani to, tak nevim, co pises na forum a nenaucis se zaklady, radeji. Programovani ma byt ted vedomos zakladni skoly. Take by se na tebe pak nekdo dival jako na cloveka, ktery nema ani zakladni vzdelani. :)

$names_other = array();
$names_other[] = '111';
$names_other[] = '222';
echo $names_other[0];

Nahlásit jako SPAM
IP: 2001:718:2601:26c:1c1a:87...–
webdorf0
Newbie
11. 11. 2016   #4
-
0
-

#3 peter
Já také netvrdím, že jsem programátor. Jsem důchodce co zkouší pár věcí. 

Nevím co dělám zle: 

for($i=0;$i<count($nazvy);$i++){
    if($i==count($nazvy)-1)
        $names_other .= $zeme[$i]."-".$nazvy[$i];
    else
        $names_other .= $zeme[$i]."-".$nazvy[$i].";";
}

$nodes = $xpath->query("//h2[@class='average']");
$hodnoceni = str_replace('%', '', $nodes->item(0)->nodeValue);

$nodes = $xpath->query("//p[@class='origin']");
$podrobnosti = explode(", ", $nodes->item(0)->nodeValue);

$nodes = $xpath->query("//p[@class='genre']");
$genre = str_replace(' / ', ', ', $nodes->item(0)->nodeValue);

$nodes = $xpath->query("//span[@data-truncate='340']");
$hraji = $nodes->item(0)->nodeValue;                                   

$nodes = $xpath->query("//div[@data-truncate='570']");
$popis = $nodes->item(0)->nodeValue;

$nodes = $xpath->query("//img[@class='film-poster']");
$poster_url = "http:".$nodes->item(0)->getAttribute('src');

?> Název CZ: <?php echo $names_cs; ?> </br> <?php
?> Název ostatní: <?php echo $names_other;      ?> </br> <?php
?> Rok: <?php echo $rok;   ?> </br> <?php
?> Žánry: <?php echo $genre;   ?> </br> <?php
?> Hodnocení: <?php echo $hodnoceni;  ?> </br> <?php
?> Hrají: <?php echo $hraji;   ?> </br> <?php
?> Plakát: <?php echo $poster_url;  ?> </br> <?php
?> Popis: <?php echo $popis;  ?> </br> <?php          

$names_other = array();
$names_other[1] = 'anglický';
$names_other[2] = 'slovenský';
echo $names_other[2];

?>
Nahlásit jako SPAM
IP: 89.103.172.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 9 hostů

Podobná vlákna

HTML SIMPLE DOM — založil webdorf

Pomoc , tabulky v html — založil xndsvk

Prosim pomoc s html — založil dominicek

Pomoc s html (?php) — založil houdis

Simple factory method — založil vigum

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý