Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

bnogueira02

Listagem com problema

Recommended Posts

Pessoal tenho a seguinte mensagem de erro.

 

Fatal error: Call to a member function getId() on a non-object inC:\xampp\htdocs\cmsbr\VIEW\index.php on line 82

 

Não consigo entender o porque.

<?php
require_once "../DTO/materiaDTO.php";
require_once '../CTR/materiaCTR.php';
require_once "../CTR/publicidadeCTR.php";

$materiaDTO = new materiaDTO();
$materiaCTR = new materiaCTR();
$listaMateria[] = new materiaDTO();
$materiaCTR->publicar();

$publicidadeCTR = new publicidadeCTR();
$publicidadeCTR->publicarPublicidade();


$materiaDTO->setOp(4);
$listaMateria = $materiaCTR->pesquisarMateria($materiaDTO);

include 'topo.php';
?>
<section class="estrutura">
    <div id="sliderb_container" class="slidshow"> 

        <!-- Loading Screen -->
        <div u="loading" style="position: absolute; top: 0px; left: 0px;">
            <div style="filter: alpha(opacity=70); opacity:0.7; position: absolute; display: block;
                 background-color: #000; top: 0px; left: 0px;width: 100%;height:100%;"> </div>
            <div style="position: absolute; display: block; background: url(../img/loading.gif) no-repeat center center;
                 top: 0px; left: 0px;width: 100%;height:100%;"> </div>
        </div>

        <!-- Slides Container -->
        <div u="slides" style="cursor: move; position: absolute; left: 0px; top: 0px; width: 600px; height: 350px;
             overflow: hidden;">
             <?php
             for ($i = 0; $i <= 4; $i++) {
                 echo '<div>
                <a href="noticia.php?v=' . $listaMateria[$i]->getId() . '"> <img u=image src="img_materia/' . $listaMateria[$i]->getImagem() . '" /></a>
                <div u="thumb"><a href="noticia.php?v=' . $listaMateria[$i]->getId() . '">' . $listaMateria[$i]->getTitulo() . '</a></div>
            </div>';
             }
             ?>
        </div>

        <!-- ThumbnailNavigator Skin Begin -->
        <div u="thumbnavigator" class="sliderb-T" style="position: absolute; bottom: 0px; left: 0px; height:45px; width:600px;">
            <div style="filter: alpha(opacity=40); opacity:0.4; position: absolute; display: block;
                 background-color: #000000; top: 0px; left: 0px; width: 100%; height: 100%;"> </div>
            <!-- Thumbnail Item Skin Begin -->
            <div u="slides">
                <div u="prototype" style="POSITION: absolute; WIDTH: 600px; HEIGHT: 45px; TOP: 0; LEFT: 0;">
                    <thumbnailtemplate style="font-family: verdana; font-weight: normal; POSITION: absolute; WIDTH: 100%; HEIGHT: 100%; TOP: 0; LEFT: 0; color:#fff; line-height: 45px; font-size:20px; padding-left:10px;"></thumbnailtemplate>
                </div>
            </div>
            <!-- Thumbnail Item Skin End --> 
        </div>
        <!-- ThumbnailNavigator Skin End --> 

        <!-- Bullet Navigator Skin Begin --> 
        <!-- jssor slider bullet navigator skin 01 --> 
        <!-- bullet navigator container -->
        <div u="navigator" class="jssorb01" style="position: absolute; bottom: 16px; right: 10px;"> 
            <!-- bullet navigator item prototype -->
            <div u="prototype" style="POSITION: absolute; WIDTH: 12px; HEIGHT: 12px;"></div>
        </div>
        <!-- Bullet Navigator Skin End --> 

        <!-- Arrow Navigator Skin Begin --> 
        <!-- Arrow Left --> 
        <span u="arrowleft" class="jssora05l" style="width: 40px; height: 40px; top: 123px; left: 8px;"> </span> 
        <!-- Arrow Right --> 
        <span u="arrowright" class="jssora05r" style="width: 40px; height: 40px; top: 123px; right: 8px"> </span> 
        <!-- Arrow Navigator Skin End --> 
        <!-- Trigger --> 
    </div>
    <section class="revista"> <a href="#"><img src="img/revista/Revista.jpg" alt="Revista do mês"></a>
        <artigo class="legendarevista">
            </article>
    </section>
    <section class="noticias">
        <?php
        for ($i = 5; sizeof($listaMateria) >= $i; $i++) {
            if ($listaMateria[$i]->getId() != "") {
                echo '<article class="artigos"> <a href="noticia.php?v=' . $listaMateria[$i]->getId() . '"><img src="img_materia/mini_' . $listaMateria[$i]->getImagem() . '">
                <h1>' . $listaMateria[$i]->getTitulo() . '</h1>
                <p>' . $listaMateria[$i]->getLinha_fina() . '</p>
            </a> </article>';
            }
        }
        ?>

    </section>
    <section class="propaganda1" id="p1">
        <img src="img/publicidade/p1.jpg" width="300" height="300">
        <img src="img/publicidade/p2.jpg" width="300" height="300">
        <img src="img/publicidade/p3.jpg" width="390" height="390">
    </section>
    <section class="estruturapropa">
        <section class="propaganda2" id="p2">
            <img src="img/publicidade/p1.jpg" width="300" height="300">
            <img src="img/publicidade/p2.jpg" width="300" height="300">
            <img src="img/publicidade/p3.jpg" width="390" height="390">
        </section>
        <section class="propaganda3" id="p3">
            <img src="img/publicidade/p1.jpg" width="300" height="300">
            <img src="img/publicidade/p2.jpg" width="300" height="300">
            <img src="img/publicidade/p3.jpg" width="390" height="390">
        </section>
        <section class="propaganda4" id="p4">
            <img src="img/publicidade/p1.jpg">
            <img src="img/publicidade/p2.jpg">
            <img src="img/publicidade/p3.jpg">
        </section>
    </section>
    <section class="face">
        <iframe src="http://www.facebook.com/plugins/likebox.php?href=https%3A%2F%2Fwww.facebook.com%2Fpages%2FRevista-ELITE-Magazine%2F696547390365019&width=390&height=590&colorscheme=light&show_faces=true&header=true&stream=true&show_border=false" scrolling="no" frameborder="0" style="border:none; overflow:hidden;  height:590px; width: 100% !important;" allowTransparency="true"></iframe>
    </section>
