- Letartóztatták a bitcoin-Jézust
- Kapnak egy rakás reklámot a Roblox játékosai
- Az iPadOS-re írt appokra is díjat vet ki az Apple
- A franciáknak elege van abból, hogy minden gyerek mobilozik
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- Windows 11
- CentOS Linux
- Debian GNU/Linux
- Sokat fogyaszt az AI, egyre több az adatközpont, kell az atomenergia
- Facebook és Messenger
Új hozzászólás Aktív témák
-
Korcsii
őstag
borzasztó hogy mennyit tudok rágódni a semmin....
szerintetek mit használjak a kimeneti (html) forráskódban: ' vagy "
echo " "; paranccsal szeretek dolgotni, akkor ugye előbbi az egyszerűbb, viszont utóbbit látom a legtöbb oldalon, pl itt a pH!-n is...
van bármi különbség a böngészők/keresőknél? tudtommal nem kellene...
w3c meg minden így is...ha valaki ellenzi a ' -t akkor szóljon, kíváncsi lennék rá, hogy miért
-
DeltaPower
őstag
-
Tele von Zsinór
őstag
válasz DeltaPower #1002 üzenetére
Viszont oda nem rakja be a változókat.
-
fastervótam
tag
válasz Korcsii #1001 üzenetére
A böngésző nem látja, hogy te az echo során határolókarakternek ' vagy "-t használsz, ez csak a PHP-t érintő dolog.
" Ennyi darab: $x " - $x helyére behelyettesítődik $x változó tartalma
' Ennyi darab: $x ' - Ittt $x kerül kiírásra, nem változónévként értelmezi a PHP.
nagyjából ez a lényeg. Elméletileg a ' gyorsabb, mivel egyszerűbb kiírnia a php-nak, de a gyakorlatban nem tapasztalható sebességkülönbség.
[ Szerkesztve ]
-
fastervótam
tag
válasz fastervótam #1004 üzenetére
Ja igen, kis kiegészítés, "-ben működnek a vezérlőkarakterek kiírása: \t - tabulátor \r\n -sortörés, '-ben nem.
-
Korcsii
őstag
válasz fastervótam #1005 üzenetére
ok, tudom hogy a böngészőnek mind1 hogy mivel használom az echo-t, de az általad felsorolt okok miatt azthiszem maradok az echo " "; formánál, és azthiszem \" -t fogok használni ' helyett (amit eddig használtam) csak a html szokások miatt...
-
fastervótam
tag
válasz Korcsii #1006 üzenetére
Lényegében a "aaa" stringgel még történnek dolgok, mielőtt az echo kiírja az outputra, változóbehelyettesítés, vezérlőkarakterek, (illetve nem csak echonál, hanem mindenféle stringkonstans definiálásnál), a 'aaa' közötti string viszont változtatás nélkül kerül ki, nagyjából így lehet összefoglalni a lényegét. Én általában a '-t használom, mert így egyszerűbb html tagokat kiírni duplaidézőjelel.
echo '<form action="'.$_SERVER['SCRIPT_NAME'].'" method="post">';
például. Persze ilyen csak akkor van a kódban, ha nem használok template-kezelőt.
[ Szerkesztve ]
-
Korcsii
őstag
válasz fastervótam #1007 üzenetére
ok, kösz hogy rávilágítottál a ez echo-k közötti különbsére, mostmár nincs kérdésem
-
milan_
csendes tag
Kéne egy kis segítség, gondolom neketek egyszerű lesz..
Az oldalamon egy egyszerű hírlevélre feliratkozást illetve leiratkozást szeretnék létrehozni.> index.html
<html>
<head>
<title></title>
</head>
<body>
<center>
<form method="POST" action="write.php">
HÍRLEVELET KÉREK!
<input class="textfield" type="text" name="email">
<input type="submit" name="Feliratkozas" value="Feliratkozás"><input type="submit" name="Leiratkozas" value="Leiratkozás">
</form>
</center>
</body>
</html>> write.php
<?php $f = fopen("email.txt", "a"); fwrite($f, $_POST["email"]."\n"); fclose($f);?>
Köszi!
Öltöny Cipő Webáruház – http://kisznyer.hu/
-
Hujikolp
őstag
csak a mikor hozzáfűzöd, nemmondod meg neki, h mit csináljon, feliratkozik, vagy törli. Én a gomb inputját egy névre nevezném.
<input type="submit" name="mittegyen" value="Feliratkozás">
<input type="submit" name="mittegyen" value="Leiratkozás">fwrite($f, $_POST["email"]." ".$_POST["mittegyen"]."\n")
-
chop
őstag
válasz fastervótam #1007 üzenetére
Meg allitolag gyorsabban dolgozza fel a parser, franc tudja, talan csak tobbezer soros kodnal van eszreveheto kulonbseg. Mindenesetre en is inkabb a szimpla idezojelet preferalom.
-
máyköl
veterán
Sziasztok!Az a kérdésem lenne,hogy a ph-n a közsségivel nem tudok lelkes újoc lenni csak a szakmaival?A választ előre is köszi!
[ Szerkesztve ]
-
máyköl
veterán
Júúújjjuuujjj!Akkor még kell gyűjtenem!
-
djozike
csendes tag
Üdv!
Van egy kepfeltolto formom:
<form enctype='multipart/form-data' action='clan.php?clan=". $clan_id ."&page=1' method='post'>
<input type='hidden' name='MAX_FILE_SIZE' value='512'><input name='upload_img' type='file'><input type='submit' value='OK' name='ok'></form>
es van az ellenorzes:
if(isset($_FILES['upload_img'])){
if (!in_array($_FILES['upload_img']['type'],array('image/jpeg','image/gif','image/png'))){
echo"A feltöltött fájl nem JPEG, GIF vagy PNG képfájl (".$_FILES['upload_img']['type'] ."". $_FILES['upload_img']['tmp_name'].")!<br>";
}}
extra.hu tarhelyen amikor feltoltok egy kepet nem mukodik, de ugyanezen a kod atw.hu-n tokeletesen mukodik.Mi lehet a problema?Thx -
DeltaPower
őstag
-
djozike
csendes tag
válasz DeltaPower #1017 üzenetére
Nem mukodik ugye se,de egy txt kiterjesztesu filenal tokeletesen mukodik vmi szerver beallitasi hiba lehet?
-
vancha2
aktív tag
A kérdésem az lenne, hogy melyik a helyes forma:
$_GET["valtozo"]; vagy $_GET['valtozo'];
Igazából tökmindegy, mert mindkettő működik, csak kiváncsi vagyok
-
_Petya_
őstag
Hello!
Egy UTF-8 kódolású string első 10 karakterét szeretném levágni, és a "..." stringgel kiegészíteni, pl: "ez egy nagyon hosszú string" => "ez egy nag..."
$string = substr($string,0,10)."...";
Az a probléma, hogy ha ékezetes betűnél vág, akkor a 2 byte-os UTF8 karaktert elvágja, és csak az első byte lesz benne a stringben, ami természetesen "fekete rombuszban fehér kérdőjel"-ként látszik.
Hogy lehet ezt szépen megcsinálni?
Petya
[ Szerkesztve ]
Fontos feladatot soha ne bízz olyan gépre, amit egyedül is fel tudsz emelni!
-
vakondka
őstag
OOP-ban tudna valaki segíteni ?
van egy osztály (nem én írtam, letöltöttem, működik...ez OK)
és van egy másik ami az előzőnek a "bővítménye"hogy kell ezt HELYESEN definiálni az oldalon ?
Jelenleg van egy külső fájl, ebben van mind a kettő a fő class és a bővítménye is (simán egymás után).
Aztán a másik fájl, ahol beincludolom ezt a külső fájlt:
include('ez_a_class.php');
$funkcio = new MainClass();és most hogyan tovább ?
mert a külső fájlban benne van, hogy
class SubClass extends MainClass { és itt vannak a metódusok stb.. }de azt hiszem ez nem elég, mert a SubClass metódusait nem látja a program...
https://toptarget.hu - Online Marketing Ügynökség
-
DeltaPower
őstag
válasz vakondka #1027 üzenetére
subclass a main-ból van származtatva, tehát ha a main-t példányosítod, a sub metódusai nem lesznek benne. a subot kell példányosítani.
$funkcio=new SubClass();(remélem most nem mondtam hülyeséget, rég volt már az a progszigorlat )
"Moonshine Whiskey (70°, ízesítés nélküli) van. Fincsi" - Teebee - "De az kiírtaná az egész családomat..Akkor is ha csak én innék belőle.." - forintuser
-
vakondka
őstag
válasz DeltaPower #1028 üzenetére
Sikerült ! Ezer hála és köszönet !
https://toptarget.hu - Online Marketing Ügynökség
-
DeltaPower
őstag
-
Alex123
senior tag
Sziasztok!
Használok egy modult, ami megjeleníti a Google térképet az oldalamon és rajta az összes bejegyzést...
Namármost ha rákkattintok a "kis piros" lufira csak egy kattintható url és a bejegyzés megnevezése meg egy kis kép látható. (a felbukkanó google buborékban)
Szeretném ha nem csak a megnevezés és az ikon hanem a bejegyzés címe (város, utca, stb. ...) is kiiratható lenne a buborékon belül.
A kódban ha jól láttam a megnevezést és az ikon képet egy adatbázis táblából kéri le és a cím adatai egy másik adatbázis táblában vannak.
Ebben kellene segítség, hogy akkor most hogyan hova és milyen kódrészletet illesszek be.
El tudom küldeni Emailben az említett modul kódrészletét és az adatbázis tábláit is, amire szükségem lenne...
Tudna ebben Valaki segíteni?
Előre is nagyon köszönöm:
- Alex -
-
DeltaPower
őstag
-
Alex123
senior tag
válasz DeltaPower #1032 üzenetére
Ez egy Joomlás komponens alá megvásárolt modul, és Nekem a PHP "kínaiul" van, sajnos...
-
Alex123
senior tag
Itt a kódrészlet:
$now = $config->getTimeAndDate();
$query = "SELECT `title`, `icon`, `itemid` FROM `#__sobi2_item` WHERE (`itemid` IN ($sItems) AND `published` = 1 AND `publish_down` > '{$now}' OR `publish_down` = '{$config->nullDate}')";
$database->setQuery($query);
$itemsResArr = $database->loadObjectList();
$sobiItems = array();
if(!(empty($itemsResArr))) {
foreach ($itemsResArr as $itemArr) {
$sobiItem = new stdClass();
$sobiItem->id = $itemArr->itemid;
$sobiItem->title = $itemArr->title;
$sobiItem->icon = $itemArr->icon;
$sobiItem->latitude = null;
$sobiItem->longitude = null;
if(isset($data[$sobiItem->id]['latitude'])) {
$sobiItem->latitude = $data[$sobiItem->id]['latitude'];
}
if(isset($data[$sobiItem->id]['longitude'])) {
$sobiItem->longitude = $data[$sobiItem->id]['longitude'];
}
if($sobiItem->latitude && $sobiItem->longitude) {
if(is_numeric($sobiItem->longitude) && is_numeric($sobiItem->latitude)) {
$sobiItems[] = $sobiItem;
}
}
unset($sobiItem);
}
}
else {
return null;
}
if(empty($sobiItems)) {
return null;
}
echo "\n ";
echo "<!-- Start module -->";
echo "\n ";
echo "<div class=\"sobi2gcat{$class}\">";
echo "\n\t ";
echo "<script src=\"{$baseAddresse}/maps?file=api&v=2&key={$config->googleMapsApiKey}\" type=\"text/javascript\"></script>";
echo "\n\t <script type=\"text/javascript\">";
echo "\n\t ";
echo "//<![CDATA[ ";
echo "\n\t\t ";
echo "function loadSobiCatOverMap() {";
echo "\n\t\t\t ";
echo "if (GBrowserIsCompatible()) {";
echo "\n\t\t\t\t ";
echo "var SobiCatOverMap = new GMap2(document.getElementById(\"sobi2GcatOver\"));";
echo "\n\t\t\t\t ";
echo "SobiCatOverMap.setCenter(new GLatLng({$centerPointLat}, {$centerPointLong}), {$mapsZoom});";
if($mapControl) {
echo "\n\t\t\t\t ";
if($mapControl == 1) {
echo "SobiCatOverMap.addControl(new GSmallMapControl());";}
else {
echo "SobiCatOverMap.addControl(new GLargeMapControl());";
}
}
if($mapTypeControl) {
echo "\n\t\t\t\t ";
echo "SobiCatOverMap.addControl(new GMapTypeControl());";
}
if($overviewMapControl) {
echo "\n\t\t\t\t ";
echo "SobiCatOverMap.addControl(new GOverviewMapControl());";
}
if($doubleClickZoom) {
echo "\n\t\t\t\t ";
echo "SobiCatOverMap.enableDoubleClickZoom();";
}
echo "\n\t\t\t\t ";
switch ($mapTypeOnStart) {
case 'G_SATELLITE_MAP':
echo "SobiCatOverMap.setMapType(G_SATELLITE_MAP);";
break;case 'G_HYBRID_MAP':
echo "SobiCatOverMap.setMapType(G_HYBRID_MAP);";
break;case 'G_NORMAL_MAP':
default:
echo "SobiCatOverMap.setMapType(G_NORMAL_MAP);";
break;
}
foreach ($sobiItems as $sobiItem) {
$href = "index.php?option=com_sobi2&sobi2Task=sobi2Details&catid={$catId}&sobi2Id={$sobiItem->id}&Itemid={$config->sobi2Itemid}";
$href = sefRelToAbs($href);
$title = str_replace("\\\\", "\\",$sobiItem->title);
$title = str_replace("\\\\", "\\",$title);
$ico = str_replace("\\\\", "\\",$sobiItem->icon);
echo "\n\t\t\t\t ";
echo "SobiCatOverMap.addOverlay(createSobiMarker(new GLatLng({$sobiItem->latitude},{$sobiItem->longitude}), '{$href}', '{$title}', '{$ico}'));";
}
echo "\n\t\t\t ";
echo "} ";
echo "\n\t\t ";
echo "} ";
echo "\n\t\t ";
echo "function createSobiMarker(point, url, title, ico) {";
echo "\n\t\t\t ";
echo "var marker = new GMarker(point);";
echo "\n\t\t\t ";
echo "GEvent.addListener(marker, 'click', function() {";
echo "\n\t\t\t\t ";
echo "var href = new String(url);";
echo "\n\t\t\t\t ";
echo "href.replace('/\/\\\','');";
echo "\n\t\t\t\t ";
echo "marker.openInfoWindowHtml('<div class=\"sobiCatOverBubble\"><a href=\"'+href+'\">'+title+'</a><br /><a href=\"'+href+'\"><img src=\"images/com_sobi2/clients/'+ico+'\"></a></div>');";
echo "\n\t\t\t ";
echo "});";
echo "\n\t\t\t ";
echo "return marker;";És itt az adatbázis tábla:
--
-- Tábla szerkezet: `jos_contact_details`
--CREATE TABLE `jos_contact_details` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(100) NOT NULL default '',
`con_position` varchar(50) default NULL,
`address` text,
`suburb` varchar(50) default NULL,
`state` varchar(20) default NULL,
`country` varchar(50) default NULL,
`postcode` varchar(10) default NULL,
`telephone` varchar(25) default NULL,
`fax` varchar(25) default NULL,
`misc` mediumtext,
`image` varchar(100) default NULL,
`imagepos` varchar(20) default NULL,
`email_to` varchar(100) default NULL,
`default_con` tinyint(1) unsigned NOT NULL default '0',
`published` tinyint(1) unsigned NOT NULL default '0',
`checked_out` int(11) unsigned NOT NULL default '0',
`checked_out_time` datetime NOT NULL default '0000-00-00 00:00:00',
`ordering` int(11) NOT NULL default '0',
`params` text NOT NULL,
`user_id` int(11) NOT NULL default '0',
`catid` int(11) NOT NULL default '0',
`access` tinyint(3) unsigned NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;Ebből kellene valahogyan a címet (country, postcode, address...) belevarázsolni...
- Alex -
-
Alex123
senior tag
Lehet, hogy elírtam az adatbázis táblát.....
Mégis itt lennének a bejegyzések:
Tábla: jos_sobi2_fields
Város - field_city ID 3
Utca, házszám - field_street ID 1
Irányítószám - field_postcode ID 2Elnézést...
- Alex -
[ Szerkesztve ]
-
DArchAngel
tag
válasz Alex123 #1034 üzenetére
Szerintem a lekérdezéshez a következőt kellene hozzátenni:
$query = "SELECT `title`, `icon`, `itemid`,
CONCAT_WS( ' ', country, adress, postcode ) as cim
FROM `#__sobi2_item` WHERE (`itemid` IN ($sItems) AND `published` = 1 AND `publish_down` > '{$now}' OR `publish_down` = '{$config->nullDate}')";Aztán lejjebb:
$sobiItem->title= $itemArr->title . "<br /> " . $itemArr->cim;
Ha minden jól meg, így kiírja. Persze ez elég gányolós megoldás. De az osztályok átírása nélkül így is kétséges a működése.
[ Szerkesztve ]
''Hand of fate is moving, and the finger points to You...''
-
Louloudaki
aktív tag
soap szakember van-e itt?
wamp server van localhoston, kiegészítettem mindenféle pear meg soap csomaggal, megvan a távoli java serveren a wsdl, működnek is rajta metódusok. namost, ha kapcsolódnék a távoli serverhez, már nincs hibaüzi végre, viszont meghívok egy metódust rajta, ami egy stringet vár és azt adja vissza, de se kép se hang. a web service tester szerint műxik a string visszaadás, de nekem nem ír ki semmit. ez a fájlom:
<?php
require_once "SOAP/Client.php";
$url = "wsdl helye";
$soapclient = new SOAP_Client($url, true);
$result=$soapclient->echoOperation('hello');
echo 'result: '.$result;
?>
kiírja, hogy "result:" és semmi nincs a $resultban. ötletek? esetleg van valakinek kompletten beállított szervere soaphoz, ami működik, és el tudja küldeni? bár ha nem jelez hibát, akkor csak jó az enyém is. -
DArchAngel
tag
válasz Louloudaki #1037 üzenetére
Esetleg var_dump-old a $result-ot, hátha false.
De ha másnak nincs tippje, utánnanézek.''Hand of fate is moving, and the finger points to You...''
-
Louloudaki
aktív tag
válasz DArchAngel #1038 üzenetére
var_dumpolva null az értéke, de a kapcsolat létrejön, azt már leteszteltem. tehát vagy a metódus meghívása nem jó úgy, vagy az eredmény kiíratása, pedig netes mindenféle tutoriálok szerint mindkettő így helyes, vagy a szerver metódusa a bibis, de a szerveresek állítják, hogy jó, java meg c használja és megy.
azt is próbáltam, hogy a stringet egyelemű tömbként adom át neki, akkor is null az eredmény.[ Szerkesztve ]
-
DArchAngel
tag
válasz Louloudaki #1039 üzenetére
El tudnád nekem küldeni az osztály forráskódját?
''Hand of fate is moving, and the finger points to You...''
-
DArchAngel
tag
válasz DArchAngel #1040 üzenetére
Ehhh, bocsi, utánnajártam kicsit. Nem kell az osztály
Ha a kpacsolat fennáll, akkor csak az lehet a gond, hogy rosszul hívod a klienst, esetleg ő ad rossz választ vissza. Talán null-t kell adnia...Most találtam:
$result=$soapclient->echoOperation('hello')->deserializeBody();
[ Szerkesztve ]
''Hand of fate is moving, and the finger points to You...''
-
Louloudaki
aktív tag
válasz DArchAngel #1041 üzenetére
kezdem feladni, most írták a srácok ezt a megoldást:
$client = new SOAP_Client($url, true);
$att = array('ParamString' => 'valami');
$response = $client->echoOperation($att);
echo($response->return);
és hogy ez náluk jó, belső hálózatról próbálták, és megy, itt nálunk külsőről ugyanúgy null. ilyen nincs.a te megoldásodra meg ezt írja:
Call to a member function echoOperation() on a non-object in C:\www\index.php on line 8
a deserializeBody() nem jó.[ Szerkesztve ]
-
DArchAngel
tag
válasz Louloudaki #1042 üzenetére
Nem a legszebb debug, de var_dump-old ki a $client -et közvetlenül a létrehozása után.
''Hand of fate is moving, and the finger points to You...''
-
Louloudaki
aktív tag
válasz DArchAngel #1043 üzenetére
880 sor, mit keressek benne? a ParamString az létezik, a return is, és mindkettő string típus is.
az létezik, hogy belső hálóról megy, külsőről meg nem?skype-on vagy msnen megkeresel? ott az infó a profilomban.
[ Szerkesztve ]
-
kisho
senior tag
Egy fórum sablonján szeretnék végrehajtani egy kisebb módosítást, de nem értek a php-hez. Arról van szó, hogy függetlenül a nyelvi beállításoktól angolul írja ki, hogy: "Most online today: x - most online ever: y". Arra már rájöttem, hogy az index.template.php lesz valószínűleg a ludas, nevezetesen, hogy ott szövegesen van mindez beírva, nem pedig a nyelvi fájl változóira hivatkozik.
Szóval sejtésem szerint ez a bűnös sor:
</td><td style="padding: 5px;" class="smalltext" align="right">Most online today: <b>'.$modSettings['mostOnlineToday'].'</b>- most online ever: <b>'.$modSettings['mostOnline'].'</b> ('.timeformat($modSettings['mostDate']).')</td></tr></table>
Gondolom ide kellene valahogy beszúrni a $txt['most_online_ever'] és $txt['most_online_today'] változót. Én sajnos nem értek a phphez, meg a szintaktikájához. Meg tudná mondani, hogy mire kellene lemódosítani?
-
DArchAngel
tag
válasz Louloudaki #1044 üzenetére
Csak a többiek kedvéért, a megoldás az volt, hogy a kliens konstruktora második paraméterként array()-t vagy semmit fogad.
''Hand of fate is moving, and the finger points to You...''
-
Louloudaki
aktív tag
válasz DArchAngel #1047 üzenetére
a többiek kedvéért: az is volt a baj, hogy a wamp ilyen szempontból f*stalicska, legalábbis az a változat (wamp1 és wamp2) ami itt van, mert másik gépről fullos apache szerverrel, külön php5-tel és pear csomaggal megy szépen.
-
vancha2
aktív tag
Üdv!
Van egy PHP oldalam, amibe mindig az adatbázisból rakom be dolgokat. A gondom az lenne, hogy szeretném mérni, hogy ezt hányszor nézték meg. Arra gondoltam, hogy a megnyitásnál hozzáad az adatbázisban levő értékhez egyet. Ezzel viszont az a gondom, hogy ha egy felhasználó megnyitja mondjuk tízszer ugyanazt az oldalt, akkor a számlálóhoz tízszer fogja hozzáadni azt az egyet, és nem lesz reális az érték.
Arra gondoltam, hogy egy megnézésnél hozzáadok egyet az adatbázishoz, majd létrehozok az illető böngészőjében egy sütit, és a következő alkalommal leellenőrzöm hogy van-e stb...
A gubanc az, hogy a lap.php?id=1 és a lap.php?id=2 fájlnak külön sütit kellene létrehoznom. Hogy tudom a süti nevét dinamikusan beállítani? -
DeltaPower
őstag
válasz vancha2 #1049 üzenetére
google... [link]
<?php
// set the cookies
setcookie("cookie[three]", "cookiethree");
setcookie("cookie[two]", "cookietwo");
setcookie("cookie[one]", "cookieone");// after the page reloads, print them out
if (isset($_COOKIE['cookie'])) {
foreach ($_COOKIE['cookie'] as $name => $value) {
echo "$name : $value <br />\n";
}
}
?>"Moonshine Whiskey (70°, ízesítés nélküli) van. Fincsi" - Teebee - "De az kiírtaná az egész családomat..Akkor is ha csak én innék belőle.." - forintuser
Új hozzászólás Aktív témák
- Panasonic Lumix DC-G9 (V-Log L kiegészítéssel, 4 akkuval)
- Commlite CM-EF-NEX Auto-Focus Adapter (Canon EF - Sony E)
- Üzletből, garanciával, legújabb Asus Vivobook 17" i7-1355U 10 mag 5GHz/16RAM/1TBSSD/17,3"FULLHD
- Üzletből, garanciával DeLL XPS 15 9500 i7-10750H 32GBRAM 1TBSSD/GTX1650Ti 15,6"4KTOUCH
- i5 12400f 3070 gamer pc
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen
Cég: Promenade Publishing House Kft.
Város: Budapest