- Karácsonyfaként világíthat a Thermaltake új CPU-hűtője
- Az USA vizsgálja a RISC-V kínai terjedésének kockázatát
- Kicsit extrémre sikerült a Hyte belépője a készre szerelt vízhűtések világába
- Egészen nagy teljesítményspektrumon fedné le a mobil piacot az AMD
- Kihívás a középkategóriában: teszten a Radeon RX 7600 XT
- Épített vízhűtés (nem kompakt) topic
- Házimozi haladó szinten
- E-book olvasók
- OLED TV topic
- Vezeték nélküli fülhallgatók
- Intel Core i5 / i7 / i9 "Alder Lake-Raptor Lake/Refresh" (LGA1700)
- Azonnali informatikai kérdések órája
- VR topik (Oculus Rift, stb.)
- Milyen egeret válasszak?
- Egészen nagy teljesítményspektrumon fedné le a mobil piacot az AMD
Hirdetés
-
Konzolokra is megjelenik a Fera: The Sundered Tribe
gp A kooperatív szörnyvadászós játékhoz a minap egy friss trailert kaptunk.
-
Kicsit extrémre sikerült a Hyte belépője a készre szerelt vízhűtések világába
ph A cég megoldása centralizált vezérelhetőséggel, masszív radiátorral és robusztus ventilátorokkal igyekszik vásárlásra csábítani.
-
Súlyos adatvédelmi botrányba kerülhet a ChatGPT az EU-ban
it Egyre nagyobb probléma az AI hallucinálása – most az osztrák adatvédelmi hatóság veheti elő a ChatGPT miatt az OpenAI-t, alapvetően a GDPR megsértése miatt.
Új hozzászólás Aktív témák
-
Sk8erPeter
nagyúr
A shuffle_assoc()-ot leszámítva teljes körű kódnak számít, működőképes (persze ha az eredeti angol2() fv.-t is kiveszed)...
DE az nem tűnt fel, hogy ilyenformán:
shuffle_assoc($Cimke);
a shuffle_assoc rohadtul nem változtat a $Cimke tömbön semmit?
A függvény egy tömbbel tér vissza, az meg így csak elvész az éterben.
Legfeljebb így működik:
$Cimke = shuffle_assoc($Cimke);(#6540) Speeedfire: neked is javaslom a fenti javítást. (már ha nálad a shuffle_assoc() fv. nem referenciát kap paraméterként, ahol a $list tömbön végzel változtatásokat - pl. function shuffle_assoc(&$list) { ..... } )
[ Szerkesztve ]
Sk8erPeter
-
biker
nagyúr
válasz Sk8erPeter #6551 üzenetére
reggel fél hétkor nem tűnt fel. de tényleg nem változik a sorrend
az angol() igen
gyorsan ki is javítottamElektromos autó töltő berendezések | Mesterséges növényvilágítás | Mai ajánlatunk: www.gerisoft.hu | www.e-autotoltokabel.hu | www.agrar-vilagitas.hu |
-
Speeedfire
nagyúr
Hát nem tudom már, hogy honnan vettem, de 2 oldalon is ezt használom és működik.
[link] [link]
Az első linken látványosabb, mert kevesebb címke van.Milyen nevet nem ad vissza?
Nem illesztettem be ezt a funkciót.
Szerintem az elég jó futási idő.
Sk8erPeter: Tényleg nincs ilyen függvényem, de akkor miért működik a keveredés?Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com
-
Sk8erPeter
nagyúr
válasz Speeedfire #6553 üzenetére
Hát ha nem dob warningot vagy fatal errort, akkor lennie kéne ilyen függvényednek, aminek lehet, hogy referenciaként van átadva a tömb.
Sk8erPeter
-
Speeedfire
nagyúr
válasz Sk8erPeter #6554 üzenetére
Vazzz!
És tényleg, a config fájlba benne van a függvény. Ezt nem is néztem, sorry biker.Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com
-
biker
nagyúr
válasz Speeedfire #6555 üzenetére
Latod, megoldottam igy isElektromos autó töltő berendezések | Mesterséges növényvilágítás | Mai ajánlatunk: www.gerisoft.hu | www.e-autotoltokabel.hu | www.agrar-vilagitas.hu |
-
Alukard
senior tag
Egy kérdés.... ürlap tartalmat mennyire bevett szokás a $_SESSION-ban tárolni?
Azt tudom, hogy gyakorlatilag meg lehet csinálni, csak az a kérdés, hogy van -e valami negatívuma?https://blackfyre.ninja
-
Alukard
senior tag
Köszönöm a válaszokat
https://blackfyre.ninja
-
Sk8erPeter
nagyúr
válasz Speeedfire #6559 üzenetére
"Nem szokták"
Kik nem szokták?
Nyilván van, aki átmeneti adatbázis-bejegyzést hoz létre ilyenkor, de én nem pazarlom ilyenekre az adatbázis korlátozott erőforrásait, épp ezért is használom legtöbbször a sessiont ilyen célra (is). Persze csak addig tárolom, ameddig nagyon szükséges - leginkább hiba esetén. A form adatait mindig külön feldolgozó fájlban dolgozom fel, és amennyiben ezt nem AJAX-szal oldom meg (azért úgy a szép, de működjön annál is, akinél ki van kapcsolva a JavaScript), akkor ha nincs hiba, eltárolom az adatokat adatbázisban, ha mégis hiba történt, a form adatait elmentem session-változókba, hogy a felhasználónak ne kelljen újra begépelnie az adatokat (szerintem ez elég fontos, engem is halálra idegesít, ha nem így oldják meg), majd visszairányítom a júzert az eredeti oldalra (ahonnan a formot elküldték), és ott a form megfelelő mezőibe kiíratom a session-változókban tárolt korábbi űrlapadatokat, majd ezután rögtön meg is szüntetem ezek tárolását (a formon már úgyis látszik, majd a felhasználó elküldi újból ugyanezeket az adatokat, ha nagyon akarja).
Érdemes ezeket az adatokat egy többdimenziós megoldással tárolni, hogy könnyű legyen őket megszüntetni is, valahogy így (egyszerű példa):
$_SESSION['form_data'] = array();
$_SESSION['form_data']['user_name'] = $_POST['user_name'];
$_SESSION['form_data']['user_address'] = $_POST['user_address'];
// ....
Ha meg akarod szüntetni az eltárolt formadatokat, elég ennyit csinálni:
unset($_SESSION['form_data']);Sk8erPeter
-
Speeedfire
nagyúr
válasz Sk8erPeter #6562 üzenetére
Mondjuk én nem szoktam.
Eddig még nem volt olyan amihez használnom kellett volna ezt a megoldás.
Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com
-
Sk8erPeter
nagyúr
válasz Speeedfire #6563 üzenetére
Abban az esetben nem is kell, ha
1.) a formok feldolgozását ugyanott végzed, ahol maga a form kiíratása van (tehát nem külön fájlban, így a POST adatokat egyből közvetlenül fel is tudod használni a formmezők kitöltésére - de ez szerintem gány megoldás),
2.) ha átmeneti adatbázis-bejegyzést hozol létre a felhasználó által megadott adatokkal, amit csak akkor hagysz meg, ha a felhasználó véglegesíti az adatokat (korlátozott lehet az adatbázisban elérhető kapcsolatok száma)
3.) vagy akkor, ha egyszerűen nem foglalkozol vele, hogy a felhasználónak ki kell-e töltenie újból az űrlap egyes mezőit, vagy sem
4.) ha bejelentkeztető űrlapról van szó, ahol pl. csak felhasználónév-jelszó párost kell kitölteni, itt nyilván az esetek többségében nem kell megjegyeztetni semmit
5.) biztos van olyan eset, ami most nem jut eszembe.DE érdemes bevetni a session képességeit ilyen esetekre is, igazából mi másra lenne használható, mint adatok átmeneti tárolására, akár egy egész session erejéig, vagy csak rövidebb időtartamra.
Nyilván formadatokat is csak addig tároljunk session-változókban, amíg nagyon szükséges.[ Szerkesztve ]
Sk8erPeter
-
Tele von Zsinór
őstag
válasz Sk8erPeter #6564 üzenetére
Első ponthoz: nem ugyanazon a fileon belül, de ugyanabban a kérésben szoktam kiírni a hibaüzenet, mint amiben elküldte a formot. Így ott vannak a post adatok, ilyenre feleslegesnek tartom sessionbe menteni őket és redirectelni.
-
Sk8erPeter
nagyúr
válasz Tele von Zsinór #6565 üzenetére
Ja, nyilván attól függ, hogy oldod meg. Nálad nem tudom, hogy van konkrétan, azt nem írtad. Van egy formod, az elküldi a post adatokat egy másik fájlnak, ott meg hiba esetén megint ugyanúgy kiíratod a formot, meg az oldal többi részét, vagy hogyan?
Amúgy az szerintem ultraronda megoldás, ami a Wordpress-motort használó weboldalak többségénél szokott lenni adott cikkhez történő hozzászólásnál fellépő hiba esetén, hogy dob neked egy hibaoldalt, egy pici keretben kiírva a hibaüzenetet, az oldal egyéb részei egyáltalán nem látszanak, és csak a böngészőben az eredeti oldalra való visszanavigálást követően tudod megfelelően módosítani a form kitöltését. (Persze egyes böngészőknél ilyenkor a visszanavigálásnál törlődik is az eredeti hsz., fasza.)
Sk8erPeter
-
Tele von Zsinór
őstag
válasz Sk8erPeter #6566 üzenetére
A működés kb. a következő: van egy függvény (a controller), ami első körben példányosítja a formot, és átadja a view-nak. Az kiírja, a form actionja ugyanaz a file és függvény lesz. Másodszorra, mikor post-tal jön a kérés, hozzárendeli a form példányhoz a kapott adatokat, és ellenőrzi őket. Ha invalid, vissza ugyanahhoz a view-hez, csak most már hibaüzenetek is vannak, ha valid, akkor feldolgozza a formot (bejelentkezik a user, menti a komment, stb.), és redirectel.
MVC-vel dolgozom, valamint látszik a post-redirect-get pattern is.
-
Sk8erPeter
nagyúr
válasz Tele von Zsinór #6567 üzenetére
A felvázolt megoldásban nekem egyedül az nem szimpi (persze ízlés kérdése), hogy ugyanabban a fájlban történik a validálás, mint amiben a form kiíratása - én pont azért tértem át inkább arra, hogy még a validálás során is redirectelgetek (még ha nem is lenne feltétlenül muszáj/praktikus sessionben tárolni az adatokat, bár nem hiszem, hogy ezen múlnának a teljesítménybeli különbségek), mert nagyon zavar, amikor egy form elküldésekor F5 (frissítés) lenyomása hatására a böngésző visszakérdez (Opera általában nem teszi), hogy elküldje-e még egyszer a $_POST-adatokat. Engem ez legalábbis felhasználóként is zavar: ha bármi miatt úgy döntök, hogy frissíteni szeretnék, és nem probléma, ha elvesztem a begépelt adataimat, akkor hadd tegyem ezt visszakérdezés nélkül.
(Bár hozzáteszem, pl. Gmailnél el nem mentett levél elküldésekor, vagy szerver felé történő függőben lévő kérés megszakítási kísérlete esetén, vagy épp a stackoverflow oldalán történő hsz.-íráskor jól jön, hogy figyelmeztet, hogy még nem mentettem/küldtem el, amit akartam. DE ez szándékos és indokolt fejlesztőoldali dolog, nem a böngésző egyéni döntése, hogy most akkor jól figyelmeztesse a felhasználót, szerintem egészen más a kettő "hangulata". )Sok oldalon a keresőmezőkbe beírtakat is azonos oldalon dolgozzák fel, olyankor is sűrűn előfordul az F5-nyomkodásos probléma, az még zavaróbb, az ember adott esetben többször keres, mint amennyiszer mondjuk hozzászól adott oldalhoz, cikkhez, ilyenkor F5 nyomkodására mindig megakasztja a böngészést a figyelmeztető ablak a post-adatok újbólli elküldéséről.
Mostanában nagyon sokszor megpróbálom inkább AJAX-szal megoldani a dolgokat, mert az úgy szebb felhasználói szempontból, mint az egészoldalas frissülés - ráadásul akkor az F5-ös és redirectelős probléma egy része is megoldódhat, AJAX-os feldolgozásnál lehet egyből kiíratni is (máskor is lehet, de mint fentebb mondtam a Wordpress-es példát, nem túl szép a külön hibaoldal, majd visszanavigálási kényszer).
[ Szerkesztve ]
Sk8erPeter
-
Tele von Zsinór
őstag
válasz Sk8erPeter #6568 üzenetére
Ugyanabban a kérésben, de nem ugyanabban a fileban a form maga egy külön osztály, pontosan tudja magáról, milyen mezői vannak, azokat hogy kell validálni, szóval én csak átadom neki a postolt adatokat és megkérdem, valid-e érvénytelen adatoknál meg feleslegesnek tartom a redirectelést, de ez ízlés dolga.
A post-redirect-get pattern eredeti célja az alkalmazás állapotát megváltoztató kérések (vásárlás, kommentelés például) duplázásának elkerülése volt. A keresés nem változtat az állapoton, én get-tel szoktam megoldani (általában úgy néz ki, hogy example.com/keres/mirekeresett) - így máris levan a gond az f5-ös újraküldésrő.
-
Sk8erPeter
nagyúr
válasz Tele von Zsinór #6569 üzenetére
Igen, a keresés get-tel okés, ott nem para az esetleges frissítés, de még mindig vannak oldalak, ahol post-olják a keresőmezőben megadottakat (most hirtelen az ncore jut eszembe, ahol kifejezetten zavar). Meg ugye a get-tel történő kereséskor kapott cím lementhető, könyvjelzőzhető, átküldhető másnak, szóval ezer szempontból praktikusabb.
Az első felére reagálva: na, akkor úgy tűnik, félreértettem, sorry. "a form actionja ugyanaz a file és függvény lesz" - innen elsőre úgy értelmeztem, hogy ugyanabba a fájlba irányítod vissza az adatokat, tehát ugyanott dolgozod fel.
"Ha invalid, vissza ugyanahhoz a view-hez, csak most már hibaüzenetek is vannak"
Ez hogy néz ki nálad a gyakorlatban?
Pl. van a foo.php fájl, amiben megtörténik a kiíratás (ezt a címet kérte le a júzer), és van egy formod:
<form action="bar.php" method="post" ..........>..........</form>
Ekkor az action szerinti bar.php fájlba irányítja át a formot. Itt csekkolod, hogy valid-e, ha nem, egyből kiíratod a formot? Mert akkor megint felmerül az F5-ös probléma. Vagy pedig van a foo.php fájl, és az action-ben is ugyanez a fájl található, és itt nézed meg a validitását? Igazából itt is felmerül az F5-ös para. A visszairányítós játéknál nyilván nincs ilyen probléma, de ott meg már elvész a post-olt adat (amennyiben nem mented sessionbe).Most hirtelen nem értem, hogyan éred el, hogy validálod az adatokat, fel tudod használni azonos kéréssel a $_POST tömb adatait (tehát a felhasználónak nem kell begépelnie újból azokat), kiíratod, nem mented el sessionbe a dolgokat, és még az F5-ös frissítgetős para sem merül fel?
[ Szerkesztve ]
Sk8erPeter
-
Tele von Zsinór
őstag
válasz Sk8erPeter #6570 üzenetére
Van egy file, aminek postol a form (ez a controller), és van egy template, amit meg majd a user lát (ez a view). Ha a kérés get, akkor rögtön megy a view-hez a futtatás, semmi extra nem történik. Ha a kérés post, akkor is ugyanez a file kapja, de formfeldolgozás is történik. Ha invalid, vissza a viewhez (és ha ekkor F5-öl, megjelenik az általad említett újraküldős kérés), ha valid, akkor pedig feldolgozás és redirect.
A form minden mezője úgy van elnevezve, hogy formneve[mezőneve], a formnak átpasszolom a $_POST["formneve"] tömböt, és ezeket validálja.
-
Sk8erPeter
nagyúr
válasz Tele von Zsinór #6571 üzenetére
Sejtettem, hogy ilyesmi, meg értem én az MVC-szemléletet nagyjából, csak azt hittem, hogy nálad mégsem fordul elő az említett F5-ös frissítgetős probléma, és az nem állt össze, hogy hogyan lehet, ha nem redirectelgetsz minden esetben. (de ezek szerint a probléma fennáll)
Szerintem az én koncepcióm sem mond amúgy ellent az MVC-szemléletnek.Mostanság igyekszem én is nagyjából errefelé tendálni, meg teljesen OOP-szemléletre átállni, ami szerintem eléggé megkönnyíti a munkát az MVC-nél (én legalábbis nehezen tudom igazán elválasztani tőle), bár még bőven van mit tanulnom.
[ Szerkesztve ]
Sk8erPeter
-
Tele von Zsinór
őstag
válasz Sk8erPeter #6572 üzenetére
Valóban, a jelenség fennáll, problémának azért mégsem nevezném. Azaz inkább a környezettől függ, hogy az-e.
El lehet választani az OOP-ot és az MVC-t, lehet jól működő MVC oldalt írni procedurális kóddal is, de objektumorientáltan egyszerűbb, és nagyban könnyíti a későbbi karbantartást, bővítést is.
Ajánlom pár komolyabb keretrendszerrel való ismerkedést - rengeteget tanultam például a symfony kódját böngészve, de nézegettem a cakephp és a kohana kódját is.
-
Sk8erPeter
nagyúr
válasz Tele von Zsinór #6573 üzenetére
Az lesz. Csak egy kis idő kellene hozzá. Mondjuk egyelőre élvezem azt, hogy mindent megírok magamtól, aztán majd úgyis jól rájövök a komolyabb keretrendszerek használatakor, hogy nem biztos, hogy sok értelme van mindent ab ovo megírni, ha már más úgyis megtette helyettem, mert akkor nekem csak a megfelelő függvényeket kell jól hívogatnom, és a megfelelő módosításokat elvégezni, aztán gyorsabban kész vagyok.
Igen, én sem úgy értettem, hogy MVC-t csak OOP-szemlélettel lehet írni (ezért is csak azt írtam, hogy "eléggé megkönnyíti a munkát az MVC-nél"), de szerintem procedurálisan megírva azért sokkal önszívatósabb, nehezebb átlátni.
Mondjuk nem véletlenül találták ki az OOP-t, ha már hasonlít az emberi gondolkodás működéséhez, használjuk is ki.Sk8erPeter
-
klinnsy
csendes tag
Php kód értetlen módon nem jó!
Sziasztok a problémám a következő lapon (is) megtalálható (régebben jó volt most hirtelen nem műxik):
http://nicelife.hu/tanuljunk/szemtipus/05.php
Az a gondom, hogy régebben működött ez a script, ahol szavazni lehet, most pedig a szavaz gomb után ugyanúgy csinálja mintha jó lenne, de a szavazás értékét nem adja hozzá a txt file-hoz.
Az az érdekes (és most jön a poén), hogy másnál pedig működik, mert kipróbálta ismerősöm, illetve látom, hogy töb szavazat is érkezik egy nap.Itt a szavaz.php forráskódja, a többi adatot (kérdés, válaszok, ip, szavazatok 1-1 txt-ben tárolja melyek igen 777 attr-al vannak ellátva).
Már néztem több gépről, nekem nem működött, mi lehet a baj?
EZ TELJESEN LOGIKÁTLAN HIBA! AKI MEGOLDJA AZ ULTRAÁSZ! Köszönöm!
<?php
$ip = getenv(REMOTE_ADDR);
$RESULT_FILE_NAME = "../../scripts/szavaz/hirek/halottidezes/szavazatok.txt";
$que = "../../scripts/szavaz/hirek/halottidezes/kerdes.txt";
$ans = "../../scripts/szavaz/hirek/halottidezes/valaszok.txt";
$fn = fopen ($que, "r");
$puff = fread ($fn, filesize($que));
fclose ($fn);
$QUESTION = "$puff";
$lis= 0;
$plsr = file("../../scripts/szavaz/hirek/halottidezes/valaszok.txt");
for($x=0;$x<sizeof($plsr);$x++) {
$temp = explode("|",$plsr[$x]);
$list[$lis] = $temp[0];
$lis++;
}
$ANSWER = $list;
extract($HTTP_GET_VARS);
extract($HTTP_POST_VARS);
$fname="ip_log.dat";
if (strlen($answer)<=0&&!$vresult){
echo "<FORM METHOD=\"POST\">\n";echo "<TABLE align=center border=0 borderColor=#D9F2CC cellPadding=2 class=normaltext style=\" BORDER-COLLAPSE: collapse; \">\n";
echo "<TR><TH><font color=ffffff size=2>$QUESTION</TH></TR>\n";
while (list($key, $val) = each($ANSWER)) {
echo "<TR><TD align=\"left\"><INPUT TYPE=\"radio\" NAME=\"answer\" VALUE=\"$key\"><font color=8d9aa6 size=2> $val</TD></TR>\n";}
echo "<TR><TD align=\"center\"><INPUT TYPE=\"image\" src='http://www.nicelife.hu/scripts/szavaz/szavaz.png' NAME=\"vote\" VALUE=\" Szavazok \"></TD></TR>\n";
echo "<TR><TD align=\"center\"></form><form method=post><input type=hidden name=vresult value=1><INPUT TYPE=\"image\" src='http://www.nicelife.hu/scripts/szavaz/eredmenyek.png' NAME=\"result\" VALUE=\"Eredmények\">\n";
echo "</TABLE></form>";
}if (strlen($answer)>0) {
$plsr = file("../../scripts/szavaz/hirek/halottidezes/ip.txt");
for($x=0;$x<sizeof($plsr);$x++) {
$temp = explode("|",$plsr[$x]);
}
if($ip==$temp[0] && strlen($answer)>0 ){
echo "<font color=red size=2><div align=center>Erre a kérdésre egyszer már válaszoltál!</div></font>";
$file_array = file($RESULT_FILE_NAME);
if ($answer < count($ANSWER) && $vote) {
while (list($key, $val) = each($file_array)) {
$total += $val;
}echo "<TABLE align=center border=0 borderColor=#D9F2CC cellPadding=2 class=normaltext style=\" BORDER-COLLAPSE: collapse; \">\n";
echo "<tr><th><font color=ffffff size=2><div align=center>Válaszok</th><th><font color=ffffff size=2><div align=center>Szavazatok aránya</th><th><font color=ffffff size=2><div align=center>Szavazatok száma</th></tr>";while (list($key, $val) = each($ANSWER)){
$percent = $file_array[$key] * 100 / $total;
$percent_int = floor($percent);
$percent_float = number_format($percent, 1);
$tp += $percent_float;
if($percent_int>=75){
$color="#45abe5";
}
elseif($percent_int>=50){
$color="#388dbe";
}
elseif($percent_int>=25){
$color="#2d729a";
}
elseif($percent_int<25){
$color="#215370";
}echo "<tr><td><font color=8d9aa6 size=2> $ANSWER[$key] </td><td><table cellpadding=1 cellspacing=0 width=100% border=0 bgcolor=black><tr><td><table cellpadding=0 cellspacing=0 border=0 width=100%>
<tr>
<td bgcolor=$color width=$percent_int% height=10 style=border:0 >
<spacer type=block width=2 height=8>
</td>
<td bgcolor=white width=91% height=10 style=border:0>
<font color=8d9aa6 size=2>
<spacer type=block width=2 height=8>
</td>
</tr>
</table>
</td>
</tr>
</table><font color=67727c size=2>$percent_float%</td><td><font color=8d9aa6 size=2><center>$file_array[$key]</td></tr>";
}$tv=$total;
echo "<td></td><td></td><td><font color=67727c size=2><div align=left><center>Összesen: $tv</font></font></font></td></TABLE>";
}
}elseif (strlen($answer)>0 && $ip!=$temp[0]){
$file_array = file($RESULT_FILE_NAME);
if ($answer < count($ANSWER) && $vote) {
$old_answer = $file_array[$answer];
$old_answer = preg_replace("/\n\r*/", "", $old_answer);
$file_array[$answer] = ($old_answer + 1)."\n";
$fname="../../scripts/szavaz/hirek/halottidezes/ip.txt";
$fq = fopen($fname, "a++");
fwrite ($fq, $ip);
fwrite ($fq, "|");
fwrite ($fq, "\n");
fclose ($fq);
$file = join('', $file_array);
$fp = fopen("$RESULT_FILE_NAME", "w");
flock($fp, 1);
fputs($fp, $file);
flock($fp, 3);
fclose($fp);
echo "<div align=center><font color=67727c size=2>Szavazat elfogadva... </div>";
}
while (list($key, $val) = each($file_array)) {
$total += $val;
}echo "<TABLE align=center border=0 borderColor=#D9F2CC cellPadding=2 class=normaltext style=\" BORDER-COLLAPSE: collapse; \">\n";
echo "<tr><th><font color=ffffff size=2>Válasz lehetőségek</th><th><font color=ffffff size=2>Válaszok aránya</th><th><font color=ffffff size=2><div align=center>Szavazatok száma</th></tr>";while (list($key, $val) = each($ANSWER)){
$percent = $file_array[$key] * 100 / $total;
$percent_int = floor($percent);
$percent_float = number_format($percent, 1);
$tp += $percent_float;
if($percent_int>=75){
$color="#45abe5";
}
elseif($percent_int>=50){
$color="#388dbe";
}
elseif($percent_int>=25){
$color="#2d729a";
}
elseif($percent_int<25){
$color="#215370";
}echo "<tr><td><font color=8d9aa6 size=2> $ANSWER[$key] </td><td><table cellpadding=1 cellspacing=0 width=100% border=0 bgcolor=black><tr><td><table cellpadding=0 cellspacing=0 border=0 width=100%>
<tr>
<td bgcolor=$color width=$percent_int% height=10 style=border:0>
<spacer type=block width=2 height=8>
</td>
<td bgcolor=white width=91% height=10 style=border:0>
<spacer type=block width=2 height=8>
</td>
</tr>
</table>
</td>
</tr>
</table><font color=67727c size=2>$percent_float%</td><td><font color=8d9aa6 size=2><center>$file_array[$key]</td></tr>";}
$tv=$total;
echo "<td></td><td></td><td><font color=67727c size=2><center>Összesen: $tv</font></font></font></td></TABLE>";
}
else {
echo "Kérlek válassz előbb";
}
}
if (!empty ($vresult)){
$file_array = file($RESULT_FILE_NAME);
while (list($key, $val) = each($file_array)) {
$total += $val;
}echo "<TABLE align=center border=0 borderColor=#D9F2CC cellPadding=2 class=normaltext style=\" BORDER-COLLAPSE: collapse; \">\n";
echo "<tr><th><font color=ffffff size=2>Válasz lehetőségek</th><th><font color=ffffff size=2>Válaszok aránya</th><th><font color=ffffff size=2>Szavazatok száma</th></tr>";while (list($key, $val) = each($ANSWER)){
$percent = $file_array[$key] * 100 / $total;
$percent_int = floor($percent);
$percent_float = number_format($percent, 1);
$tp += $percent_float;
if($percent_int>=75){
$color="#45abe5";
}
elseif($percent_int>=50){
$color="#388dbe";
}
elseif($percent_int>=25){
$color="#2d729a";
}
elseif($percent_int<25){
$color="#215370";
}echo "<tr><td><font color=8d9aa6 size=2> $ANSWER[$key] </td><td><table cellpadding=1 cellspacing=0 width=100% border=0 bgcolor=black><tr><td><table cellpadding=0 cellspacing=0 border=0 width=100%>
<tr>
<td bgcolor=$color width=$percent_int% height=10 style=border:0 >
<spacer type=block width=2 height=8>
</td>
<td bgcolor=white width=91% height=10 style=border:0 >
<spacer type=block width=2 height=8>
</td>
</tr>
</table>
</td>
</tr>
</table><font color=67727c size=2>$percent_float%</td><td><font color=8d9aa6 size=2><center>$file_array[$key]</td></tr>";}
$tv=$total;
echo "<td></td><td></td><td><font color=67727c size=2><center>Összes szavazat: $tv</td></TABLE>";
}?>
h -
klinnsy
csendes tag
Viszonylag fontos lenne, elnézést ha nem jó helyre írtam.. .
[ Szerkesztve ]
-
Sk8erPeter
nagyúr
válasz klinnsy #6575 üzenetére
Jó, hát akkor használd a Programkód gombot (többek közt itt is leírtam, hogyan kell) a kódod kijelölése után, mert ilyen formázatlan, indentálatlan kódot kétlem, hogy bárki át fog nyálazni itt a topicban (hacsak nem rakja be mondjuk NetBeans-be vagy dobja be PHPBeautifierbe, stb, és autoformáz), én legalábbis biztosan nem. De persze előfordulhat, hogy valaki mégis veszi a fáradságot, de előbb inkább te tedd meg ugyanezt a kód megfelelő formázására.
Meg nem ártana, ha leírnád, te milyen körülmények közt próbáltad, mert a "Már néztem több gépről, nekem nem működött, mi lehet a baj?" mondatrészből számomra legalábbis nem derül ki. (Pl. egyáltalán működő webszerverrel próbáltad-e, te mit tapasztaltál, nálad mi történt, egyáltalán lefutott-e a PHP-kód, és így tovább...)Szerk.: csak belenézve a kódodba, számomra elég durván fájó kódrészletek vannak, pl. csak ez szúrt szemet:
echo "<tr><th><font color=ffffff size=2><div align=center>Válaszok</th><th><font color=ffffff size=2><div align=center>Szavazatok aránya</th><th><font color=ffffff size=2><div align=center>Szavazatok száma</th></tr>";
Eleve a <font> tag használata nagyon nem ajánlott ma már (CSS), na meg az attribútumok esetén eléggé ajánlott az idézőjelek használata, pl. align=center helyett align="center", de még jobb, inkább ezt az align attribútumot ne is használd.[ Szerkesztve ]
Sk8erPeter
-
Tele von Zsinór
őstag
válasz klinnsy #6575 üzenetére
Első ránézésre mondom, hogy ez régi és rosszul megírt kód. A $HTTP_{GET,POST}_VARS változók még a nagyon régi időkben működtek, kompatibilitási okokból 5.2-ben még lehetett engedélyezni a létrehozásuk, 5.3-ban nem tudom, léteznek-e egyáltalán. Ezek extractolása csak súlyosbítja a dolgot. A file írás-olvasás miatt meg csúnya deadlockba futhat a kód, vagy az egyik process felülírhatja a másik változtatásait.
Ahogy fentebb a kollega úr mondja, az a minimum, hogy formázott kódot postolsz ide, de ekkorát már inkább külső oldalra (mondjuk pastebin.com) és linkeld - ott még syntax highlight is van.
Gyorssegítségként a hosszú változók engedélyezése esetleg megoldja a gondod, de jobban jársz, ha újraírod.
-
Sk8erPeter
nagyúr
válasz klinnsy #6575 üzenetére
Példa a kód utólagos formázására:
http://beta.phpformatter.com/
>> Format >> Copy to Clipboard
http://pastebin.com
>> Syntax Highlighting: PHP
>> Submit
>> Eredmény: [link]Mondjuk ez nem változtat a tényen, hogy ocsmány a kód.
A lényeget Tele von Zsinór kolléga leírta.Sk8erPeter
-
Alukard
senior tag
Újabb kérdés... keresgéltem, de nem igazán találtam rá megoldást...
Van egy SQL táblám, abban van egy DATETIME oszlop amibe eredeliteg egy date('YmdHis') függvénnyel kerül feltöltésre...
A kérdés az, hogy ebből hogy szerezhetem vissza külön az évet/hónapot/napot/...https://blackfyre.ninja
-
cucka
addikt
válasz Alukard #6580 üzenetére
Például így:
select date_format(datum_mezo_neve, "%m") from tabla_neve;A fenti lekérdezés a hónapot fogja kiszedni a dátumból. A date_format dokumentációjában megtalálod az összes lehetséges értéket, amit a format string-be írhatsz. (A format string aza "%m" jelen esetben)
[ Szerkesztve ]
-
Alukard
senior tag
-
cucka
addikt
válasz Alukard #6582 üzenetére
Valahogy így:
select *, date(annDate) as ujmezoneve from ...Itt a date() függvény van, ami visszaadja a dátumot szabványos formátumban (Y-m-d). Ha valamilyen egyéni formátumban szeretnéd, akkor date() helyett használd a korábban mutatott date_format() függvényt.
(Egyébként a tábláidat miért nevezgeted át a, b és c-nek? Sok értelme nincs, azon túl, hogy átláthatalanabb lesz tőle a lekérdezésed.)[ Szerkesztve ]
-
Alukard
senior tag
-
Sk8erPeter
nagyúr
válasz Alukard #6585 üzenetére
Ha már újratervezés, érdemes lehet megfontolni, hogy TIMESTAMP formában tárold az időpontot, az elég jól átlátható, könnyen kibányászható belőle az időpont (év-hónap-nap óra:perc:másodperc), meg beállítható úgy, hogy automatikusan frissüljön az aktuális időpontnak megfelelően, MySQL-nél:
CREATE TABLE `teszt_tabla` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`valami` VARCHAR( 256 ) NOT NULL DEFAULT 'blabla',
`timestamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_hungarian_ci;Vagy ha UPDATE-nél a `timestamp` = NOW() kódrészletet rakod bele a query-be (de mivel a fenti mutatott táblában a default a jelenlegi idő, ki is hagyható teljesen a kódból a timestamp beállítása).
Így talán egyszerűbb és átláthatóbb lehet a kódod, és ha nem PHP-ből kéred le az időt, hanem MySQL-ből, az nem valószínű, hogy túl sokáig foglalná az adatbázis esetleg korlátozott erőforrásait.Én mostanában legalábbis már így csinálom, gondolom mindkét gyakorlatra lehetne érveket felhozni. De a fentivel legalább semmiképp nem ronthatod el az időformátumot, meg nem kell babrálni annak a mezőnek a beállításával.
[ Szerkesztve ]
Sk8erPeter
-
klinnsy
csendes tag
válasz Sk8erPeter #6579 üzenetére
MEGOLDÁS:
if ($answer < count($ANSWER) && $vote) {
csere ERRE:
// if ($answer < count($ANSWER) && $vote) {
if ($answer < count($ANSWER) && ($vote || $vote_x)) { -
RedSign
tag
válasz Sk8erPeter #6586 üzenetére
Szerintem is a TS formátum sokkal hasznosabb és kezelhetőbb... ...lehet, hogy PHP-ben pár karakterrel hosszabb a kód, de megéri.
http://www.redsign.hu
-
Sk8erPeter
nagyúr
válasz RedSign #6588 üzenetére
"lehet, hogy PHP-ben pár karakterrel hosszabb a kód"
Már miért lenne hosszabb?
Pont azt mondtam, hogy így nyugodtan kihagyható az UPDATE esetén a kódból, hogy foglalkozz egyáltalán a dátum beállításával, vagyis PHP-oldalról nem kell lekérdezni az aktuális dátumot (pl. a date() függvény használatával), és ezt átadni az SQL-utasításnak - valamint SQL-ben sem kell mindig explicite odaírni a ´timestamp´=NOW() (ha ´timestamp´-nek nevezted el a mezőt) kódrészletet.
Magyarul így pont, hogy rövidül a kód (PHP-ben, SQL-ben sem foglalkozol a dátumbeállítgatással), ráadásul nem is felejted el beállítani a módosulást az időpontban, ha a default érték mindig az aktuális időpont.Sk8erPeter
-
RedSign
tag
válasz Sk8erPeter #6589 üzenetére
Igen teljesen igazad van, ezekkel a megoldásokkal valóban rövidül, amire én gondoltam, hogy a timestamp értékét kiolvasásnál és megjelenítésnél azonban vissza kell alakítani... (vagy van erre valami más megoldás?)
[ Szerkesztve ]
http://www.redsign.hu
-
Sk8erPeter
nagyúr
válasz RedSign #6590 üzenetére
Pont az imént volt szó róla. >> [link]
kiegészítem, van még pl. a TIME() függvény is MySQL-ben, ami a konkrét időt szedi ki a time-ból vagy datetime-ból, a linken látható formában.
De itt találsz még rengeteg átalakító függvényt.
Érdemes már MySQL-ben átalakítva lekérdezni az eredményt, így annál kevesebbet kell majd átalakítgatni PHP-ból (persze úgy is lehet, de minek, ha megkaphatod nagyon gyorsan MySQL-ből is az eredményt formázva).Sk8erPeter
-
RedSign
tag
-
Alukard
senior tag
Lenne megint egy csúnya kérdésem...
Létre kéne hoznom, egy relációs adatbázist... persze ebben nincs semmi extra, a fűszer csak most jön...
3 dolgot kell összehoznom, egy X azonosítót több Y azonosítóval és több Z azonosítóval.
Csak azt nem tudom, hogy hogyan csináljam...
Mert, hogy egy X mellé annyi Y, Z oszlopot hozzak létre amennyi optimálisan elég lenne és nézzem, hogy épp mi a helyzet vele és hol jár annyira nem megoldható...
Láttam olyan megoldást ami egy írásjel mentén szétdobja az értékeket, ez még használható is lenne, ezzel kapcsolatban csak az a kérdésem lenne, hogy hogy lehetne megoldani?Olvastassam be a táblát, nézzem meg, hogy az adott sor adott oszlopának mi a tartalma és irassam hozzá? Vagy esetleg van egyszerűbb megoldás is?
https://blackfyre.ninja
-
Alukard
senior tag
válasz Tele von Zsinór #6594 üzenetére
Köszi
Ez a változat eszembe sem jutott
Így a meglévő 3 táblámat, helyenként +1 oszloppal hasznosítani is tudom
[ Szerkesztve ]
https://blackfyre.ninja
-
Speeedfire
nagyúr
válasz Sk8erPeter #6564 üzenetére
Mindig tanítasz engem mester.
Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com
-
biker
nagyúr
mysql-ben hogy tudok cellához hozzáadni extra szöveget?
bizonyos elemekhez leíráshoz extra szöveget adnék hozzáUPDATE `webshop_termekek_backup` SET termek_nev=termek_nev.'uj extra text' WHERE termek_ID='66664'
valahogy így, de összefűzés pontra nem ok, +-ra összead &-et nem ismeri...
Elektromos autó töltő berendezések | Mesterséges növényvilágítás | Mai ajánlatunk: www.gerisoft.hu | www.e-autotoltokabel.hu | www.agrar-vilagitas.hu |
-
biker
nagyúr
válasz Tele von Zsinór #6598 üzenetére
gondolkodtam rajta, de arra jutottam, a concat csak meglévő, lekérdezett mezőkkel dolgozik és nem is foglalkoztam vele tovább.
Elektromos autó töltő berendezések | Mesterséges növényvilágítás | Mai ajánlatunk: www.gerisoft.hu | www.e-autotoltokabel.hu | www.agrar-vilagitas.hu |