</section>
<div class="clearfix"></div>
<?php
include 'rodape.php';
?>

Parte que esta dando Erro:

 <?php
        for ($i = 5; sizeof($listaMateria) >= $i; $i++) {
            if ($listaMateria[$i]->getId() != "") {
                echo '<article class="artigos"> <a href="noticia.php?v=' . $listaMateria[$i]->getId() . '"><img src="img_materia/mini_' . $listaMateria[$i]->getImagem() . '">
                <h1>' . $listaMateria[$i]->getTitulo() . '</h1>
                <p>' . $listaMateria[$i]->getLinha_fina() . '</p>
            </a> </article>';
            }
        }
        ?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pq vc está tentando acessar um valor de array q não existe mais.

 

Pq vc começa com i = 5 ?

for ($i = 5; sizeof($listaMateria) >= $i; $i++) {
Qual o valor de sizeof($listaMateria) ?

Tente trocar o for() por um foreach, assim vc não precisa se preocupar com os índices.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou começando i com 5 pq desejo pegar apenas da 5 matéria para frente. Pq as 5 primeiras passam em um slide show. Ela lista a 9 matéria dentro do for. Depois quando vai pra 10 de pau.

<section class="noticias">
        <article class="artigos"> <a href="noticia.php?v=9"><img src="img_materia/mini_264503blogpost1.jpg">
                <h1>adasd</h1>
                <p>asdsad</p>
            </a> </article><article class="artigos"> <a href="noticia.php?v=8"><img src="img_materia/mini_021708chrysanthemum.jpg">
                <h1>dasdas</h1>
                <p>dsadasd</p>
            </a> </article><article class="artigos"> <a href="noticia.php?v=7"><img src="img_materia/mini_524807chrysanthemum.jpg">
                <h1>dasdas</h1>
                <p>dsadasd</p>
            </a> </article><article class="artigos"> <a href="noticia.php?v=6"><img src="img_materia/mini_314908crianc3a7adoce.jpeg">
                <h1>?asdasdadsas</h1>
                <p>?asdasddsad</p>
            </a> </article><article class="artigos"> <a href="noticia.php?v=5"><img src="img_materia/mini_18570316792_1380540698904595_8353148920988401467_n.jpg">
                <h1>asdasd</h1>
                <p>asdasd</p>
            </a> </article><article class="artigos"> <a href="noticia.php?v=4"><img src="img_materia/mini_23550316792_1380540698904595_8353148920988401467_n.jpg">
                <h1>asdasd</h1>
                <p>asdasd</p>
            </a> </article><article class="artigos"> <a href="noticia.php?v=3"><img src="img_materia/mini_dasdsadsa">
                <h1>adadsasdas</h1>
                <p>dasdsadsa</p>
            </a> </article><article class="artigos"> <a href="noticia.php?v=2"><img src="img_materia/mini_sdasd">
                <h1>sdsad</h1>
                <p>asdasda</p>
            </a> </article><article class="artigos"> <a href="noticia.php?v=1"><img src="img_materia/mini_122203blogpost2.jpg">
                <h1>asdasd</h1>
                <p>asdasda</p>
            </a> </article><br />
<b>Fatal error</b>:  Call to a member function getId() on a non-object in <b>C:\xampp\htdocs\cmsbr\VIEW\index.php</b> on line <b>82</b><br />

Ela exibe. Mas quando chega no ultimo valor é o problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

"Dá problema", pq esse valor não existe.

 

Troque o for() pelo foreach() conforme eu disse.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vc pode ir fazendo array_shift()

http://php.net/manual/pt_BR/function.array-shift.php

 

A cada vez que exibir uma notícia no slideshow. Ai o array já vai estar "sem as 5 primeiras", para vc listar com o foreach() depois.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Listando o slideshow:

   <?php
             for ($i = 0; $i <= 4; $i++) {
                 echo '<div>
                <a href="noticia.php?v=' . $listaMateria[$i]->getId() . '"> <img u=image src="img_materia/' . $listaMateria[$i]->getImagem() . '" /></a>
                <div u="thumb"><a href="noticia.php?v=' . $listaMateria[$i]->getId() . '">' . $listaMateria[$i]->getTitulo() . '</a></div>
            </div>';
             array_shift($listaMateria);
             }
         ?>
E depois vc pode listar com o foreach:

 <?php
        foreach($listaMateria AS $materia) {
            if ($materia->getId() != "") {
                echo '<article class="artigos"> <a href="noticia.php?v=' . $materia->getId() . '"><img src="img_materia/mini_' . $materia->getImagem() . '">
                <h1>' . $materia->getTitulo() . '</h1>
                <p>' . $materia->getLinha_fina() . '</p>
            </a> </article>';
            }
        }
    ?>
Note que esse if if ($materia->getId() != "") { não faz sentido, já que o SQL já deveria ter retornado apenas dados válidos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

for ($i = 0; $i <= 4; $i++) {

                 echo '<div>
                <a href="noticia.php?v=' . $listaMateria[$i]->getId() . '"> <img u=image src="img_materia/' . $listaMateria[$i]->getImagem() . '" /></a>
                <div u="thumb"><a href="noticia.php?v=' . $listaMateria[$i]->getId() . '">' . $listaMateria[$i]->getTitulo() . '</a></div>
            </div>';
                 array_shift($listaMateria);
             }
             ?>
foreach ($listaMateria as $linhas) {
            echo '<article class="artigos"> <a href="noticia.php?v=' . $linhas->getId() . '"><img src="img_materia/mini_' . $linhas->getImagem() . '">
                <h1>' . $linhas->getTitulo() . '</h1>
                <p>' . $linhas->getLinha_fina() . '</p>
            </a> </article>';
        }

O resultado foi isso:

<div u="slides" style="cursor: move; position: absolute; left: 0px; top: 0px; width: 600px; height: 350px;
             overflow: hidden;">
             <div>
                <a href="noticia.php?v=16"> <img u=image src="img_materia/540211penguins.jpg" /></a>
                <div u="thumb"><a href="noticia.php?v=16">Geral</a></div>
            </div><div>
                <a href="noticia.php?v=12"> <img u=image src="img_materia/265810penguins.jpg" /></a>
                <div u="thumb"><a href="noticia.php?v=12">asdasd</a></div>
            </div><div>
                <a href="noticia.php?v=10"> <img u=image src="img_materia/461310hydrangeas.jpg" /></a>
                <div u="thumb"><a href="noticia.php?v=10">adsasdasdasd</a></div>
            </div><div>
                <a href="noticia.php?v=8"> <img u=image src="img_materia/021708chrysanthemum.jpg" /></a>
                <div u="thumb"><a href="noticia.php?v=8">dasdas</a></div>
            </div><div>
                <a href="noticia.php?v=6"> <img u=image src="img_materia/314908crianc3a7adoce.jpeg" /></a>
                <div u="thumb"><a href="noticia.php?v=6">?asdasdadsas</a></div>
            </div>        </div>


<article class="artigos"> <a href="noticia.php?v=9"><img src="img_materia/mini_264503blogpost1.jpg">
                <h1>adasd</h1>
                <p>asdsad</p>
            </a> </article><article class="artigos"> <a href="noticia.php?v=8"><img src="img_materia/mini_021708chrysanthemum.jpg">
                <h1>dasdas</h1>
                <p>dsadasd</p>
            </a> </article><article class="artigos"> <a href="noticia.php?v=7"><img src="img_materia/mini_524807chrysanthemum.jpg">
                <h1>dasdas</h1>
                <p>dsadasd</p>
            </a> </article><article class="artigos"> <a href="noticia.php?v=6"><img src="img_materia/mini_314908crianc3a7adoce.jpeg">
                <h1>?asdasdadsas</h1>
                <p>?asdasddsad</p>
            </a> </article><article class="artigos"> <a href="noticia.php?v=5"><img src="img_materia/mini_18570316792_1380540698904595_8353148920988401467_n.jpg">
                <h1>asdasd</h1>
                <p>asdasd</p>
            </a> </article><article class="artigos"> <a href="noticia.php?v=4"><img src="img_materia/mini_23550316792_1380540698904595_8353148920988401467_n.jpg">
                <h1>asdasd</h1>
                <p>asdasd</p>
            </a> </article><article class="artigos"> <a href="noticia.php?v=3"><img src="img_materia/mini_dasdsadsa">
                <h1>adadsasdas</h1>
                <p>dasdsadsa</p>
            </a> </article><article class="artigos"> <a href="noticia.php?v=2"><img src="img_materia/mini_sdasd">
                <h1>sdsad</h1>
                <p>asdasda</p>
            </a> </article><article class="artigos"> <a href="noticia.php?v=1"><img src="img_materia/mini_122203blogpost2.jpg">
                <h1>asdasd</h1>
                <p>asdasda</p>
            </a> </article>

Como pode reparar tem id que se repetem.

Reparei uma coisa.

Ele sempre elimina o proximo por exemplo, no meu banco tem id 16,13,12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1

 

no for ele só está mostrando: 16, 12, 10, 8, 6.

e no foreach ele esta exibindo: 9, 8, 7, 6, 5, 4, 3, 2, 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.