Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: echo() a znaczniki html np <td>
Forum PHP.pl > Forum > Przedszkole
milas_86
Witam. Mam pytanie o funkcje echo. Jak jak zapisać znacznik html np <td> w funkcji echo() żeby strona sie sie validowała? chodzi mi konkretnie o to by zczytać rekordy z bazy i wstawić je do tabeli. Moje (działające) rozwiązanie jest takie:

  1. <?php
  2. while($row = mysql_fetch_array($res, mysql_both)){  
  3. echo('<tr><td>'.$row[0].'</td><td>'.$row[1].'</td><td>'.$row[2].'</td>')
  4. }
  5. ?>


To rozwiązanie sie nie validuje... prosze o pomoc! Jak to ineczej rozwiązać?
batman
Jak wstawiasz kod, to użyj odpowiedniego bbcode, by post był bardziej czytelny. Tym razem dodałem to za Ciebie, ale następnym razem pamiętaj, by zrobić to samemu.

A co do Twojego problemu:
  1. <?php
  2. while($row = mysql_fetch_array($res, mysql_both)){
  3. echo '<tr>';
  4. echo '<td>'.$row[0].'</td>';
  5. echo '<td>'.$row[1].'</td>';
  6. echo '<td>'.$row[2].'</td>';
  7. echo '</tr>';
  8. }
  9. ?>
Sądzę, że to rozwiąże Twój problem. Zapomniałeś o zamknięciu znacznika tr.
milas_86
Sorki to jest mój pierwszy post smile.gif

Twój sposób działa ale strona nadal sie nie validuje...
batman
A co się nie waliduje. Może błąd jest w innym miejscu?
Wklej to co Ci wywala walidator.
milas_86
Line 56, Column 12: character data is not allowed here. echo '<tr>';

You have used character data somewhere it is not permitted to appear. Mistakes that can cause this error include:

  • putting text directly in the body of the document without wrapping it in a container element (such as a <p>aragraph</p>), or
  • forgetting to quote an attribute value (where characters such as "%" and "/" are common, but cannot appear without surrounding quotes), or
  • using XHTML-style self-closing tags (such as <meta ... />) in HTML 4.01 or earlier. To fix, remove the extra slash ('/') character. For more information about the reasons for this, see Empty elements in SGML, HTML, XML, and XHTML.
Shili
A masz gdzieś znaczniki table?
milas_86
tak mam znacznik <table>

np polecenie:

echo '<h1> PHP </h1>';

też sie nie waliduje... A może jakiś printf to zrobić?! ale nie wiem jak zrobić żeby printf wstawiał do tabeli
Shili
Wklej cały kod wygenerowany przez php. Tak będzie najprościej i nie będziemy musieli zgadywać winksmiley.jpg
milas_86
CODE
<?php
session_start();
if (!isset($_SESSION["login"]))
{

header("Location: login.php");

}
?>
<!-- saved from url=(0022)http://internet.e-mail -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Aplikacja</title>
<style type="text/css">
body {background-color: green;}
table.baza{ border-style: double;}
.bold {font-weight: bold; color: orange;}
.orange {color: orange;}
a { font-size: 20px; color: black; text-decoration: none;}
a:hover { font-size: 20px; color: black; text-decoration: underline;}
h3 {font-size: 16px; color: orange;}

</style>
</head>
<body>
<h2>Informacje o pracownikach</h2>

<p>Jesli chcesz dodac pracownika do bazy kliknij<a href="pi.php"><span class="bold"> DODAJ</span></a></p>

<p>Jesli chcesz usunac pracownika do bazy kliknij<a href="delete.php"><span class="bold"> USUN</span></a></p>

<p>Jesli chcesz sie wylogowac z bazy kliknij<a href="logout.php"><span class="bold"> WYLOGUJ</span></a></p>

<table class="baza" border="1">

<tr>
<td style="width:50px;">ID</td>
<td style="width:200px;">Nazwisko i Imie</td>
<td style="width:70px;">Zarobki</td>
<td style="width:50px;">Wiek</td>
<?php
$sql = mysql_connect("localhost", "pi", "wuesenhaide");
mysql_select_db("webdb");
$res = mysql_query("select * from pracownicy order by id");
$ile = mysql_num_rows($res);
echo "ilosc pracownikow w bazie: ";
echo $ile;


