Sziasztok!
Ez alkalommal PHP-s kérdéssel fordulnék hozzátok, a címbe benne van minden szerintem.
(SZERINTEM NINCS, MERT KIVETTEM. NE A CÍMBE ÍRD LE A HTML KÓDOKAT, HANEM A SZÖVEGTÖRZSBE! - a szerk.
a címben szereplő szöveg ez volt:
([img_1] lecserélése mondjuk <img src=images/akarmi.jpg> -re)
)
Bármilyen megoldás érdekel, PHP legyen és működjön.
A [img_1] -ből származó szám lenne a kép azonosítója. Ez egy külön táblában van letárolva, emiatt kellene az azonosító. Az alapján kérném le a táblából a kép elérési útvonalát, és végül ezt íratnám ki.
Előre is köszi
- 4008 megtekintés
Hozzászólások
preg_replace ?
Esetleg preg_replace_callback ???
A minta: '/\[img_([0-9]+)\]/'
- A hozzászóláshoz be kell jelentkezni
kipróbáltam, de nem igazán hatotta mg :(
if (ereg ("[kep_[0-9]]", $uzenet_ki, $regs)) {
echo "$regs[0] $regs[1]";
} else {
echo "hiba";
}
Eddig ezzel jutottam a legtovább, de a szám mögött ott marad a ] jel :/
- A hozzászóláshoz be kell jelentkezni
Szia!
Én így szoktam volt csinálni (leegyszerűsítve):
...
$sql=mysql_query($parancs) or die('HIBA');
while ($sor=mysql_fetch_array($sql)) {
print '<img src="images/'.$sor["kepazon"].'.jpg">';
}
...
Persze lehet, hogy rosszul emlékszem.
Szerk:
ha van "előtagja" a fájlnak, akkor:
print '<img src="images/img_'.$sor["kepazon"].'.jpg">';
- A hozzászóláshoz be kell jelentkezni
köszi, de nem ezzel a részével van bajom :)
- A hozzászóláshoz be kell jelentkezni
ok, vettem ;)
- A hozzászóláshoz be kell jelentkezni
en az ilyenekre a preg_match_all-t szoktam, es utana egy fuggvennyel vegigmegyek a tombon.
persze ebben a konkret egyszeru esetben eleg a preg_replace is.
t
- A hozzászóláshoz be kell jelentkezni
Közben megértettem (remélem), hogy mit szeretnél.
lehet, hogy láma megoldás, de:
$valami="[img_45442]";
$mit=array("[img_","]");
$eredmeny=str_replace($mit,"",$valami);
Ha hülyeséget mondtam, akkor bocsi.
- A hozzászóláshoz be kell jelentkezni
ilyesmire lenne szükségem, de sajna nem túl hasznos dolog, ha eétűnnek a szövegbe írt ] jelek. Mert így ugye nem csak az [img] tag végéről szedi le, hanem az egész szövegből :(
- A hozzászóláshoz be kell jelentkezni
Backslash?
$text = preg_replace("#\[img_(.*?)\]#si", "<img src="image.php?\\1" >", $text);
- A hozzászóláshoz be kell jelentkezni
Hi!
Pár napja gondoltam egyet és elkezdtem "tanulgatni" a php-t. Gondoltam az lesz a legjobb ha van egy konkrét feladat, amiben elég sok minden benne lesz, és mire befejezem már menni fog valamennyire. A feladat egy olyan oldal amit a portaszolgálaton használnának. Vendégek nevét, érkezési/távozási idejét, ig.számát, kihez jött ...stb tárolná egy adatbázisban. A főoldalon - ahol van a form is - lenne az aznapi vendégek listája valamilyen szepont szerint sorban. Nem untatlak titeket tovább a tervemmel, a lényeg, hogy egyszerűen nemműködik valami amit nem értek miért.
(apache2 és php van fent)
Tehát, egy adott sort szeretnék törölni a listából:
<a href="delete.php?mit=<?= $sor["id"] ?>">delete</a>
Lent a status sorban látom a megfelelő id-t, a baj, hogy nem adja át a delete.php-nak. Onnan tudom, hogy ez a delete.php tartalma
<?php
print $_POST["mit"];
?>
Nem tudom hogy lehet ilyesmire rákeresni google-ban, de nem taltam meg.
Forrásom: oktatóvideó + php.net doksi
Érdekes számomra, hogy így sem megy ha manulisan adom meg,
<a href="delete.php?mit=55">delete</a>
Nem tudom kiirtni a "mit" értékét. Mit szúrok el?
Szerk.: van jogom törölni, paranssorból megy
- A hozzászóláshoz be kell jelentkezni
Amit url-ben küldesz az nem a $_POST ban van, hanem a $_GET-ben, $_POST-ban a formod eredményét kapod meg (ha method="post")
szerk.: Mindenkinek, aki nem hallott róla még: http://hu2.php.net/addslashes
____________________________________________________________________________________
Találkozunk majd ott, ahol nincsen sötétség. Rossz a V-gombom, bocs ha néha kimarad.
- A hozzászóláshoz be kell jelentkezni
ahh, köszi a gyors választ. Motmár működik a kiíratás is és a törlés is az adabázisból.
Thanks!
- A hozzászóláshoz be kell jelentkezni
Kipróbáltam addslashes nélkül bevinni az O'reilly-t és szépen visszaadta.
Most inkább mielőtt egy kódsort is beírnék elolvasom a php4 24 óra alatt könyvet.
Sajna a php5-ös nincs meg.
- A hozzászóláshoz be kell jelentkezni
Szerintem meg inkább mysql_real_escape_string() vagy pg_escape_string(). Az addslashes() csak akkor jó, ha olyan adatbáziskezelővel van dolgod, amihez nincsen escape_string függvény. Örülök is neki, hogy az újabb PHP verziókban le van tiltva a magic_quotes_gpc() alapból, mert csak kavart okozott. Érdemes volt még a legelejére berakni ilyesmit, hogy:
if( get_magic_quotes_gpc() ){
$arr=array( array_keys($_GET), array_keys($_POST), array_keys($_COOKIE) );
foreach($arr as $a)
foreach($a as $k)
switch($a){
case 0; $_GET[$k]=stripslashes($_GET[$k]); break;
case 1; $_POST[$k]=stripslashes($_POST[$k]); break;
case 2; $_COOKIE[$k]=stripslashes($_COOKIE[$k]); break;
}
}
---------
WARNING: Linux requires you to type! After rebooted to Windows, you can safely unplug your keyboard.
szerény blogom -- új címen!
- A hozzászóláshoz be kell jelentkezni
Ezektől akartam egy kezdőt megkímélni... Amúgy igazad van.
u.i: Így, hogy szerkesztetted a postod, az enyém nem engedte elküldeni, ami persze el is veszett. Úgyhogy kezdés újból...
____________________________________________________________________________________
Találkozunk majd ott, ahol nincsen sötétség. Rossz a V-gombom, bocs ha néha kimarad.
- A hozzászóláshoz be kell jelentkezni
ahh, én is így jártam, grrrr
:)
- A hozzászóláshoz be kell jelentkezni
Nem szerkesztettem. Lehet valami bug.
Szerintem érdemes egy kezdőt rászoktatni arra, hogy minél hatékonyabban programozzon. ~4 éve én is úgy kezdtem, mint a kérdést felvető, hogy jó lenne programozgatni, vagy valami ilyesmi, most meg ott tartok, hogy programtervező informatikusnak megyek, mert egy végtelen kihívást (és kalandot) látok a programozásban.
---------
WARNING: Linux requires you to type! After rebooted to Windows, you can safely unplug your keyboard.
szerény blogom -- új címen!
- A hozzászóláshoz be kell jelentkezni
én nagy hálával fogadok minden segítséget.
Legfeljebb nem értem meg elsőre, de akkor úgyis megkérdezem :)
- A hozzászóláshoz be kell jelentkezni
Igaz. Én is hasonlóképpen érzem, gondolom, kezdtem:) Pacsi:)
Sajnos, én egyenlőre csak a webes témakörökben vagyok jártas (php,mysql,js/ajax stb), de már több próbálkozásom van/volt/lesz(csak most nincs időm) a java felé (egyenlőre j2me) meg valami c is kéne, csak nem tudom melyik, ilyesmi. Egyelőre érettségi:(
szerk.: a szerkesztős, az budacsikank szólt, mert őrá válaszotlam, mondjuk ez nem derült ki, de nem is az lehetett a probléma.
____________________________________________
Találkozunk majd ott, ahol nincsen sötétség.
- A hozzászóláshoz be kell jelentkezni
Én is inkább csak PHP-hez értek (meg a postgres házatáján szorgoskodok) egyelőre, de tanulok Java-t is, meg C-vel is ismerkedek már egy ideje. Ha kijön a KDE4 (és stabil lesz Gentoo-n), akkor belevágok a C++-ba is. Pythonozni nagyon szeretek, mert nagyon gyorsan lehet vele haladni.
Jelenleg a programozási tanulmányaimat visszaveti az érettségi (Szegedre jössz továbbtanulni?), pont mint neked (virtuális pacsi).
---------
WARNING: Linux requires you to type! After rebooted to Windows, you can safely unplug your keyboard.
szerény blogom -- új címen!
- A hozzászóláshoz be kell jelentkezni
Nem sajna. De ott születtem:)
Python alapok megvannak, de nem igazán szimpatikus ez a whitespacekre epitett cucc.
Ilyeszto milyen durva cuccokat is írnak pythonba:)
Pl nicotine, de biztos van durvabb is.
____________________________________________
Találkozunk majd ott, ahol nincsen sötétség.
- A hozzászóláshoz be kell jelentkezni
jah hát pl a heroin meg a cocain sokkal durvább mint a nicotine! ;)
Apple MacBook
CD 1.83 | 1.25GB 667MHz | 60GB SATA | 2.36 kg | 5400mAh @ 12.5V
- A hozzászóláshoz be kell jelentkezni
A ratpoison-rol mar nem is beszelve:)
__________________________________________________________________
A tudatlanság: erő.
- A hozzászóláshoz be kell jelentkezni
És ez már jó:
$str="Blablabla[img_1]blablabla";
$str_2 = str_replace('[img_1]','',$str);
print ($str_2);
kimenet:
Blablablablablabla
- A hozzászóláshoz be kell jelentkezni
ill van még egy kérdésem így az elején amíg nem késő.
A táblázatom túl dinamikusra sikerült :). Komolyan: néha a megfelelő képp jelenik meg néha meg összeugrik mintha nem lenne beállítva a width paraméter.
Esetleg idelinkeljem a forrást vagy egy tipikus hiba? Mert régebbem jártam már így.
- A hozzászóláshoz be kell jelentkezni
Várj, épp válaszolok, csak agyonvágtam a teszt oldalt épp, amin az sqlinjection ra akartam felhívni a figyelmed.
____________________________________________________________________________________
Találkozunk majd ott, ahol nincsen sötétség. Rossz a V-gombom, bocs ha néha kimarad.
- A hozzászóláshoz be kell jelentkezni
Azt nem tudom miért van, így rímót.
Próbáld ki hogy megadod a kép(ek) méreteit a cellá(k)nak is...
____________________________________________________________________________________
Találkozunk majd ott, ahol nincsen sötétség. Rossz a V-gombom, bocs ha néha kimarad.
- A hozzászóláshoz be kell jelentkezni
na jó, egyszerűen nem megy.
10 percig szerkesztek egy postot és megint elvág. Mindjárt linkelek a forrásra
Szerk:
itt van: http://budacsik.atw.hu/php/index.hupra.txt
igyekeztem rendezni a kódot, de egyelőre mc-ben írom.
Igazából nemtudom mi a baj, ill miért nem fix a táblazatom métere
- A hozzászóláshoz be kell jelentkezni
TABLE WIDTH=
ES A TOBBI TD-NEK IS LEGYEN SZELESSEGE
MEG AKKOR IS TORZULHAT, HA A DUMA NEM FER EL EGY SORBAN.
- A hozzászóláshoz be kell jelentkezni
Nem tudok postolni, próba...
____________________________________________________________________________________
Találkozunk majd ott, ahol nincsen sötétség. Rossz a V-gombom, bocs ha néha kimarad.
- A hozzászóláshoz be kell jelentkezni
http://metamorfozis.hu/proj/huppare/poszt1.txt
A faszom kivan, ha ezt bemásolom akkor forbidden... UTF8, bocs.
- A hozzászóláshoz be kell jelentkezni
csak intelligensen!
nyilvan a SELECT es INSERT miatt nem ment
t
- A hozzászóláshoz be kell jelentkezni
Insert nem volt, select volt.
Úgy bizony, csak értelmesen.
____________________________________________________________________________________
Találkozunk majd ott, ahol nincsen sötétség. Rossz a V-gombom, bocs ha néha kimarad.
- A hozzászóláshoz be kell jelentkezni
egyszer elolvastam, most végetem a táblázatommal és mégegyszer elolvasom.
Köszi
- A hozzászóláshoz be kell jelentkezni
tehát nem lég csak a
<td>
-nek megadni?
Most látom hozzáfűztél még 2 sort közben.
Tehát minden egyes cellának be kell állítanom, nem elég a legfelsőknek?
Érdekes, megcsinálom és kipróbálom, köszi
- A hozzászóláshoz be kell jelentkezni
Elég csak a legfelsőknek.
Ha az első sor minden cellájának megadod a szélességét, táblaszélesség elméletben nem is kell.
____________________________________________________________________________________
Találkozunk majd ott, ahol nincsen sötétség. Rossz a V-gombom, bocs ha néha kimarad.
- A hozzászóláshoz be kell jelentkezni
eleg a legfelsonek (td), de meg kell adni a table-nek is. pl
table width=120
td width=40
td width=40
td width=40
- A hozzászóláshoz be kell jelentkezni
köszi, úgy látom megy, még nem ugrott össze
Köszi nektek!
- A hozzászóláshoz be kell jelentkezni
Oregon: Van rá konkrét indokod, hogy minek kell a táblaszélességét is megadni, vagy csak megszokás?
Vagy csak ie?:)
Nekem eddig nem volt problémám az elhagyásból ha jólemlékszem.
____________________________________________
Találkozunk majd ott, ahol nincsen sötétség.
- A hozzászóláshoz be kell jelentkezni
ezer eve keszitek html-t es volt ra okom,lehet mar nem kellene megadni.
aszem vagy ie vagy netscape miatt. nem emlekszem.
- A hozzászóláshoz be kell jelentkezni
Nem szamonkero hangnembe kerdeztem, ha netan úgy is tűnt, hanem erdeklodve (gondolván, hogy valami okod van ra) es ez az ok erdekelt. En koromnal fogva sem csinalom ezer max 4eve, akkoriba mar a netscape igen jelentektelen volt. Úgyhogy annyira nem is erőltettem szívni vele. (A macska meg a fára mászva van a fel:))
____________________________________________
Találkozunk majd ott, ahol nincsen sötétség.
- A hozzászóláshoz be kell jelentkezni
elso weboldalamat ugy 8-9 eve keszitettem. a 4-es ie maga volt a megvaltas. :) (akkor)
- A hozzászóláshoz be kell jelentkezni
Azt egyszer ki kell probalni wine-vel:D
Egyszer az elso netscape-t probaltam ki, azthiszem meg az url->ip konverzio se ment neki, vagy valami hasonlo volt azthiszem ahol elakadt a projekt.
____________________________________________
Találkozunk majd ott, ahol nincsen sötétség.
- A hozzászóláshoz be kell jelentkezni
Egy okos tool:
http://validator.w3.org/
ha valami nem stimmel egy html, css, xml koddal
itt azonnal megkapod a valaszt, hogy hol, mit rontottal el
- A hozzászóláshoz be kell jelentkezni
hááth előjött a következő problémám.
Van egy lista ami kilistzza az adatb-ban lévő recordokat szépen táblázatba. Minden record mellé tettem egy delete és egy modify linket. A delete működik szépen. Amodify már nem :)
Biztos nem a megfelelő módszerrel próbálkoztam, ezt sztm tipikus eset.
Tehát a modify link az adott record mellett egy modify.php-ra visz és az adott record ID-jét küldöm neki. A modify.php oldalon egy sql lekérdezéssel a kapott id segítségével lekérem az adott recordo az adatbázisból, és minden elemet beleillesztek egy formba amiben aztán meg is lehet változtatni. Eddig jó. Akármelyik recordot akarom módosítani, mindig a megfelelő adatokat kapom meg a modify.php oldalon de
amikor ezen az oldalon megváltoztatom az adatokat (egyelőre egyel próbálkozok csak) nem megy. A hiba, hogy nem adja át a modify2.php-nak az ID-t. Pedig a modify.php-ban a form-ba direkt tette egy
<input type=hidden name=mit value="<?= $sor["id"] ?>">
sort, hogy a formal tovább menjen az id is ismét. De nem megy át, sőtt más sem. Tehát már ez a form nem ad át semmit valamiért a modify2.php-nak.
Nemtudom le tudtam e írni érthetően :) szivesen teszek fel kódot ha valaki megszánna annyira :)
- A hozzászóláshoz be kell jelentkezni
<form name="valami_hulye_nev_a_formnak" method="post" action="modify2.php">
<input type="hidden" name="mit" value="<?= $sor["id"] ?>" />
<input type="submit" name="submit" value="Elküld" />
</form>
utána a $_POST['mit']-ben _kell_lennie a változónak
---------
WARNING: Linux requires you to type! After rebooted to Windows, you can safely unplug your keyboard.
szerény blogom -- új címen!
- A hozzászóláshoz be kell jelentkezni
Köszi, most értem haza, de nemsokára folytatom és kipróbálom.
- A hozzászóláshoz be kell jelentkezni
Debugolásra egyébként használhatod a
print "<pre>";
print_r($_POST);
trükköt, persze $_GET-el és minden egyéb tömbbel is működik.
____________________________________________
Találkozunk majd ott, ahol nincsen sötétség.
- A hozzászóláshoz be kell jelentkezni
hmm, ezt nem ismertem eddig, de utánanézek hogy kell használni, köszi.
Off
Közben ezsembe jutott valami. Mivel a cégnél a grafikusok csinálják a honalpunkat, és az is html, lehet nem tesz nekem jót, ha pár hónap múlva (remélem) előállok ezzel a kis "cuccal", mert még a végén az a munka is rámmarad. És ha már kötelező nem is izgi ...
On
- A hozzászóláshoz be kell jelentkezni
Tök egyszerű problémám van amire az ideiglenes megoldást is leírom, de az tuti nem jó
<?php
$ev = date(Y);
$ho = date(m);
$nap = date(d);
?>
<html>
<head>
<title>Lista</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<form action="lekerdezes.php" method="POST">
Lista keszitese datum alapjan: (pl.: 2007-03-04)<br>
<input type="text" name="ev" value="<?= print $ev; ?>" size="4" maxlenght="4">
<input type="text" name="ho" value="<?= print $ho; ?>" >
<input type="text" name="nap" value="<?= print $nap; ?>" >
</form>
</body>
</html>
<?
?>
Az a baj, hogy a kimenet e helyett:
|2007 | |06 | |12 |
|20071 | |061 | |121 |
Odatesz egy egyest mindegyik után. Miért vajon?
Kiiratva a változók értékét egymás után akkor 20070612. Tehát jó.
A form teszi? A tervem az, hogy a 3 változót majd valahogy egy változóba teszem és az lesz a lekérdezésben a feltétel, tehát ha pl az összes vendéget ki kell listázni aki 2007. 05. 12-én volt akkor azt kell beírni, a feldolgozó először a 3 változót egy újban eltárolja és beleillesztem a lekérdező parancsba. De nem is ez a lényeg.
Igeiglenes megoldásom:
<input type="text" name="ev" value="<?= print $ev; ?>" size="4" maxlength="4">
<input type="text" name="ho" value="<?= print $ho; ?>" size="2" maxlength="2">
<input type="text" name="nap" value="<?= print $nap; ?>" size="2" maxlength="2">
Tehát fix méretek megadása, így (csúnyán szólva) nem jut hely az egyesnek. Viszont ehhez feltétel kellett legyen, hogy nem lehet 2007 2. 3. hanem 2007. 02. 03.
Szerk: végül is ez azért kell, hogy alapértelmezetten a mai dátum legyen benne. de úgysem azt akarják majd lekérni gondolom, viszont így szép.
- A hozzászóláshoz be kell jelentkezni
Grrr, ezt meg kellnene oldanom, enélkül nem tudok haladni, most pl ezért:
$edate = print $_POST[ev]; print $_POST[ho]; print $_POST[nap];
print $edate;
edate = érkezési dátum.
csak az a baj, hogy edate értéke jó lesz + egy 1-es. Vagyis mai dátum:
200706121
- A hozzászóláshoz be kell jelentkezni
Miért írsz
<?= print ... ?>
-ot?
Elég vagy az egyenlőségjel, vagy a print. És olyankor nem kapsz 1-est :).
Részletesebben: Ez olyan, mintha kétszer írnád ki a print-et. A belső kiírja, amit ki akarsz iratni, a külső pedig a belsőnek a visszatérési értékét, azaz az 1-et.
- A hozzászóláshoz be kell jelentkezni
így gondoltad?
$edate = "$_POST[ev]$_POST[ho]$_POST[nap]";
Végülis működik, de hmm, ez így helyes szintaktikailag? Ez jó ha így megtanulom?
- A hozzászóláshoz be kell jelentkezni
Köszi, így, hogy módosítottad világos, és kijavítom. Nem tudom honnan szedtem ezt. Gondolom ha egyedül tanulok akkor ilyen problémák előfordulnak még.
- A hozzászóláshoz be kell jelentkezni
az 1-est azert teszi moge, mert a print visszateresi erteke true, es te ugy hivod, hogy <?= print 'akarmi';?>ahogy kene:
vagy <?=$akarmi;?>, vagy <?php print "akarmi";?>olvasgasd kicsit a php alapokat: php.net/manual
a masik egyszerusites:
$ev=.... $ho==.... $nap=... helyet
list($ev,$ho,$nap) = explode("-",date("Y-m-d"));
t
- A hozzászóláshoz be kell jelentkezni
Rendben, köszi.
- A hozzászóláshoz be kell jelentkezni
Egy költői kérdés.
Azt hogy lehet megtanulni, hogy bizonyos dolgokat, hogyan kell megoldani.
Ehhez megint le kell írjak egy példát, hogy megértessem veletek mit szerenék tudni.
pl.: van nekem a főoldalam, (fenntebb már írtam mit készítek) aminek az alsó részén egyől mutatja az aznapi vendégek nevét és pár infót (érkezett, távozott, kihez jött ...).
Ezt a listát az ember mégsem hánnya csak úgy random oda, rendezni kellene.
Alapértelmezetten úgy rendezem, hogy érkezési időrendbe fentről lefelé növekvő. De azt akarom, hogy ha rákattintok a "Vendeg neve" oszlopfeliratra akkor azonnal név szerint rendezze. (bele se megyek, hogy a.b.c. szerint milyen módon a kettőből, legyen most csak ORDER BY vendegnev, és akkor Antal Imre, Buzsóka Zsolt ... Zendvai Béla lesz / fentről lefelé)
Már működik, de hogy érdemes megoldani? Én úgy csináltam, hogy az egész alsó "kiírató" táblázat kétszer szerepel, egyik az if elágazás igaz ágában a másik a hamisban. Hogy mit vizsgál az if? A "Vendeg neve" oszlopfelirat link lett ami saját magára mutat, de átad egy paramétert (i=1), és ha i=1 akkor név szerint rendezek, ha i!=1 akkor érkezés szerint. Mivel alapból i nem létezik és nincs paramétere nem lesz egyenlő és érkezés szerint rendez, de ha rákattintok a "Vendeg neve" oszlopfeliratra akkor név szerint rendezi. Tehát működik, de lehet, mégis baromság de nem jutott jobb eszembe. Asszem épp ma egy hete, hogy elkezdtem PHP-zni, szóval én ennek is örülök, mint majom a farkának :D
Ez csak kísérletezgetés, meg más kód olvasgatása után alakul ki? Mikortól kell arra figyelni, hogy optimálisan írtam meg a kódot, vagyis legkevésbé használjon rendszererőforrásokat?
Szerk.: Csak attól félek, hogy olyan láma módon tanulok, hogy sok felesleges plusz sort alkalmazok mint jelen esetben kétszer szerepel az a táblázat.
- A hozzászóláshoz be kell jelentkezni
Forbidden
You don't have permission to access /comment/reply/34944 on this server.
hm....
szerk.: pff... most meg persze megy.... :P
szerk. #2: ez hihetetlen! itt güriztem a forrás megírásával, erre azt meg nem nyalja be a fórum... hrr hrr :X tehát inkább linkelem. klikk IDE!
- A hozzászóláshoz be kell jelentkezni
Én ugy csináltam meg a rendezést, hogy előre tettem a print sorba megjegyzésnek a rendezendő sort. if el meg figyeltem mi szerint akar rendezni. és mivel a printnél elől van a szerint rendezi abc-be.
pch
- A hozzászóláshoz be kell jelentkezni
Hali!Egy kérdésem akadt ismét.
Keresés: Azt akarom megoldani, hogy lehessen keresni keresztnév és vezetéknév szerint is vagy akár teljes névre.
Jelenlegi tudásommal úgy tudom ezt megoldani, hogy 2 külön modulba tenném a keresztnévre és vezetéknévre való keresést és külön táblázat/select is kellene a feldolgozó oldalon.
Viszont talán úgy lenne értelmes, hogy egy modulban lenne a két keresztnév és vezetéknév mező és bármelyiket is töltöm ki működjön, vagy akár mind a két mezőt is kitölthessem.
Vagy először az ember csinálja meg úgy ahogy tudja és utána foltozgassa?
- A hozzászóláshoz be kell jelentkezni
Egyelőre megoldottam így: link
Működni működik. Ez csak a feldolgozó oldal. 3 modul van.
Ha ossz értéke 1 akkor az első modul hajtódik végre.
Ha ossz értéke 0 akkor jön még egy feltétel.
Ha a vezeteknev változónak van értéke akkor a 2. modul megy végbe
Ha a nincs (hamis ág) akkor a 3. modul megy végbe
1. modul: ez kilistáz minden adatbázisban szereplő vendéget érkezési dátum szerint csökkenőben
2. modul: ez vezetéknév alapján keres és listáz
3. modul: ez keresztnév alapján keres és listáz
Ennyire futotta a tudásomból, majd esz ez jobb is biztos.
most viszont egy komolyabb kérdésem lenne:
Van egy form, vegyük az első két elemét:
vezeteknev és keresztnev.
Ezeket kötelező kitolteni ezért ezt vizsgálni akarom, így
print isset($_POST["vezeteknev"]);
Ennek akkor kellene 1-nek lennie ha beírok valamit a vezeteknev mezőbe. De ha nem írok be semmit akkor is 1 az értéke. Miért?
- A hozzászóláshoz be kell jelentkezni
az isset akkor is igazat ad vissza, ha a változó létezik.
http://hu2.php.net/isset
- A hozzászóláshoz be kell jelentkezni
megoldás: print ((isset($_POST["vezeteknev"]) && $_POST["vezeteknev"]!="") ? 1 : 0);
magyarázat
-> isset: csak azt ellenőrzi, hogy definiálva van-e az argumentumként megadott változó. Ugyanis ha definiálatlan változót ellenőrzől, akkor E_WARNING szintű hibaüzenet eredmény (amit esetleg a PHP beállításai miatt nem látsz)
-> az űrlap szöveges mezőjét ha nem töltöd ki, a változó akkor is meglesz, csak értéke nem lesz. Tehát isset(...) esetén true értéket (1) ad.
text tíousú input mező esetén ha a változó létezik és üres, akkor 100%, hogy nem lett kitöltve, ha pedig a feltétel nem teljesül, akkor 100%, hogy ki lett töltve.
kiíráshoz használt összevont szerkezet értelmezése: print "blabla ". ([feltétel] ? [érték ha teljesül] : [érték ha nem teljesül]) ." tovább blabla";
Remélem jól értelmeztem a problémát.
Szió
- A hozzászóláshoz be kell jelentkezni
Köszi mindkettőtöknek. Olvastam a php.net-en ezt csak figyelmetlen voltam az értelmezéskor. Valamiért azt gondoltam, hogy azt jelenti az isset, hogy ha a változónak van értéke akkor 1. No mindegy, köszönöm a felvilágosítást.
Amit írtál viszont lehet, hogy jó, de amíg nem értem addig nem használnám.
Megpróbálok végig menni rajta:
az első fele az "enyém" tehát értem. utána "és" megmondod neki hogy a vezeteknev nevű változó nem= semmivel (bocsi a szóhasználatért csak ...)
és mi az utána? (? 1 : 0)
- A hozzászóláshoz be kell jelentkezni
? 1 : 0
az egész egy tömörített if szerkezet, vagyis ha a ? előtti zárójel teljesül, akkor 1, ha nem, akkor a kettőspont utáni résszel tér vissza (ezesetben 0)
definiálatlan változó ellenőrzése isset nélkül pedig csak E_NOTICE, ennek ellenére szükséges az esetleges javítása.
Amennyiben a noticok ki vannak kapcsolva, ajánlom engedélyezésüket.
- A hozzászóláshoz be kell jelentkezni
oké, köszi.
- A hozzászóláshoz be kell jelentkezni
is_empty() ?
--
"SzAM-7 -es, tudjátok amivel a Mirage-okat szokták lelőni" - Robi.
- A hozzászóláshoz be kell jelentkezni
hmm, ezt így lenne helyes használni?
szerk:
if (empty($_POST[vezeteknev])) == 0 {
print "vezeteknev nevu valtozonak van erteke es nem 0";
}
print "vezetek nevu valtozonak nincs erteke vagy 0";
?
Szerk: hülyeséget írtam, világos minden (ez is meg az előző is):)
- A hozzászóláshoz be kell jelentkezni
print ((isset($_POST["vezeteknev"]) && $_POST["vezeteknev"]!="") ? 1 : 0);
zarojelek ugye a precedenciat jelolik.
eloszor a legbelso kifejezes hajtodik vegre, az is balrol jobbra:
isset($_POST["vezeteknev"])
ez vagy true-t, vagy false-ot ad vissza, attol fuggoen, hogy van, vagy nincs ilyen index a $_POST tombben.
ezutan jon egy ternális operátor ez ha az első parametere igaz, akkor a masodik parameterrel, ha hamis, akkor a harmadik parameterrel ter vissza.
Tehat ha a $_POST["vezeteknev"] akkor 1-el, ha nem, akkor 0-val fog visszaterni (ez amugy tok felesleges, maga az isset is true-false-szal ter vissza).
Ezt a visszateresi erteket megkapja a print fuggveny.
es ki fog irni egy 1-est ha van ilyen valtozo, es 0-t ha nincs.
rovidebben igy lehetett volna:
echo (int)isset($_POST['vezeteknev']);
Tyrael
- A hozzászóláshoz be kell jelentkezni
köszi neked is a választ!
- A hozzászóláshoz be kell jelentkezni
isset nem dob notice-t nem letezo valtozora, pont arra valo, hogy megmondja, hogy letezik-e az adott valtozo, vagy sem.
viszont ha barmilyen mas kornyezetben probalsz nem letezo valtozora/indexre hivatkozni, az valoban dob notice-t.
"az űrlap szöveges mezőjét ha nem töltöd ki, a változó akkor is meglesz, csak értéke nem lesz. Tehát isset(...) esetén true értéket (1) ad."
lesz erteke, megpedig "", azaz ures string.
ossze is hasonlithatod egy ures stringgel, es latni fogod, hogy megeggyezik.
no offense
Tyrael
- A hozzászóláshoz be kell jelentkezni
Nah megoldottam így link
Lehet, hogy még ez nem tökéletes, de akkor is egyharmad annyi kódból jött ki kb. Mellesleg átláthatóbb is ezáltal.
Köszönöm a segítséget mindenkinek.
Egy probléma azonban van ezzel. Az ossz==1 nem működik, mert azt az egyet egy linkről kapná meg. Azthiszem azt GET-el küldi. Ezzel mit lehet tenni?
A form-ban lehet átállítani GET-re, csak nem nagyon tudom a különbséget, és a POST-al nem volt baj. Bár itt nem sok adatról van szó, mindössze pár karakter nem egy nagy űrlap.
Szerk: erre válaszoltam (magamnak) 2007-07-19 11:26
- A hozzászóláshoz be kell jelentkezni
Még egy dolog.
Ok, hogy ezt most megcsináltam valamennyire, talán hamarosan kész lesz.
De ha legközelebb kell valami ilyesmit csinálnom akkor megint újra kezdjem a nulláról, vagy ollózzam ki ebből ami kellhet és módosítsam azt?
Azért kérdem, mert más dolog megírni valamit fejből és manualokból, és más dolog (más tudás) megérteni egy kódot és módisítani.
Ki melyiket preferálja?
(Én az a fajtavagyok aki újra megírja majd legfeljebb ha nagyon nem jut eszembe belekukkatok ebbe, de nem ollózok ki semmit. Hülye felfogás?!)
- A hozzászóláshoz be kell jelentkezni
ha erted is amit csinalsz, akkor lehet ujrafelhasznalni.
addig amig csak eszetlenul copy paste-elsz, addig erdemesebb ujrairni.
en anno igy vagtam neki a phpzesnek (meg ugy altalaban a gyakorlati programozasnak):
irjuk portalt, legyen user authentikacio, legyenek kulonbozo jogosultsagi szintek, tudjon admin hireket felvinni, szerkeszteni, usereket kezelni.
ezutan fogtam, letoroltem az egeszet, kezdtem elorol spagetti kod helyett fuggvenyekkel, stb.
3., 4. probalkozast mar rajtam kivul mas is atlatott volna.
Meg imho sokkal jobb, ha nem csak azert csinalod A variacioval az adott feladatot, mert minden profi ezt mondja, hanem azert, mert probaltad B-t, C-t, D-t legalabb egyszer, es tenyleg jobb az A megoldas.
Tyrael
- A hozzászóláshoz be kell jelentkezni
Köszi!
- A hozzászóláshoz be kell jelentkezni
Hi :)
Egy kis pihenő után folytatom. Jött egy kérés, hogy ha egy kötelező mezőt nem töltenek ki akkor vissza lépés esetén a kitöltött mezők tartalmai is elvesznek. Este elalvás előtt eszembe jutott egy megoldás ami megint számomra érdekes dolgot produkált.
A megoldás ez lenne:
vendegkonyv.php itt az űrlap amiről küldöm a cuccot a feldolgoz.php-nak.
Először csak a keresztnevet "felejtem" el kitölteni és a vezeték nevet szeretném ha nem "felejtené" el a program. A feldolgoz.php szól, hogy baj van, nem töltöttem ki a keresztnevet, lépjek vissza
<a href=vendegkonyv.php?vezeteknev='$_POST[vezeteknev]'>Vissza a főoldalra</a>
Azthiszem látszik a lényeg, visszaküldeném a "vissza" linkben az adatokat a főoldali form-nak, ahol a form eleve így néz ki:
<input type='text' value='<?= $_GET[vezeteknev] ?>' name='vezeteknev' size='25' maxlength='20'>
Plusz az oldal tetején kiíratom a vezeteknek értékét, hogy lássam működik e.
Eredmény: a formban egy \ jel van. Az oldal tetején meg Budacsik vezetéknév esetén:
\'Budacsik\'
A formba miért csak egy visszaper-jelet tesz, és egyébként kiíratva meg miért ezt írja ki?(
print $_GET['vezeteknev'];
)
Szerk.:
<input type='text' value=<?= $_GET[vezeteknev] ?> name='vezeteknev' size='25' maxlength='20'>
Ha nincs idézőjel a value= urán akkor a formba is azt ilelszti amit a kiíratásnál is látok: \'budacsik\'
- A hozzászóláshoz be kell jelentkezni
Nézd meg a php.ini -ben a magic quotes beállításokat. Leírás itt és itt.
--
Lógnak a pálmafán a kókuszok .... :)
http://laszlo.co.hu/
- A hozzászóláshoz be kell jelentkezni
Nem éppen PHP, de sokat segíthet :)
http://www.javascript-coder.com/html-form/javascript-form-validation.ph…
----------------------------
Sebesség Teszt
- A hozzászóláshoz be kell jelentkezni
told be session változóba/tömbbe a form mezőit a POST-nál, ha valami kötelező mező kimaradt, akkor visszairányítasz a form oldalra, (ha nem, akkor megy tovább...), a form oldal meg minden betöltésnél vizsgálja, hogy üres-e a session tömb, ha nem, akkor feltölti a benne lévő értékekkel.
(nem olvastam végig a threadet, szóval nemtudom, kilőtted-e már a session-ös megoldást)
SZVSZ a Get-es a megoldás nem túl szép...meg ugye mindenhol próbálnak lebeszélni a getes értékadásokról.
- A hozzászóláshoz be kell jelentkezni
Üdv!
Egy kis helpre lenne szükségem. Van egy weboldal amit nemrégen készítettem, de iframe-el.
Ez nem jó, mert a google ezt nem szereti. Szóval egy táblázat egyik cellájában h az iframet kicserélem
<?php include 'main.html' ?>
-re akkor is megy. De a linekket nem tudom, hogy csináljam meg, mert most mind úgy néz ki, hogy
<a href="xx.html" target=main">
A main a neve az iframe-nek. Szóval a kérdés, hogy hogy csináljam, hogy továbbra is abban a cellában jelenjenek meg a linkek céloldalai.
Válozóval próbálkoztam
<?php
$main = 'main.html';
echo $main;
?>
[...]
<table width="600" border="1" cellapdding="0" cellspacing="0">
<tr>
<td colspan="2" height="30" align="center" valign="center">
>> HEADER <<
</td>
</tr>
<tr>
<td height="400" width="150" valign="top" align="center">
<b>menu</b>
<br><br>
<a href="<?php $main = "contact.html" ?>">Contact</a><br>
<a href="<?php $main = "main.html" ?>">Main</a><br>
</td>
<td height="400" width="450">
<?php include $main ?>
</td>
</tr>
</table>
De ez hülyeség, mert a main értéke midnig main.html lesz ha az van legalul, mostmár látom. De a megoldást nem sajna, és PHP-ben ilyesmit nem csináltam még. (mást se nagyon, 1-2 SQL-es dolgot csak)
Köszi a segítséget
- A hozzászóláshoz be kell jelentkezni
<?php
include('main.html');
?>
a main.html-ben meg javitsd ki a linkeket (egyszerubb egyszer kijavitani a fajlt, mint phpbol allandoan)
Tyrael
- A hozzászóláshoz be kell jelentkezni
Én kicsit máshogy csinálnám:
<?php
if (isset($_GET['p']) {
$p = $_GET['p'];
} else {
$p = "main";
}
?>
...
<a href='index.php?p=contact'>Contact</a>
...
<?php include($p . ".html"); ?>
...
Tfh a fájl neve: index.php.
http://mod.gyengus.hu/ http://gyengus.hu
'Everybody loves LEDs'
- A hozzászóláshoz be kell jelentkezni
Azt hiszem ez lesz a megoldás,kipróbálom a teszt oldalon.
Köszi, működik, csak egy zárójlet kihagytál, cska azért mondom, hogy ha másnak is kelleni fog.
if (isset($_GET['p'])<b>)</b> {
Erre vszont magamtól is rájöhettem volna, azt hittem valami bonyolultabb lesz a megoldás.
De sajna 1-2 havonta tudom elővenni a PHP-t, és lassan haladok vele.
- A hozzászóláshoz be kell jelentkezni
akkor mar:
$p = $_GET['p'] ? $_GET['p'] : 'main';
t
- A hozzászóláshoz be kell jelentkezni
Hmm, igen ezt már mutatták nekem itt hup-on. Ez egy összevont if ha jól gondolom.
- A hozzászóláshoz be kell jelentkezni
helyesebben:
$p = isset($_GET['p']) && file_exists("{$_GET['p']}.html") ? $_GET['p'] : 'main';
---------
"Ha igazat mondasz azt végig unják, ha feldíszíted azt jól meg dugják"
szerény blogom -- új címen!
- A hozzászóláshoz be kell jelentkezni
if (isset($_GET['p'])) {
$p = $_GET['p'];
} else {
$p = "main.html";
}
Ez a megoldás, mert p-ben tárolom a kiterjesztését is.
De csondálatosan működik köszönöm!
Annyi bajom van most csak, hogy az address bar-ban látszódnak a linkek nevei ami csúnya
pl.: http://domain.com/index.php?p=toloajtok/ec10.php&path=toloajtok/kepek/e…
Ez elég csúnya a böngészőben, de emlékszem, hogy van erre megoldás, egyszer olvastam.
(A path az semmi, csak a képek elérési útvonalait egyszerűsítem ezze, nem kell kézzel beírni)
- A hozzászóláshoz be kell jelentkezni
$p = isset($_GET['p']) && file_exists($_GET['p']) ? $_GET['p'] : 'main.html';
Két apróság:
- a feltételes értékadás azért jobb, mert tömörebb, áttekinthetőbb a kód tőle, rádásul kevesebbet kell gépelni [mondjuk ez inkább kötözködés]
- érdemes leellenőrizni, hogy létezik-e a fájl, mert a PHP hibaüzenetek tartalmaznak egy elérési utat, amiből olyan információkat nyerhet a támadó, amiket nem kellene tudnia, pl.: megtudja, hogy az oldalad a /mnt/racks/teneved könyvtárba van, akkor simán be tud include-oldtatni egy konfig fájlt a /etc-ből, amennyiben tudja, hogy az adott disztró hol tárolja az általa keresett fájlt (és az admin nem rendesen lőtte be a szervert)
Még biztonságosabb:
$p = isset($_GET['p']) && file_exists($_GET['p']) && in_array($_GET['p'],file('enabled_pages.txt')) ? $_GET['p'] : 'main.html';
Ha új oldalt akarsz hozzáadni, akkor a feltöltés-szerkesztés mellett kell még egy olyan, hogy:
echo "uj_aloldal.html" >> enabled_pages.txt
Ez már nehezebben játszható ki.
---------
"Ha igazat mondasz azt végig unják, ha feldíszíted azt jól meg dugják"
szerény blogom -- új címen!
- A hozzászóláshoz be kell jelentkezni
Szia! Köszi a segítséget.
Sajnos ez a rész
&& in_array($_GET['p'],file('enabled_pages.txt')) ? $_GET['p'] : 'main.html';
már nem teljesen világos.
- A hozzászóláshoz be kell jelentkezni
helyesebben (rájöttem, hogy bakiztam egyet):
in_array($_GET['p']."\n", file('enabled_pages.txt'))
Annyit csinál, hogy megnézi a az enabled_pages.txt-ben, hogy benne van-e a kért fájl neve, ha nincs, akkor nem engedi include-olni. Ez növeli a biztonságot, és így nem enged olyat befűzetni, amit nem akarsz. Pl.: előző verzió, még nincs kész lap stb... vagy mindenféle URL-es trükközéseket is elég jól kivéd. A \n meg azért kell a végére, mert a file() odafűzi a tömb elemei végére az újsor karaktert.
---------
"Ha igazat mondasz azt végig unják, ha feldíszíted azt jól meg dugják"
szerény blogom -- új címen!
- A hozzászóláshoz be kell jelentkezni
De hát a file() tömbbe dobál, soronként, újsor nélkül, nem?
A beleechozásnál kéne újsor. De az inkább valami fopen() fwrite() fclose() szokott lenni.
- A hozzászóláshoz be kell jelentkezni
Akkor egy kis PHP-t tovább ...
van kb 100db kép, amit ki kellene tenni egy oldalra, de a képek neve azonositoszam_nev ilyesmi.
Nem szeretném egyessével beírni. Olyasmire gondoltam, hogy egy ls -l kimenetet a képek könyvtárában elmentenék txt-ben, tehát minden sorban egy kép neve lenne. És PHP-val úgy jeleníteném meg a képeket, hogy
<?php
$thumpath = "kepek/almappa/100_150/";
$path = "kepek/almappa/800_600/";
?>
<a href="<?= $path$name ?>"<img src="<?= $thumpath$name ?>"></a>
és a path után jönnének a képnevek valahogy amit előzőleg kiolvasok a txt-ből, és beteszem pl a name változóba. Hülyeség?
Olvasgattam, és látom, hogy a fopen-el tudok megnyitni file-t, de nemtudom, hogyan tovább.
Azt mondtják, hogy érdemes profik által készített kódot nézegetni, lehet, hogy egy drupál forrást jó lenne nézegetni?!
- A hozzászóláshoz be kell jelentkezni
Kukkants ide: http://www.codewalkers.com/c/a/File-Manipulation-Code/List-files-in-a-d…
ki tudod listázni a könyvtár tartalmát, limitálhatod, vagy betolhatod egy tömbbe hogy sort-tal rendezd. Elvileg thumbnailt is tudsz online generálni de az túl erőforrásigényes, inkább feltöltéskor generáld le ha jót akarsz. :)
- A hozzászóláshoz be kell jelentkezni
köszi, nézelődök
- A hozzászóláshoz be kell jelentkezni
vagycsak siman hasznalod a scandir()-t (tobb 100 fajlnal mar nem a legidealisabb)
mondjuk nem irtad mi a cel, hamar kesz legyen, vagy szep es jo legyen, netan tanulni is szeretnel kozbe :)
mindenesetre ha tanulni is akarsz kozbe valamit, akkor ezt ne hagyd ki.
- A hozzászóláshoz be kell jelentkezni
Ez egy készülő weboldal lesz, ha kell közzé is teszem, már kész a domain, de mindenképpen _tanulni_szeretnék_. Most kezdtem el az egész forráskódot (no nem olyan sok) átírni, hogy HTML 4.01 valid legyen, mert most borzasztó, dehát erről sem tudtam eddig.
- A hozzászóláshoz be kell jelentkezni
Azért az pozitív hogy nem rögtön xhtml 1.1-et akarsz mint az iwiw.hu. :) http://validator.w3.org/
És használj nyugodtan táblákat ahol szükség van rá.
- A hozzászóláshoz be kell jelentkezni
No igen, a táblák. Sokat kiváltottam CSS-el már (táblában tábla, abban tábla, benne tábla amiben tábla). Most a főtábla van meg, az marad, mert nem tudom még átkódolni :)
HTML 4.01 mert ezt könnyebbnek találom, és közelebb ál a tudásomhoz. Majd folyt ...
- A hozzászóláshoz be kell jelentkezni
Nincs vele semmi baj, szerintem az xhtml 1.0 transitional egy optimális dokumentumtípus lehet később.
A táblák kapcsán meg volt már aki táblázatot (értsd, megjelenítendő mezei táblát) akart divekkel megoldani. Hogy minek? Táblafób volt.
- A hozzászóláshoz be kell jelentkezni
Bár ez már OFF, de még leírom amit hallok olvasok. Azt tapasztalom, hogy táblázatokkal már "ciki" oldalszerkezetet készíteni, arra div, de persze van amire táblázat kell biztos. Neke a főszerkezet még table.
De nyissunk erre egy témát, és folytassuk ott, nekem sok kérdésem van, nemtudom ezzel kapcsolatban van e itt a hup-on már téma. Valami OFF kategóriába.
- A hozzászóláshoz be kell jelentkezni
Volt itt valahol egy topic ahol összehoztunk egy egészen jó kis oldalszerkezetet. Függőlegesen átméreteződik, a lábléc az aljához igazodik, ha nem is tölti ki a tartalom a középső részt. A szélesség meg a javallt 760px körül van. Majd megkeresem. Kéne csinálni egy 800-1024 között gumis szélességű oldalt.
- A hozzászóláshoz be kell jelentkezni
Most indulok, haha, ha addigra nem lesz meg, nyitok egy témát erre. (HTML 4.01 + CSS)
- A hozzászóláshoz be kell jelentkezni
Megtaláltam: http://hup.hu/node/46783
- A hozzászóláshoz be kell jelentkezni
Itt nézz szét:
Directories
Filesystem Functions
Glob
- A hozzászóláshoz be kell jelentkezni