Autor Zpráva
XYZ
Profil *
Mám příklad PHP scriptu, který vypisuje všechny účastníky zkoušek. U každého účastníka pak je rozhodnutí "přijat" nebo "nepřijat" a ve vedlejším sloupci - podle rozhodnutí - obrázek (buď 'ano.gif' nebo 'ne.gif'). Buhužel, nejsem schopen "rozchodit " přidávání těchto obrázků ke každému účastníkovi. Zkoušel jsem různé podmínky 'if' a definice vlastních funkcí, ale bez zdárného výsledku. Pokud máte někdo nějaký nápad, předem za něj děkuji !

Přikládám ukázku s podmínkou if - ale funguje částečně (nejde výpis do tabulky) ! ;-((


<?
$spojeni = mysql_connect ("localhost", "root", "root");
$databaze = MySQL_select_DB ("test");
mysql_query("SET NAMES 'cp1250';"); // kódování MySQL !! - nebo 'latin2' nebo 'utf8'
$vyber = "SELECT * FROM vysledky ORDER BY ID";
$provedeni = MySQL_query($vyber);
$pocet = MySQL_Num_Rows($provedeni);
echo "<div id="text">V databázi je uloženo celkem <b>$pocet</b> výsledků přijímacího řízení.</div>";
echo "<table border="0" cellpadding="5px">";
echo "<tr height='70px'>
<td id="z_ID">ID</td>
<td id="z_jmeno">Jméno</td>
<td id="z_prijmeni">Příjmení</td>
<td id="z_bydliste">Bydliště</td>
<td id="z_max">Maximum bodů</td>
<td id="z_pocet">Dosažený počet bodů</td>
<td id="z_vysledek" colspan="2">Výsledek přijímacího řízení</td>
</tr> ";
while ($radek = mysql_fetch_array($provedeni)) {
$porovnani = "přijat(a)";
if ($radek["vysledek"] == $porovnani):
$obrazek = "<img src="ano.gif" title="Přijat(a)" alt="Přijat(a)">";
else:
$obrazek = "<img src="ne.gif" title="Nepřijat(a)" alt="Nepřijat(a)">";
endif;
echo "<tr height="40px">
<td id="ID">".$radek["ID"]."</td>
<td id="jmeno">".$radek["jmeno"]."</td>
<td id="prijmeni">".$radek["prijmeni"]."</td>
<td id="bydliste">".$radek["adresa"]."</td>
<td id="max">".$radek["max"]."</td>
<td id="pocet">".$radek["pocet"]."</td>
<td id="vysledek">".$radek["vysledek"]."</td>
<td id="obr">".$obrazek."</td>
</tr> ";
echo "</table>";
}
?>
bukaj
Profil
vypisuje to nějaké chyby? popř. je opravdu ve sloupci `vysledek` hodnota 'přijat(a)', popř. opačně?
Aleš Janda
Profil
> echo "<table border="0" cellpadding="5px">"; a jiné

Máš trochu bordel v uvozovkách, to se nedivím, že to nechodí. Podívej se, jak se píšou řetězce v uvozovkách a jak v apostrofech a co se s nimi dělá, když jsou součástí řetězce ;-)
Mastodont
Profil
UPDATE - O dvě minuty ...
nightfish
Profil
Aleš Janda
otázkou je, jestli v původním kódu nebyly oescapované a zpětná lomítka nesežralo tohle fórum...
XYZ
Profil *
Máš trochu bordel v uvozovkách, to se nedivím, že to nechodí. Podívej se, jak se píšou řetězce v uvozovkách a jak v apostrofech a co se s nimi dělá, když jsou součástí řetězce ;-)

Tak bordel v úvozovkách si vyprošuju ! Používám escape sekvence !!
XYZ
Profil *
vypisuje to nějaké chyby? popř. je opravdu ve sloupci `vysledek` hodnota 'přijat(a)', popř. opačně?

