Avatar
albertpatera
Redaktor
Avatar
albertpatera:

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 (johny881):

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
Redaktor
Avatar
Odpovídá na Jan Poláček (johny881)
albertpatera:

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
Redaktor
Avatar
Odpovídá na albertpatera
Kit:

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  +1 15.8.2013 23:59
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
albertpatera
Redaktor
Avatar
Odpovídá na Kit
albertpatera:

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

 
Nahoru Odpovědět 16.8.2013 0:42
Avatar
Kit
Redaktor
Avatar
Odpovídá na albertpatera
Kit:

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 (johny881):

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
Redaktor
Avatar
Odpovídá na Jan Poláček (johny881)
Kit:

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
Redaktor
Avatar
albertpatera:

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
Redaktor
Avatar
Odpovídá na albertpatera
Kit:

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
Kit
Redaktor
Avatar
Odpovídá na albertpatera
Kit:

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
Redaktor
Avatar
Odpovídá na albertpatera
Kit:

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
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na Kit
Daniel Vítek:

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

 
Nahoru Odpovědět 19.8.2013 9:10
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.