echo("\n");

while($row = mysql_fetch_array($res, MYSQL_BOTH))
{
echo ('<tr><td>'.$row[0].'</td><td>'.$row[1].' '.$row[2].'</td><td>'.$row[3].'</td><td>'.$row[4].'</td></tr>') ;
echo("\n");

}

mysql_close($sql);
?>
</table>
</body>
</html>
Shili
Prosiłam o kod html, który pokazuje się jak wybierasz w przeglądarce pokaż źródło. Na razie nie bardzo mogę sama odpalić apacha i sprawdzić, także prośbę ponawiam winksmiley.jpg
batman
Nie masz znacznika tr po
  1. <td style="width:50px;">Wiek</td>


edit
A dokładniej znacznika zamykającego.
milas_86
  1. <!-- saved from url=(0022)http://internet.e-mail -->
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
  3. "http://www.w3.org/TR/html4/strict.dtd">
  4. <title>Aplikacja</title>
  5. <style type="text/css">
  6. body {background-color: green;}
  7. table.baza{ border-style: double;}
  8. .bold {font-weight: bold; color: orange;}
  9. .orange {color: orange;}
  10. a { font-size: 20px; color: black; text-decoration: none;}
  11. a:hover { font-size: 20px; color: black; text-decoration: underline;}
  12. h3 {font-size: 16px; color: orange;}
  13.  
  14. </style>
  15. </head>
  16. <h2>Informacje o pracownikach</h2>
  17.  
  18. <p>Jesli chcesz dodac pracownika do bazy kliknij<a href="pi.php"><span class="bold"> DODAJ</span></a></p>
  19. <p>Jesli chcesz usunac pracownika do bazy kliknij<a href="delete.php"><span class="bold"> USUN</span></a></p>
  20.  
  21. <p>Jesli chcesz sie wylogowac z bazy kliknij<a href="logout.php"><span class="bold"> WYLOGUJ</span></a></p>
  22.  
  23. <table class="baza" border="1">
  24.  
  25. <tr>
  26. <td style="width:50px;">ID</td>
  27. <td style="width:200px;">Nazwisko i Imie</td>
  28. <td style="width:70px;">Zarobki</td>
  29. <td style="width:50px;">Wiek</td>
  30. ilosc pracownikow w bazie: 6
  31. <tr><td>1</td><td>Nowak Jan</td><td>1500</td><td>25</td></tr>
  32. <tr><td>2</td><td>Kowal Maria</td><td>2000</td><td>30</td></tr>
  33. <tr><td>3</td><td>Brodka Monika</td><td>3500</td><td>21</td></tr>
  34. <tr><td>4</td><td>Pocztowy Jerzy</td><td>2300.5</td><td>34</td></tr>
  35. <tr><td>5</td><td>Polka Wiktoria</td><td>10000</td><td>31</td></tr>
  36. <tr><td>6</td><td>Wons Wons</td><td>20</td><td>20</td></tr>
  37. </tr>
  38. </body>
  39. </html>
batman
W moim poprzednim poście masz info dlaczego jest błąd walidacji.
Do tego dołożę jeszcze jedną rzecz. Wywal te spany z klasą bold i użyj znacznika b, a kolor dodaj do znacznika a.
milas_86
że nie ma znacznika tr to jest prawda ale jak go dadam to walidacja pokazuje że coś jest z nim nie tak. czy on jest czy nie to strona działa. ale nie w tym rzecz... chodzi mi o funkcje echo w pętli while. tam wywala bład!

polecenie echo ('<td>'); działa ale sie nie waliduje. chdzi mi o taki sposób zapisania tego że by walidator sie nie jarała :]
Shili
Bo jeszcze zamiast
  1. <tr><td>6</td><td>Wons Wons</td><td>20</td><td>20</td></tr>
  2. </tr>

powinno być
  1. <tr><td>6</td><td>Wons Wons</td><td>20</td><td>20</td></tr>
