Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
albertpatera
Tvůrce
Avatar
albertpatera:15.8.2013 23:32

Ahoj, mám takovej problém se sintaxí...,mám tohle tabulku (kod zde)

<?php
 require ("./connect.php");

                    $result = mysql_query("SELECT * FROM company ORDER BY id");
                    while ($radek = mysql_fetch_array($result)) {
                        echo
                        ('<table border="1"'>
  <tr>
    <td>" . $radek['id'] . "</td>
    <td>" . $radek['name'] . "</td>
    <td>" . $radek['phone'] . "</td>
  </tr>

</table>");
                    }

?>

a potreboval bych ty tabulce udelat mrizky (pomoci border)
takže mám následujcí útržek kodu, který je nahoře

('<table border="1"'>

a potřeboval ych to nějak vyřešit, protože mi to hlásí chybnou syntaxi, ale já vim, že tam je "1"', takže dva znaky za sebou..ale jak to mám jinak teda udělat? díky moc za odpověď :-)

 
Odpovědět
15.8.2013 23:32
Avatar
Jan Poláček
Tvůrce
Avatar
Jan Poláček:15.8.2013 23:38

To je celé nějaké divné si myslím:

echo "<table border=\"1\">
   <tr>
     <td>" . $radek["id"] . "</td>
     <td>" . $radek["name"] . "</td>
     <td>" . $radek["phone"] . "</td>
   </tr>

 </table>";

co takhle třeba?
jeden z možných zápisů echo

Nahoru Odpovědět
15.8.2013 23:38
Instrukce na adrese 0x77104f29 odkazovala na adresu paměti 0x00000014. S pamětí nelze provést operaci: written.
Avatar
albertpatera
Tvůrce
Avatar
Odpovídá na Jan Poláček
albertpatera:15.8.2013 23:42

tak zkusim, ale to mé funguje taky, takže to asi bude jedno, ale to tvoje zkusim :-)

 
Nahoru Odpovědět
15.8.2013 23:42
Avatar
Kit
Tvůrce
Avatar
Odpovídá na albertpatera
Kit:15.8.2013 23:59

Máš tam chybně jeden apostrof.

<?php
require ("./connect.php");

$result = mysql_query("SELECT * FROM company ORDER BY id");
while ($radek = mysql_fetch_array($result)) {
   echo <<<EOT
<table border="1">
   <tr>
     <td>$radek[id]</td>
     <td>$radek[name]</td>
     <td>$radek[phone]</td>
   </tr>
</table>
EOT;
}
Editováno 16.8.2013 0:00
Nahoru Odpovědět
15.8.2013 23:59
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
albertpatera
Tvůrce
Avatar
Odpovídá na Kit
albertpatera:16.8.2013 0:42

diky...tahle verze se mi zdá lepší..

 
Nahoru Odpovědět
16.8.2013 0:42
Avatar
Kit
Tvůrce
Avatar
Odpovídá na albertpatera
Kit:16.8.2013 0:43

Tuhle verzi zřejmě uživatelé Smarty vůbec neznají.

Nahoru Odpovědět
16.8.2013 0:43
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Jan Poláček
Tvůrce
Avatar
Jan Poláček:16.8.2013 0:50

Já jsem tohle teda neznal. Tady na devbooku se někdy cítím spíš jako pekař :D

Nahoru Odpovědět
16.8.2013 0:50
Instrukce na adrese 0x77104f29 odkazovala na adresu paměti 0x00000014. S pamětí nelze provést operaci: written.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Jan Poláček
Kit:16.8.2013 1:15

Používám to poměrně systematicky pro šablony HTML i pro zápis složitějších SQL dotazů.

Nahoru Odpovědět
16.8.2013 1:15
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
albertpatera
Tvůrce
Avatar
albertpatera:16.8.2013 12:39

jo a jěště se zeptám na jednu (a doufam ze uz posledni věc :D)
když mám kod:

<tr>
                <th>ID</th>
                <th>Nývet firmy</th>
                <th>Tel. číslo </th>
  </tr>

tady je ještě ukázka http://bertuvweb.8u.cz/…/adresar.php

tak jak mám zažídit to, aby se mi názvy sloupců vypsaly jenom jednou a ne pokaždý, když přidám novou položku?

díky za odpověď :-)

Editováno 16.8.2013 12:41
 
Nahoru Odpovědět
16.8.2013 12:39
Avatar
Kit
Tvůrce
Avatar
Odpovídá na albertpatera
Kit:16.8.2013 12:49

To se musí trochu upravit. Včera jsem si toho nějak nevšiml.

<?php
require ("./connect.php");
$result = mysql_query("SELECT * FROM company ORDER BY id");

echo <<<EOT
<table border="1">
<tr>
   <th>ID</th>
   <th>Nývet firmy</th>
   <th>Tel. číslo </th>
</tr>
EOT;
while ($radek = mysql_fetch_array($result)) {
   echo <<<EOT
   <tr>
     <td>$radek[id]</td>
     <td>$radek[name]</td>
     <td>$radek[phone]</td>
   </tr>
EOT;
}
echo "</table>";

Už to není tak elegantní, ale pokud bys to udělal objektově, tak by to elegantní bylo.

Nahoru Odpovědět
16.8.2013 12:49
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
albertpatera
Tvůrce
Avatar
Odpovídá na Kit
albertpatera:16.8.2013 12:56

díky moc

 
Nahoru Odpovědět
16.8.2013 12:56
Avatar
Kit
Tvůrce
Avatar
Odpovídá na albertpatera
Kit:16.8.2013 13:10

Ještě se to dá udělat bez šablony. Výhodou je, že na rozdíl od předchozích řešení je to odolné proti XSS a nemusíš se starat o formátování:

<?php
require ("./connect.php");
$result = mysql_query("SELECT * FROM company ORDER BY id");

$tab = new XMLwriter();
$tab->openMemory();
$tab->setIndent(true);
$tab->startElement('table');
$tab->writeAttribute('border',1);

$tab->startElement('tr');
$tab->writeElement('th', 'ID');
$tab->writeElement('th', 'Nývet firmy');
$tab->writeElement('th', 'Tel. číslo ');
$tab->endElement();

while ($radek = mysql_fetch_array($result)) {
    $tab->startElement('tr');
    $tab->writeElement('td', $radek['id']);
    $tab->writeElement('td', $radek['name']);
    $tab->writeElement('td', $radek['phone']);
    $tab->endElement();
}
$tab->endElement();
echo $tab->flush();
Editováno 16.8.2013 13:13
Nahoru Odpovědět
16.8.2013 13:10
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na albertpatera
Kit:16.8.2013 13:27

A kdo to chce mít objektově, tak to vloží do metody __toString(), místo query použije dotaz do modelu, místo atributu "border" dostane tabulka atribut "id" - třeba "telefonni_seznam" a místo "echo" na konci napíše "return".

Webdesigner s tím pak zachází jako s hotovým objektem, může si ho na stránce umístit kam chce a v CSS nastylovat jak chce.

Nahoru Odpovědět
16.8.2013 13:27
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Neaktivní uživatel:19.8.2013 9:10

nemá být <th> v <thead> ?

Nahoru Odpovědět
19.8.2013 9:10
Neaktivní uživatelský účet
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 14 zpráv z 14.