Ir ao conteúdo

tabela php


eduardopilati

Posts recomendados

Postado

<html>
<body>
<?php
$num='1';
$let='a';
?>
<table border='1'>
<tr>
<td> <?php echo $num; ?> </td>
<td> <?php echo $let; ?> </td>
</tr>
</table>
</body>
</html>

eu coloquei esse codigo em um arquivo index.html e coloquei no server, mas nofinal só aparece dois quadrados vazios

================================================

agora deu certo, eu fiquei mudando umas coisas e eu tava acessando o link local :)

mas como eu posso colocar variáveis de html dentro de um foreach?

  • Moderador
Postado

Só um detalhe.. quando se usa php.. você não utiliza .html.. ma sim .php na extensão do arquivo.

podes explicar melhor esta sua dúvida?

Postado

eu tenho um xml:

<dado>
<a>a1</a>
<b>b1</b>
</dado>
<dado>
<a>a2</a>
<b>b2</b>
</dado>
<dado>
<a>a3</a>
<b>b3</b>
</dado>

e um código php

<?php
$xml=simplexml_load_file("livros.xml");
foreach ($xml as $dados)
/////aqui vai o código

?>

eu quero que o site faça uma tabela com esse xml:

a1 b1

a2 b2

a3 b3

e vai indo, então nao tem como usar o echo, deveria ser código em html porque eu precisaria alterar a cor de fundo de algumas linhas da tabela (para destacar) e aplicar uma borda

eu queria saber o que colocar no código dentro do foreach

========================================

Bom, pra ficar mais fácil tem um outro jeito, em vez de botar o html em php botar o php no html.

a questão é:

eu vou ter 10 colunas na tabela,

cada linha tera um item no xml:


<linha>
<celula1></celula1>
<celula2><celula2>
...
</linha>
<linha>
<celula1></celula1>
<celula2><celula2>
...
</linha>

eu precisaria de um código para achar o conteudo da tag de uma linha dentro de uma coluna (por esemplo: achar o conteúo de <célula5> dentro do 50º <linha>)

sei que vai ser muito trabalhoso e dar muitas linhas mas se for o jeito poderia fazer assim:


<table><tr>
<td> "1º<linha><celula1>"</td>
<td> "1º<linha><celula2>"</td>
<td> "1º<linha><celula3>"</td>
...
</tr><tr>
<td> "2º<linha><celula1>"</td>
<td> "2º<linha><celula2>"</td>
<td> "2º<linha><celula3>"</td>
...
</tr><tr>
...
</tr>...

em vez de criar um laço que cria a tabela eu crio toda a tabela em html e puxo celula por celula. tem comofazer isso?

  • Moderador
Postado

Tente fazer assim:


<?php
$xml=simplexml_load_file("livros.xml");
foreach ($xml->livros as $livros){
echo "<tr>
<td>$livros->a</td>
<td>$livros->b</td>
</tr>";
}
?>

e por aí vai... você pode encontrar facilmente explicações sobre o xml e a iteração no php no google.

https://www.google.com.br/webhp?source=search_app&gws_rd=cr&ei=ppU8Upa5NJTo9gTrtYHABQ#q=php+xml+foreach

http://php.net/manual/en/simplexml.examples-basic.php

http://stackoverflow.com/questions/4637617/how-to-use-foreach-with-php-xml-simplexml

Postado

livros.xml:


<?xml version="1.0" encoding="ISO-8859-1"?>
<livros>
<corretor>Tove</corretor>
<contato>Jani</contato>
<telefone1>Reminder</telefone1>
<cidade>Don't forget me this weekend!</cidade>
</livros>
<livros>
<corretor>Tove2</corretor>
<contato>Jani2</contato>
<telefone1>Reminder2</telefone1>
<cidade>Don't forget me this weekend!2</cidade>
</livros>
<livros>
<corretor>Tove3</corretor>
<contato>Jani3</contato>
<telefone1>Reminder3</telefone1>
<cidade>Don't forget me this weekend!3</cidade>
</livros>

index.php:


<?php
echo "<table border=1>";
$xml=simplexml_load_file("livros.xml");
foreach ($xml->livros as $livros){
echo "<tr>
<td>$livros->corretor</td>
<td>$livros->contato</td>
<td>$livros->telefone1</td>
<td>$livros->cidade</td>
</tr>";
}
echo "</table>";
?>

hospedado em: http://preview.main-hosting.com/185.28.21.48/testespock.zz.mu

relatório de erros:

Aviso : simplexml_load_file (): livros.xml: 8: erro de interpretação: o conteúdo extra no final do documento em / home/u314013727/public_html/index.php on-line 3

Warning : simplexml_load_file (): <livros> em / home / u314013727/public_html/index.php on-line 3

Warning : simplexml_load_file (): ^ em / home/u314013727/public_html/index.php on-line 3

Warning : Invalid argument fornecido para foreach () in / home/u314013727/public_html/index. php na linha 4

como eu posso resolver isso?

  • Moderador
Postado

Amigo,

faça nesta estrutura:


<table border='1'>
<tr>
<th>Corretor</th>
<th>Contato</th>
<th>Telefone1</th>
<th>Cidade</th>
</tr>
<?php
$xml= simplexml_load_file("livros.xml");

foreach ($xml->livros as $livros){
echo "<tr>
<td>$livros->corretor</td>
<td>$livros->contato</td>
<td>$livros->telefone1</td>
<td>$livros->cidade</td>
</tr>";
}