milas_86
Nie wczuwajcie sie w kod strony :] znajdzie mi taki sposób wyświetlania sformatowanego tekstu w php żeby sie walidował smile.gif

tak jak wczesniej pisałem polecenie

echo ('<h1>PHP</h1>');
echo '<h1>PHP</h1>';
echo "<h1>PHP</h1>";
echo ("<h1>PHP</h1>");

działają ale sie nie walidują! potrzbuje iny sposób zapisania tego
batman
1. To jak zapiszesz echo nie ma żadnego wpływu na walidację kodu HTML.
2. Zamykający znacznik tr jest potrzebny.
3. Otwierasz tabelę, wstawiasz kolumny, a potem robisz echo $ile;

Popraw to i zobaczymy co na to walidator.
milas_86
Kod
<?php            
if (isset($_GET["login"]))
{
if ($_GET["login"]=="lukasz"&&$_GET["haslo"]=="mili")
{
session_start();
$_SESSION["login"]=$_GET["login"];
header("Location:list.php");
}else{
    echo('<h1>Login lub haslo jest niepoprawne!</h1>');
}
}
?>
<!-- saved from url=(0022)http://internet.e-mail -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>

<title>Aplikacja</title>
</head>
<body style="background-color:green;">
<h2>Logowanie</h2>

<form method="GET" action="login.php">
      <p>Login:    
    <input type="text" name="login"><br><br>
    Haslo:    
    <input type="password" name ="haslo"><br><br>
    <input type="submit" value="Zaloguj"></p>
    </form>  

</body>
</html>


dlaczego wywala mi bład przy

echo('<h1>Login lub haslo jest niepoprawne!</h1>');

ta sama historia...
Shili
O kurcze, tego nie zauważyłam.

h1 musi być w elemencie body, a Ty je wciskasz przed html.
revyag
@milas_86, odnoszę wrażenie że próbujesz przepuszczać przez validator kod php co oczywiście jest kiepskim pomysłem bo w jaki sposób validator wskazuje Ci że masz błąd przy "echo" ? Waliduj to co wypluwa serwer www a nie kod który stronę generuje.
milas_86
korzystam w http://validator.w3.org

tam wklejam kod strony no i wszystko jest git oprócz tych nieszczęsnych nazaczników w echo

To nie ma znaczenie czy jest miedzy body czy nie skoro jest między <?php a ?>
revyag
Walidator sprawdza kod html nie php exclamation.gif Nie rozpoznaje go i zgłasza błąd. Nie można wklejać <?php ?> i koniec.
milas_86
to jakim validatorem mam sprawdzić żeby pokazał że jest wszystko ok?
Shili
Tym, ale sprawdzasz to co widzisz pod pokaż źródło.

I tak Ci dobrze nie zwaliduje, bo masz błędy. W tym to h1, które MUSI być w elemencie body.
revyag
Staram sie zachować spokój ale naprawdę ciężko mi ;>

Polecam na początek jakiś kurs html i poczytaj na googlach o walidowaniu stron.

Kodu php się nie waliduje exclamation.gif Uruchom sobie stronę na localhost, potem weź podgląd źródła, skopiuj i wklej do walidatora.
batman
Cytat
Staram sie zachować spokój ale naprawdę ciężko mi ;>

Nie tylko Tobie.
Napiszę to, co zostało już napisane wiele razy.

To co masz w pliku php należy uruchomić w przeglądarce. Następnie klikasz w dowolnym miejscu prawym przyciskiem myszy i wybierasz opcję pokaż źródło. Kopiujesz wszystko co Ci się pokaże i to dopiero wklejasz do walidatora. Wtedy zobaczysz błędy, o których kilka osób Ci napisało, poprawisz je i jeszcze raz sprawdzisz, co pokazuje walidator (ze źródła!).

Jeśli jeszcze raz zobaczę posta, że się echo nie waliduje, to zamknę temat!
milas_86
trzeba było tak od razu :] sory za nerwy ale tak to bym sie z tym męczył do x czasu...
myslałem że cały dok strony trzeba wrzucić!
webdice
Przenoszę na Przedszkole.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.