Ano, je tam vždy nějaká hodnota. Data jsou čerpána přímo z databáze.
Mastodont
Profil
Cesty k obrázkům jsou správně?
XYZ
Profil *
Ano, jsou.. byl bych rád, kdyby to byla tahle chyba ;-)
Mastodont
Profil
A nepoužíváš třeba mod_rewrite? Ono někdy se zdá, že cesty jsou správně a přitom nejsou ...
XYZ
Profil *
Ne, upřímně, ani tohle neznám - patřím k začátečníkům. Ale pokud se ti zdá, že je to dobře, tak řekni...
Mastodont
Profil
No já tam nic jinýho už nevidím. Když dáš v prohlížeči adresu jen toho obrázku, tak se ti zobrazí?
bukaj
Profil
XYZ
a takže to u všech vypisuje obrázek o nepřijetí nebo žádný?
Aleš Janda
Profil
Pokud se ty lomítka před uvozovkami ztratily až na tomto fóru, tak to se omlouvám. BTW nešlo by to nějak spravit? Tahleta chyba fóra mě už párkrát vypekla...

Zajímalo by mě, co tenhle kód vlastně vypíše (tedy ten výstup tohoto skriptu - nějaký demonstrační). Zkus to sem hodit, možná se leccos vysvětlí..

A také se mi zdá nešťastné rozlišovat udělanou a neudělanou zkoušku tak, že je to napsané v řetězci! Správně by měl být sloupec "prijaty" typu enum a měl by povolit hodnoty jen ano/ne (popř. 0/1). Je také možné, že se podmínka nikdy nesplní, protože kódování skriptu je jiné než kódování databáze a v řetězci se vyskytují časké znaky...
XYZ
Profil *
takže to u všech vypisuje obrázek o nepřijetí nebo žádný?

V tomto případě to vlastně "funguje", alekorát ten výpis nefunguje přes tabulku, ale nesmyslně se to vypíše za sebou bez grafické úpravy. Ale dál už nevím, co s tím...
XYZ
Profil *
Zajímalo by mě, co tenhle kód vlastně vypíše (tedy ten výstup tohoto skriptu - nějaký demonstrační). Zkus to sem hodit, možná se leccos vysvětlí..

Kód vypíše tabulku se všemi záznamy; v posledním sloupci se zobrazují gify (buď přijat - ano.gif, nebo nepřijat - ne.gif) - je to pouze taková zkouška; postupně se učím PHP, a narazil jsem na tento problém...
XYZ
Profil *
No já tam nic jinýho už nevidím. Když dáš v prohlížeči adresu jen toho obrázku, tak se ti zobrazí?

Ano, zkusil jsem to - zobrazily se...
nightfish
Profil
echo "</table>";
}


tyhle dva řádky prohoď...
ukončení tabulky musí být až za tím cyklem while

btw atribut ID značek v HTML musí být v celém dokumentu jedinečný. Pokud chceš stylovat jednotlivé buňky tabulky, použij spíš class.

edit: a pro řádek s hlavičkou tabulky bych použil <th> místo <td>
XYZ
Profil *
echo "</table>";
}

tyhle dva řádky prohoď...
ukončení tabulky musí být až za tím cyklem while

btw atribut ID značek v HTML musí být v celém dokumentu jedinečný. Pokud chceš stylovat jednotlivé buňky tabulky, použij spíš class.

edit: a pro řádek s hlavičkou tabulky bych použil <th> místo <td>



Děkuji moc !! Funguje to. Musím přiznat, že jsem opravdu osel, to mě mohlo napadnout. S tím ID taky děkuju, já to používám radši, je to kratší ! ;-)

S tím 'th': moc rád to nepoužívám, už předem tam je tučný řez písma, ikdyž ho třeba nepotřebuju, ale to už jsem drobnosti.

Ještě jednou moc díky !
XYZ
Profil *

Problém byl nakonec vyřešen ! Správné řešení objevil 'nightfish' ! Jemu a všem ostatním, kteří přispěli do diskuze a pomáhali moc děkuju !!!
XYZ
Profil *
Tak je to správně: ;-))


echo "<tr height="40px">
<td id="ID">".$radek["ID"]."</td>
<td id="jmeno">".$radek["jmeno"]."</td>
<td id="prijmeni">".$radek["prijmeni"]."</td>
<td id="bydliste">".$radek["adresa"]."</td>
<td id="max">".$radek["max"]."</td>
<td id="pocet">".$radek["pocet"]."</td>
<td id="vysledek">".$radek["vysledek"]."</td>
<td id="obr">".$obrazek."</td>
</tr> ";
}
echo "</table>";

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0