?>
</table>

Agora.. seu erro mesmo, está no seu arquivo xml.

Veja que você tem 3 livros certo? só que eles estão separado.. nesse caso.. o parser do php pensa que tem 3 elementos raizes.. o que o xml não suporta..

Então para suprir esse erro.. acrescente mais um elemento.. para que ele seja o raiz... por exemplo: <catalogo></catalogo>

e dentro dele.. coloque seus 3 elementos livros e seus filhos.

ficando esta estrutura:


<?xml version="1.0" encoding="UTF-8"?>
[COLOR="red"]<catalogo>[/COLOR]
[COLOR="Blue"]<livros>[/COLOR]
<corretor>Tove</corretor>
<contato>Jani</contato>
<telefone1>Reminder</telefone1>
<cidade>Don't forget me this weekend!</cidade>
[COLOR="blue"]</livros>[/COLOR]
[COLOR="blue"]<livros>[/COLOR]
<corretor>Tove2</corretor>
<contato>Jani2</contato>
<telefone1>Reminder2</telefone1>
<cidade>Don't forget me this weekend!2</cidade>
[COLOR="blue"]</livros>[/COLOR]
[COLOR="blue"]<livros>[/COLOR]
<corretor>Tove3</corretor>
<contato>Jani3</contato>
<telefone1>Reminder3</telefone1>
<cidade>Don't forget me this weekend!3</cidade>
[COLOR="blue"]</livros>[/COLOR]
[COLOR="Red"]</catalogo>[/COLOR]

Att,

Dif

Postado

Seguinte eu estou com um projeto na cabeça e quero ver se funciona.

1- em java script tem como voce declarar todas as funções no <head> e ir puxando elas no meio do código, teria como fazer algo parecido? criar um monte de funções em php no <head> ou no começo do <body> e ir puxando elas durando o código?

2- num arquivo xml tem um nó pai e varios nós filhos, (lembre do meu arquivo onde tinha varios livros). tem como mapear esses nós? por exemplo, eu quero achar o 50º nó livro. ou pegar todos os nós e armazenar em uma array? estava pensando em criar uma tabela em html e em cada linha puxar um nó filho e colocar o conteúdo dele no local, não poderia ser em um 'foreach' pois cada linha teria uma função em javascript diferente.

3- eu teria muito trabalho para carregar um xml inteiro com cerca de 140 nós dentro do nó principal. cada um desses nós teria 9 informações de dados mais uma implicita onde teria as particularidades do nó, por exemplo, eu queria que, quando uma pessoa clicasse em cima do conteúdo da célula isso chamasse uma função do js que abriria varias alternativas, a primeira dava espaço à pessoa a alterar o conteúdo, a 2ª, 3ª e 4ª dariam opções para mudar o fundo da linha (amarelo, verde e vermelho). basicamente essas 4, deveria ser alguma que só trocasse a informação (se true para false e se false para true) e que essas informações fossem armazenadas no xml.

resumindo: eu teria que desenvolver uma pagina em htm com integração html - php - js. as 3 linguagens deveriam conversar entre si. eu queria que você me ensinasse um código que lesse um nó-filho específico (no caso um livro específico), que tivesse a capacidade de excluir esse nó(ou simplesmente ocultar), que tivesse a capacidade de incluir mais nós e que pudesse editar uma propriedade específica.

eu desenvolveria um código gigantesco que cada linha chamaria propriedade por propriedade de cada linha (as 9 explicitas + qual das 4 cores de fundo disponíveis para toda a linha deverá aparecer na tela + se esta linha está ou não disponível(no caso de poder só deixar a linha oculta))

e ainda criaria umas funções para alterar o valor e mudar a cor de fundo.

não sei se dar para fazer em php, mas quando vou chamar uma função em c++ eu posso passar um parametro. por exemplo eu criaria uma função que lesse um nó x, esse x seria recebido por parametro e cada célula mandaria um x diferente e a função me dava, em um array, todas as 11 propriedades que seriam usadas na linha x.

precisaria também que o site listasse todos os nós disponíveis e ignorasse ou pulasse os nós ocultos(isso seria facilmente resolvido com um contador)

não sei se você entendeu qual a minha intenção, mas tente explicar o possível. eu sei fazer um site completo em html+css puro, mas tenho pouca experiência em php e js.

o código ficaria mais ou menos estruturado assim:

//cabeçalho

definiria x como 1

função1 em php que leria os parametros de um nó x e armazenaria em um array

receber x

armazenar todas as propriedades de x em um array

retornar o array

função2 em php que chamaria a função1, verificaria, e enviasse os parametros para a celula

receber x

chamar a função1 passando o contador x

verificar o array

caso positivo retornar a celula o array

caso negativo incrementar um ao array e repetir da linha 2

retornar o array positivo e incrementar 1 ao x

tabela

linha 1

chamaria a função2 usando como parametro x

criaria todas as colunas usando as informações do array

linha 2

repete o feito na linha um

linha 3

...

...

////fim

e ao final de cada linha teria os botões para mudar a cor de fundo ou ocultar a linha

caso o usuário clicasse em cima de uma celula ela poderia ser editada (pode ate ser por caixas de texto)

deveria ser um código eficiente pos isso ficaria atualizando em um intervalo de tempo(15s)

caso puder me ajude

att Eduardo

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!