milas_86
6.06.2008, 11:38:33
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:
<?php
echo('<tr><td>'.$row[0].'</td><td>'.$row[1].'</td><td>'.$row[2].'</td>') }
?>
To rozwiązanie sie nie validuje... prosze o pomoc! Jak to ineczej rozwiązać?
batman
6.06.2008, 11:42:07
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:
<?php
echo '<td>'.$row[0].'</td>'; echo '<td>'.$row[1].'</td>'; echo '<td>'.$row[2].'</td>'; }
?>
Sądzę, że to rozwiąże Twój problem. Zapomniałeś o zamknięciu znacznika
tr.
milas_86
6.06.2008, 11:55:16
Sorki to jest mój pierwszy post

Twój sposób działa ale strona nadal sie nie validuje...
batman
6.06.2008, 11:57:48
A co się nie waliduje. Może błąd jest w innym miejscu?
Wklej to co Ci wywala walidator.
milas_86
6.06.2008, 12:00:53
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
6.06.2008, 12:02:07
A masz gdzieś znaczniki table?
milas_86
6.06.2008, 12:07:02
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
6.06.2008, 12:09:18
Wklej cały kod wygenerowany przez php. Tak będzie najprościej i nie będziemy musieli zgadywać
milas_86
6.06.2008, 12:12:50
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
6.06.2008, 12:14:24
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
batman
6.06.2008, 12:16:31
Nie masz znacznika
tr po
<td style="width:50px;">Wiek
</td>
editA dokładniej znacznika zamykającego.
milas_86
6.06.2008, 12:26:32
<!-- 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">
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;}
<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">
<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> ilosc pracownikow w bazie: 6
batman
6.06.2008, 12:33:18
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
6.06.2008, 12:39:35
ż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
6.06.2008, 12:41:11
Bo jeszcze zamiast
powinno być
milas_86
6.06.2008, 12:53:14
Nie wczuwajcie sie w kod strony :] znajdzie mi taki sposób wyświetlania sformatowanego tekstu w php żeby sie walidował

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
6.06.2008, 12:59:08
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
6.06.2008, 13:12:48
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
6.06.2008, 13:21:56
O kurcze, tego nie zauważyłam.
h1 musi być w elemencie body, a Ty je wciskasz przed html.
revyag
6.06.2008, 13:34:07
@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
6.06.2008, 13:51:13
korzystam w
http://validator.w3.orgtam 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
6.06.2008, 13:54:35
Walidator sprawdza
kod html nie php

Nie rozpoznaje go i zgłasza błąd. Nie można wklejać <?php ?> i koniec.
milas_86
6.06.2008, 14:01:23
to jakim validatorem mam sprawdzić żeby pokazał że jest wszystko ok?
Shili
6.06.2008, 14:06:29
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
6.06.2008, 14:06:30
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

Uruchom sobie stronę na localhost, potem weź podgląd źródła, skopiuj i wklej do walidatora.
batman
6.06.2008, 14:15:34
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
6.06.2008, 14:23:17
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
6.06.2008, 14:38:48
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.