- Samsung Galaxy S22 és S22+ - a kis vagány meg a bátyja
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Megérkezett a Poco M6 Pro 4G
- Motorola Edge 50 Neo - az egyensúly gyengesége
- Bluetooth-headsetekről általában
- MediaTek lapka köré épülne a Galaxy S25 FE?
- iPhone topik
- Apple iPhone 16 Pro - rutinvizsga
- Motorola Edge 40 - jó bőr
- Fotók, videók mobillal
Új hozzászólás Aktív témák
-
meone
tag
Valahogy nem áll össze nekem a dolog.
Mondjuk régen foglalkoztam már PHP programozással.
Ezzel a minta kóddal dolgozom most fel az adatbázis.$result = pg_query($query);
$i = 0;
echo '<html><body><table border=\"0\"><tr>';
while ($i < pg_num_fields($result))
{
$fieldName = pg_field_name($result, $i);
echo '<td>' . $fieldName . '</td>';
$i = $i + 1;
}
echo '</tr>';
$i = 0;
while ($row = pg_fetch_row($result))
{
echo '<tr>';
$count = count($row);
$y = 0;
while ($y < $count)
{
$c_row = current($row);
echo '<td>' . $c_row . '</td>';
next($row);
$y = $y + 1;
}
echo '</tr>';
$i = $i + 1;
}
pg_free_result($result);
echo '</table></body></html>';
// Closing connection
pg_close($dbconn);Azt értem, hogy hogy jön létre a fejléc és hogy írja ki.
Azt is, hogy hogyan írja ki a sorokat.
De gondolom valahogy máshogy kellene meg oldanom, hogy mondjuk az egyik cella értéke egy JSON tömböt tartalmaz a másik nem(egy egyszerű dátum vagy egy decimal érték).
Azt is értem, hogy mondjuk az fc_count értéke ha 2 vagy 3 akkor egy másik cellának az értékét máshogy kell manipulálni.
De a kódban ezt hogy tudom meg valósítani, erre tudna valaki egy kis egyszerű kód részletet mutatni, ami alapján én tovább manipulálom a kódomat?Segítséget előre is köszönöm.
-
Sk8erPeter
nagyúr
Igazából a feladat egyszerű, mint a lepkefing, pár perc alatt megoldható.
Végigmész az adott könyvtár fájljain (az alapján, amit írtál, feltételezem, hogy egy helyre vannak ömlesztve, nem kell rekurzíve bejárni a könyvtárakat), reguláris kifejezéssel ellenőrzöd, hogy illeszkedik-e a fájlnév az általad megadott mintára, ha igen, akkor space mentén "szétrobbantod" a stringet, majd ebből kiszeded. Legalábbis ez egy nagyon gyorsan bepötyöghető megoldás. Szépségével nem foglalkoztam a kódnak, ez működik:$filename_pattern = '/^[a-z]+ \d+ \S+\.asd\.txt$/';
$dir = '.';
$filenames = scandir($dir);
foreach($filenames as $filename) {
if (!is_dir("$dir/$filename")) {
if(preg_match($filename_pattern, $filename)) {
$filename_pieces_by_space = explode(" ", $filename);
$measurement_location = $filename_pieces_by_space[0];
$measurement_id = $filename_pieces_by_space[1];
echo $measurement_id, ': ', $measurement_location . PHP_EOL;
}
}
}A reguláris kifejezés jelentése: a string eleje és vége között a következők vannak: bármilyen a és z közötti karakter egynél többször, szóköz, bármilyen szám egynél többször, szóköz, bármilyen nem whitespace karakter egynél többször, majd pont, "asd", pont, txt.
Itt az explode eredményeként a harmadik elem a tömbben ilyen lesz, mint a "90n00004.asd.txt", ha ebből további infó kell, akkor nyilván pontok mentén kell szétrobbantani.(#17485) biker:
Hát ennyi infóból ember legyen a talpán, aki megmondja, mi a baj.
Azért remélem, azóta nem vágtál eret. -
Sk8erPeter
nagyúr
Ide felraktam neked egy példát, ami szerintem már elég felhasználóbarát, és amit akár egy az egyben lemásolhatsz, vagy átalakíthatsz igényeid szerint:
jQuery UI Autocomplete - magyar irányítószámok:
http://jsfiddle.net/Sk8erPeter/YCE4Z/embedded/result/Kód:
http://jsfiddle.net/Sk8erPeter/YCE4Z/(HTML-, CSS- és JS-kód szétbontva: http://jsfiddle.net/Sk8erPeter/YCE4Z/3/)
Tehát ilyen formában kell ehhez legenerálni a JSON-kimenetet:
[
{ label: '8128 (Aba)', value: 8128 },
{ label: '8127 (Aba)', value: 8127 },
{ label: '5241 (Abádszalók)', value: 5241 },
..............
];A source-hoz pedig megadhatod a feldolgozó fájlodat is, a jelenlegi változó helyett.
-
Sk8erPeter
nagyúr
Hű, már nagyon kezded összekutyulni, most már az index.php-be is beletetted ezt, aminek a JSON-generáló fájlban kéne lennie?
Mé', minek?
Korábban ezt írtad: "Ha magát a fájlt linkelem be direktbe nem feldolgozva a PHP által akkor azt se olvassa be." Először azt oldd meg, hogy saját tartalmat mindenféle generálás nélkül egyszerűen kiíratsz, a megfelelő formátumban.
Kezdd azzal, hogy simán a cucc.php fájlodba másold bele ennek a fájlnak a tartalmát (persze először kommentezd ki átmenetileg a saját megírt kódodat), és próbáld ki, úgy működik-e. Ha nem, akkor már eleve itt van valami gáz! Először ezt szűrd ki. Lehet, hogy elérési útvonal, vagy bármi más, de mindenképp figyeld a böngészőben a developer tool konzolját (pl. Chrome-ban F12, FF-ban ugyanez, ha telepítve van a Firebug, esetleg Ctrl+Shift+I Operában Dragonfly-hoz), hogy kiír-e valami hibaüzenetet! (pl. 404, vagy bármi más hiba, JS-exception, stb.)Még annyit esetleg kipróbálhatnál (bár kétlem, hogy ez önmagában megoldja, de ki tudja manapság
), hogy az adatgeneráló PHP-fájlod (nálad cucc.php) elején kiküldesz egy JSON-headert:
header('Content-type: application/json');Ja, még egy, hogy ugye nem tartalmaz BOM-ot az UTF-8-fájlod (ha UTF-8-kódolású egyáltalán)? (Notepad++-ban ezt meg tudod nézni.)
-
Sk8erPeter
nagyúr
"a fájlom nekem is úgy épül fel majdnem teljesen mint a belinkelt"
Hát ne MAJDNEM teljesen úgy épüljön fel.Egyezzen meg szintaktikájában. Mibe telne kiegészíteni azzal,ami még hiányzik? (pl. hiányzó zárójel, lezárás)
Simán lehet, hogy valami van még, ami nem tűnik fel. Nem tudnál jsfiddle-re vagy máshova felrakni egy példakódot, azzal a konkrét legenerált tartalommal, ami a tiéd?
Mondjuk az oldalon, amit linkeltél, szerepelt egy jsFiddle-link: [link].(#7782) biker: hmm, hát ez tanulságos. És akkor hogy oldod meg ilyen esetekre a kérdést?
-
Sk8erPeter
nagyúr
Mondjuk annyi különbség tűnt fel, hogy a linkelt JSON-fájlban úgy van meg a tartalom, hogy ezek zárójelek közé vannak ékelve (meg kérdőjel az elején):
?( // itt kezdődik...
[ // ez már a tiéd
[1314347520000, 30.8],
[1314348120000, 30.1],
......................
]
);Nem tudom, ez okoz-e igazán releváns különbséget, de nem tartom elképzelhetetlennek...
Ha a belinkelt fájlt teszed be a getJSON-be a sajátod helyett, akkor azzal működik? -
Sk8erPeter
nagyúr
Valószínűleg helytelen a formátuma a JSON-nek, amit kinyomsz, ezért nem tudja feldolgozni, és úgy tűnik, nincs megoldva a rendes hibakezelés, hogy egyértelmű legyen a hiba oka.
Itt a példa JSON-fájl: [link], ilyesmit kellene kiíratnod.
Rakd fel mondjuk pastebinre, hogy Te mit kapsz, milyen formátumú lesz az általad kiíratott $out változó kimenete, hátha abban megtaláljuk a hibát.
--
Még egy gyors megjegyzés:
echo "http://localhost/megj/Hs/examples/basic-line/cucc.php";
Soha ne használj ilyen szinten kötött címeket!! Mi van, ha már költözteted egy éles szerverre a cuccaidat, akkor mindenhol majd szépen kicserélgeted a "http://localhost" címet? Nagyon kényelmetlen megoldás. Ne legyen benne a domain, se a protokoll (http/https). Ez nyugodtan lehetne pl. simán "/megj/Hs/examples/basic-line/cucc.php" (a localhostos rész nélkül), ha már - localhoston - szerverről futtatod. -
Brown ügynök
senior tag
Fáradj át ide: Debian linux
-
Sk8erPeter
nagyúr
"Jelenleg az adatok egy JSON fájlba vannak tárolva.
Ezzel kapcsolatban lenne kérdésem.
Az egyik az, hogy ezeket a fájlokat hogyan lehet írni PHP segítségével van rá a neten valami minta, hogy milyen szintaxissal lehet meg nyitni a fájlt bele írni a végére majd lezárni?"Ha jól értelmezem a kérdésedet, szeretnél PHP-vel megnyitni, majd beolvastatni egy JSON-fájlt, ehhez hozzáadni adatokat, majd ismét JSON-formátumban eltárolni, és végül lezárni a fájlt.
1.) Megnyitásra, fájl tartalmának beolvastatására: file_get_contents()
2.) JSON-string PHP-s formátumra konvertálására: json_decode().
Itt hozzáadhatod akár tömbszerűen, vagy neked tetsző módon az adataidat, ezt követően:
3.) PHP-változó JSON-stringgé konvertálására: json_encode().
4.) Fájlba írásra, fájl lezárására: file_put_contents().Ennél egyszerűbb módszer erre nincs.
Pont a json_decode() kommentjei közt szerepel egy viszonylag egyszerű példa a beolvasásra:
[link]
"Make sure you pass in utf8 content, or json_decode may error out and just return a null value. For a particular web service I was using, I had to do the following:<?php
$contents = file_get_contents($url);
$contents = utf8_encode($contents);
$results = json_decode($contents);
?>Hope this helps!"
A második részre:
"Hogyan alakíthatom át ezt úgy, hogy az adatokat ne JSON fájlból szedje ki hanem MySQL és PHP kombó segítségével."
Szerintem itt rosszul értelmezed a dolgokat, vagy lehet, hogy csak rosszul fogalmaztad meg, vagy én értelek félre. Láthatóan az általad linkelt oldalon is PHP segítségével dolgozzák fel az adatokat. Hogy konkrétan MySQL- vagy más adatbázisból szedik ki az adatokat, az teljesen lényegtelen, de valamilyen adatbázisból kiszedik.
Itt annyi történik, hogy AJAX-szal kérdezik le az adatokat, és azzal is jelenítik meg a frontenden. Ettől függetlenül nem feltétlenül generálnak le emiatt egy JSON-fájlt, hogy aztán abból olvassák ki, hanem egyszerűen JSON-formátumban küldik vissza a kapott adatokat a szerverről.
Ez pl. nagyon könnyen megtehető a korábban említett json_encode() függvény segítségével.
Összeállítanak egy tömböt, vagy bármilyen más változót a kívánt adatokkal, json_encode-dal JSON-formátumúra alakítják, majd ezt echo-zzák, ezt kapja meg az AJAX-lekérés eredményeként a kliensoldal. Ezt már csak a megfelelő formátumban jQuery-vel feldolgozzák, elkészítik belőle a grafikont, stb.Ezek fényében az első pontra visszatérve: ha folyamatosan változó adatokat akarsz kiolvastatni pl. adatbázisból, mindezt PHP-vel feldolgozni, stb., akkor emiatt nehogy írj minden alkalommal JSON-fájlt, hacsak nem nagyon indokolt, az feleslegesen rendkívül erőforrásigényes.
-
PazsitZ
addikt
A $mainframe változó egy objektum lenne, de valamiért nem jön létre.
Ha nem te írkáltál a kódba, akkor tippem szerint a konfigurációnál nem stimmel valami.mod:
Elvileg azt írják, hogy akkor van ilyen, ha 1.5höz tartozó template-et használsz 1.6 alatt.
[link]
Esetleg próbáld lecserélni:
ezt: $mainframe->getMessageQueue();
erre: JFactory::getApplication()->getMessageQueue(); -
Tele von Zsinór
őstag
Mi van a mainframe változóban?
A joomla topicban lehet jobban jársz. -
vamzi
senior tag
Mivel írtad, hogy te is kerestél kész kódot, ezért feltételezem, egy komplett megoldás is jó. Én ezt ajánlom. Évek óta használom, nagyon jól paraméterezhető és szmájlikat is kezel, ahogy szeretnéd. Plusz egy rakat opció és beállítás, kis admin felülettel megspékelve. És természetesen ingyen van.
Továbbá nekem is lenne egy kérdésem:
Van egy oldalam, ahol az egyik sql táblám rekordjai vannak felsorolva. Mindegyik rekordhoz tartozik egy textarea is, ahol át tudom írni a rekord adott mezejének az értékét. Ez a textarea el van rejtve js-sel, hogy feleslegesen ne zavarkodjon, csak az adott gomb megnyomására jön elő az adott textarea. Ez így szép és jó, de szeretném úgy megcsinálni, hogy ha frissítek egy értéket, akkor ne kelljen újratölteni az egész oldalt. Hanem csak egyszerűen, ha becsukom a textarea-t, akkor a benne hagyott érték legyen a mező új értéke. jquery-re gondoltam, de még nem találtam nekem megfelelő howto-t vagy tutorialt. Remélem érthető a problémám.Előre is köszönöm annak aki tud segíteni.
-
Sk8erPeter
nagyúr
Ennek örülök, szívesen.
Amúgy most látom, hogy bent maradt egy felesleges sor, ami baromságVisszanéztem az előző hsz.-eket, és onnan másoltam ki, aztán maradt benne a
$query = mysql_query("SELECT DISTINCT allatnev, datum, allapot FROM allat_tabla WHERE datum='$mai_nap' AND allatnev='$allatnev' ;")
or die ...sor, természetesen annak így kellett volna kinézni:
$query = mysql_query($query) or die ...
még az előző
$query="SELECT * FROM user_table;";sor miatt, ami az érvényes lekérés.
(Vagy lehetett volna akár röviden
$query = mysql_query("SELECT * FROM user_table;") or die ...
)De ezek szerint észrevetted, úgyhogy akkor semmi gáz.
-
Sk8erPeter
nagyúr
Vegyük azt az esetet, hogy mondjuk a "kedvezmény" mezőben mindössze négy érték szerepelhet:
0 (vagy NULL, esetleg semmi), 15, 25, 30Csak egy lehetséges (közel sem tökéletes, de szerintem működőképes) gyorsmegoldás keretében itt alább úgy csinálom, hogy hidden mezőkkel küldöm el az adott userhez és formhoz tartozó user_id-t, aminél lehet, hogy van szebb megoldás, de most hirtelen ez ugrott be.
A HTML része meg most úgy néz ki, hogy van egy nagy "kerettáblázat", és azon belül formonként külön-külön kis táblázatok, amiknek a mérete a CSS-stílusok meghatározása miatt passzol egymáshoz, így nincs gond a megjelenéssel.
De úgy döntöttem, inkább megmutatom az egészet, hogy én hogy gondoltam kezdve egészen a megjelenítéstől a feldolgozásig, így nem származhat belőle félreértés. A feldolgozó fájlhoz persze a saját szempontjaidat még hozzá kell fűznöd, és az "action"-nél be kell állítanod a feldolgozó fájl elérési útját, amennyiben nem ugyanabban a fájlban dolgozod fel, amiben meg is jeleníted (inkább szerintem küldd ki egy feldolgozó fájlnak!).Tehát maga a táblázat megjelenítése így nézne ki:
<?php
$discount_table=''; //ehhez fogjuk hozzáfűzni a tábla tartalmát, a feltételektől függően, aztán amikor a megjelenítéshez érünk (a body megfelelő részénél), ezt echo-zzuk (print-eljük) - szétválasztjuk a megjelenítést a feltételvizsgálatoktól
$query="SELECT * FROM user_table;";
$query = mysql_query("SELECT DISTINCT allatnev, datum, allapot FROM allat_tabla WHERE datum='$mai_nap' AND allatnev='$allatnev' ;")
or die ("Nem lehet lekérni az adatot a MySQL-táblából.<br />Hiba: ". mysql_errno() . ":". mysql_error() ."<br />");
while( $res = mysql_fetch_assoc($query)){
user_array[]=$res;
}
if( isset($user_array) ) //csak ha már vannak felhasználók a táblában, akkor kezdjük el az egészet
{
$user_array_size=count($user_array); //hány sor van
$discount_table='
<table width="500" border="1">
<tr>
<td>
<table class="user">
<tr>
<td class="user_name">Név</td>
<td class="status">Státusz</td>
<td class="discount">15%</td>
<td class="discount">25%</td>
<td class="discount">30%</td>
<td class="submit_col">Elküldés</td>
</tr>
</table>
';
for($i=0;$i<$user_array_size;++$i)
{
//hozzáfűzzűk a többit, itt jönnek az egyes formok (actionnek a megfelelő fájlt adjuk meg)
$discount_table .='
<form id="form_'.$i.'" name="form_'.$i.'" method="post" action="">
<table class="user">
<tr>
<td class="user_name">'.user_array[$i]['nick'].'</td>
<td class="status">'; //van már beállított kedvezmény?
if( !empty(user_array[$i]['kedvezmeny']) ) //ha már beállítottunk kedvezményt
$discount_table .= 'Ennek a usernek '.user_array[$i]['kedvezmeny'].' kedvezmény jár.';
else
$discount_table .='Még nincs beállítva kedvezmény.';
//folytatjuk
$discount_table .='
</td>
<td class="discount"><input type="radio" name="discount" value="15" /></td>
<td class="discount"><input type="radio" name="discount" value="25" /></td>
<td class="discount"><input type="radio" name="discount" value="30" /></td>
<td class="submit_col">
<input type="hidden" name="user_id" value="'.user_array[$i]['id'].'" />
<input type="submit" name="discount_submit" value="Elküldés" />
</td>
</tr>
</table>
</form>
';
}
//lezárjuk
$discount_table .='
</td>
</tr>
</table>
';
}
else //üres a tábla
$discount_table='Még nincsenek felhasználók!';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Kedvezmények megjelenítése</title>
<style type="text/css">
<!--
.user{
width:600px;
}
.user_name{
width:100px;
}
.status{
width:200px;
}
.discount{
width:40px;
}
.submit_col{
width:80px;
}
-->
</style>
</head>
<body>
<?php echo $discount_table; ?>
</body>
</html>------------------------------------
Aztán maga a feldolgozás LÉNYEGI része (még az esetleges hibaüzenetekkel és egyebekkel ki kellene egészítened, ha szükséges) meg így nézne ki:<?php
if(isset($_POST['discount_submit'])){
$query="UPDATE adatbazisod.user_table SET kedvezmeny = ".$_POST['discount']." WHERE user_id = ".$_POST['user_id']." ;";
$query = mysql_query($query)
or die ("Nem lehet lekérni az adatot a MySQL-táblából.<br />Hiba: ". mysql_errno() . ":". mysql_error() ."<br />");
//további esetleges ellenőrzések, hibaüzenetek, ha kell...
?>---------------
Remélem működni fog!
-
Sk8erPeter
nagyúr
Hali!
Csak ehhez tudni kéne, hogy mit szeretnél update-elni a submit gombbal, ha már eleve fel van töltve a táblába, hogy van-e adott usernek kedvezménye, vagy sincs, és ha igen, mennyi.
Tehát amiután lekérdezted, van-e kedvezmény, és mennyi, minek szeretnél formot elküldeni? Biztos van valami célja, csak nem írtad le.
Amúgy ezek ismeretében nem nehéz. Csak "checked" állapotúra kell állítani az adott radio buttont: [link]. -
Sk8erPeter
nagyúr
Szívesen! De mondjuk hozzá kell tenni, hogy ezt csak sebtiben írtam, úgyhogy bőven lehetne kiegészítgetni, csiszolni, csak valami útmutatónak szerettem volna, hogy én valahogy így csinálnám, aztán persze ötszáz másik megoldás is lehetséges.
Majd írd meg ugyanitt, ha elakadtál! -
Sk8erPeter
nagyúr
Ezt eddig is értettem...
De talán nem ártana, ha valami konkrétumot is írnál, hogy mik az eddigi elképzeléseid, milyen struktúrával alakítottad ki az adattáblákat a feladathoz, és ehhez hasonlók... Most én is írhatok "darab kódokat", amik hirtelen bevillannak, de azzal nem biztos, hogy előrébb jutsz, mert nem kötődik konkrétan a Te elképzelésedhez/kódodhoz/adatbázisodhoz...
$mai_nap = /* a mai nap */;
$allatnev = 'Pistike';
$res = mysql_query("SELECT DISTINCT allatnev, datum, allapot FROM allat_tabla WHERE datum='$mai_nap' AND allatnev='$allatnev' ;")
or die ("Nem lehet lekérni az adatot a MySQL-táblából.<br />Hiba: ". mysql_errno() . ":". mysql_error() ."<br />");
$res = mysql_fetch_assoc($query); //valszeg csak egy sor lesz, nem kell ciklus...
if( $res['allapot']=='megetetve' )
echo 'Már kapott kaját!';
else
echo 'Adj neki zabálni! :-)';Ez csak hirtelen ötlet, csak szemléltetésképp...
És a megetetést sem tudom, hogy oldod meg, ha formmal, akkor lehetne ez alapján egy letárolás...
if( isset($_POST['kaja']) )
//adatbázisba letárolás
;És így tovább.
Bocs, hogy segíteni próbáltam... -
Sk8erPeter
nagyúr
Ne csodálkozz, ha így nem megy, mert az $i változónak adod a MySQL utasítást, de lekérdezést a mysql_query() függvénnyel nem hajtasz végre.
Nem ártana tudni, mi az a "SELECT amivel le kérdezem akaját", mert akkor talán érdemben is tudnánk segíteni... Nem tudom, mit akarsz ellenőrizni ennél a résznél.''UPDATE
ez mi? két egymás utáni sima aposztróf? Mert azt is helytelen... Döntsd el, hogy macskakörmöt (") vagy aposztrófot (') akarsz használni.
Na meg egyszer ezt írod: 'kaja'+10 utána meg 'kedv+10' (az egész kifejezés aposztrófban)... Egyáltalán ez így nálad ebben a formában működik?Az sem derült ki eddig...
Kicsit próbáld meg egyértelműbben vázolni a helyzetet.
-
Sk8erPeter
nagyúr
Olyan szó nincs, hogy "meg etet", én csak olyat ismerek, hogy "megetet" (egy szó).
Mi értelme van annak a kódnak, amit írtál? Az $i változónak megadod az 5 értéket, aztán leellenőrzöd, hogy 5-e az értéke. Nyilván az lesz, miután azzal inicializáltad...
Eleve nem értem a kérdésed. Ha a júzer megetette az állatot, akkor állításod szerint ezt el is tárolod adatbázisban, hogy aznap már etetett.
Ha leellenőrzöd az adatbázisban, hogy adott napra született-e olyan bejegyzés, miszerint már kapott kaját az állat, akkor meg is kapod a választ: ha már van ilyen bejegyzés, akkor kiírod az ennek megfelelő üzenetet ("ma már megetetted a kedvencedet"), ha nem, akkor figyelmezteted, hogy etesse meg (vagy ahogy akarod), és ha megetette, akkor ezt letárolod adatbázisban.
Elég, ha az adatbázis-műveletekkel szórakozol, és az adatbázis bejegyzéseit ellenőrizgeted, ehhez nem kell számokat beállítgatni, és azt ellenőrizni, aminek épp előtte adtál értéket. -
fordfairlane
veterán
Fogsz egy változót, amit minden sor kiírásakor növelsz eggyel.
$i = 0;
while ($sor = mysql_fetch_array($eredmeny,MYSQL_ASSOC)) {
$i++;
echo "<tr><td>${sor['evf']}</td><td>${sor['szak']}</td>.......<td>${sor['k6']}</td></tr>";
}Ezután megvizsgálod, hogy páros, vagy páratlan-e, ezt a maradékos osztással (% operátor) a legegyszerűbb:
$i = 0;
while ($sor = mysql_fetch_array($eredmeny,MYSQL_ASSOC)) {
$i++;
if($i%2) echo "<tr class='zold'>";
else echo "<tr class='sarga'>";
echo "<td>${sor['evf']}</td><td>${sor['szak']}</td>.......<td>${sor['k6']}</td></tr>";
}Ezután minden sor felváltva 'zold' és 'sarga' nevű style class azonosítót fog kapni, amit aztán úgy formázol, ahogy jólesik.
<style type="text/css">
.zold {
background-color: green;
}
.sarga {
background-color: yellow;
}
</style> -
Gyuri16
senior tag
kiprobalni nem tudom, reg lattam php-t, de kb igy:
$szam=0;
while ($sor = mysql_fetch_array($eredmeny,MYSQL_ASSOC)) {
if $szam % 2 == 0 {
echo "<tr class="zold"><td>${sor['evf']}</td><td>${sor['szak']}</td>.......<td>${sor['k6']}</td></tr>";
} else {
echo "<tr class="piros"><td>${sor['evf']}</td><td>${sor['szak']}</td>.......<td>${sor['k6']}</td></tr>";
}
$szam++;
}tr-nek van bgcolor attributuma, azzal is probalhatod, de az elavultnak szamit (de kiprobalni jo lehet). a class="" helyere odairod hogy bgcolor="red" meg bgcolor="green"
-
Sk8erPeter
nagyúr
Hát nyilván, mivel sehol sem ellenőrzöd, hogy egyáltalán be van-e állítva bármi is, írt-e a felhasználó valami adatot. Csak azt ellenőrzöd, hogy ha írt, akkor azon belül szám-e, stb...
Lehetne egy olyan feltételed is, hogy
if ( $menteni==0 && isset($pix, $menyibe, $ftmenyi, $menyirend) )
{
//... adatbázis feltöltése...
} -
Sk8erPeter
nagyúr
Első észrevétel: kapásból rossz a hibafeltételed, mivel !isset($_POST["pix"]) szerepel benne, vagyis épp rosszat vizsgálsz, ha valamit megadott a júzer, soha nem fog belelépni ebbe a feltételágba, mivel itt azt nézed, hogy mi van, ha NEM adtak meg semmilyen adatot, és a SEMMILYEN adat szám-e vagy sem, stb.
Tehát szedd ki azt a felkiáltójelet!Második észrevétel: döntsd el, hogy $pix VAGY $_POST["pix"]-et használsz, és használd azt következetesen.
Harmadik észrevétel:
"Azt, hogy lehet meg oldani, hogy elsőre mikor üres a form ne fusson le a az adatbázis írása?"
Hát nyilván ne így tedd be az adatbázisírás műveletét, hogy mindenféle feltétel-ellenőrzés NÉLKÜL lefut... Csak akkor engedélyezd, ha minden feltétel stimmelt, a felhasználó minden megkövetelt mezőt kitöltött.
Igencsak gány megoldás, de jelenleg ennél a tök egyszerű cuccnál akár változót is figyelgethetsz, ezt persze komolyabb rendszereknél már nem így csinálják, hogy mit tudom én, elején beállítod, hogy $mehet=1; aztán ha hiba van, akkor $mehet=0; -ra állítod, és azt vizsgálod az írásnál, hogy if($mehet), vagyis ha a $mehet értéke 1, csak akkor írjon az adatbázisba... De mondom, ez kicsit ratyi, mindjárt úgyis leolt érte valaki.Sőt, még olyat is csinálhatsz, hogy beállítod az elején, hogy $hibasztring = '';, aztán ha hiba van, akkor abban a feltételágban: $hibasztring = $hibasztring . "Hibásan van ki töltve a 4.2-es kérdés, értéke:".$pix;, a legvégén pedig if(empty($hibasztring)), akkor mehet a feltöltés, egyébként pedig írja ki a hibaüzenetet ( else echo $hibasztring; ).
Persze lehet azt is, hogy egyből return-ölsz az adott hibaüzenettel, de akkor kapásból az első hibánál vissza fog térni.
Szépen kivételkezeléssel szokták megoldani, de ez még valszeg bonyolult lenne neked. -
Sk8erPeter
nagyúr
Pont erre írta cucka: [link] --> "Extract() függvény használata nagyon nem javasolt"
És még egy, amire már cucka felhívta a figyelmet: "az empty() a 0-ra és az üres tömbre is boolean true-val tér vissza".
Tehát térj vissza az isset() használatára, hogy ne dobjon hibát, ha a felhasználó 0-t ír az adott mezőbe.
if ( isset($_POST["pix"]) && !is_numeric($pix) )Egyébként a "mennyi" szóban két n van...
Utsó kérdésedre pedig: nyilván csak akkor engedélyezd bármilyen adatbázis-művelet elvégzését, ha nincs hiba, minden szükséges adat megvan. Ez csak feltétel-ellenőrizgetések kérdése.
"Esetleg egy "brake" oldaná meg a gondomat?"
Én még brake utasításról nem hallottam.Valószínűleg a break-re gondolsz...
De amúgy nem kell break, bár tehetsz bele, ha nagyon szeretnélha nem teljesülnek a feltételek, egyszerűen nem töltöd fel az adatbázist, és kész. Feltételeket vizsgálgatsz, ha teljesül a feltétel (pl. megvan minden adat), akkor belelép az adott "utasításcsomagba" (most jobb szó nem jutott eszembe), ha nem, akkor megy a következőre.
_____________________________
(#3472) 8nemesis8: örülök, hogy megy, bár nem nagyon értem, miért nem az előző értéket update-eled, de a lényeg, hogy működik, és Te érted.
-
meone
tag
Még annyi lenne a problémám, hogy lehetne ezt a kódot úgy át alakítani, hogy mikor a $pix értéke mondjuk karakter akkor a hiba üzenetnél megálljon és utána már csak a formot rajzolja fel a POST-ból vissza szedett értékekkel, más adatbázis műveletet ne végezzen.
Íme a kód:
if ( !empty($_POST["pix"]) && !is_numeric($pix) )
{
echo "Hibásan van ki töltve a 4.2-es kérdés, értéke:".$pix;
}
if ( !empty($_POST["menyibe"]) && !is_numeric($menyibe) )
{
echo "<br> Hibásan van ki töltve a 30-as kérdés, értéke:".$menyibe;
}Esetleg egy "brake" oldaná meg a gondomat?
Nem vagyok annyira biztos benne. -
PazsitZ
addikt
Alapvetően nem azt akarod, hogy csak nem szám esetén írja ki?
Mert akkor:
if ( !empty($_POST["pix"]) && !is_numeric($pix) )Egyébként jelenleg azért írja ki minden esetben mert az if-ed üres. Nem tartalmaz parancsot, ha lezárod egy ;-vel
Tehát így lesz jó szvsz:
if ( !empty($_POST["pix"]) && !is_numeric($pix) ) {
echo "Hibásan van ki töltve a 4.2-es kérdés értéke:".$pix;
}Amit pedig az első blokkban csinálsz megoldható ennyivel[link]: extract($_POST); és ezután hivatkozhatsz bármely POST-olt változóra.
-
Sk8erPeter
nagyúr
"Ezt a két részt viszont már nem tudom összekötni"
if ( isset($_POST["pix"]) && is_numeric($pix) ) ;
{
echo "Hibásan van ki töltve a 4.2-es kérdés értéke:".$pix;
}
Azt, hogy pirosan keretezze be, én legegyszerűbben CSS segítségével szoktam megoldani, hogy PHP-vel megváltoztatom a mezőre vonatkozó stílust, amit CSS-ben megadtam, hogy piros legyen. -
1ed
csendes tag
Helló!
<input type="radio" name="radio1" value="y" <?php echo $_POST['radio1'] == 'y' ? 'checked="checked"' : ''; ?> >
<input type="radio" name="radio1" value="n" <?php echo $_POST['radio1'] == 'n' ? 'checked="checked"' : ''; ?> >és előtte a $_POST['radio1']-nek adj default értéket n-t vagy y-t
-
Sk8erPeter
nagyúr
Hali!
<?php
echo '10 random generált szám -100 és +100 között: <br />';
$min=-100;
$max=100;
$szum = 0; //segédváltozó az összeghez
for($i=1; $i<=10; $i++)
{
$rand = rand($min,$max);
$szum+=$rand;
echo "$i: $rand <br />";
}
echo "<br />";
echo "A 10 random generált szám összege: $szum";
?>A random függvényt a for cikluson belülre tedd, úgy jó. Én i-t 1-től indítottam, és minden cikluslépésben ki is írtam az aktuális számot, és a random generált számot a $szum változóhoz minden lépésben hozzáadogattam. Az értékadás egyébként így is jó lett volna: $szum = $szum+$rand; de így szebb ($szum += $rand).
A legvégén, a ciklus végeztével pedig kiírattam az összeget (a $szum változót).
Új hozzászólás Aktív témák
- Apple Watch Nike S6 44mm Space Gray LTE, ajándék új szíjakkal, üvegfóliával és ütésálló tokkal!
- BenQ MW523 3D DLP Projektor, 3000 ANSI lumen, 143 óra üzemidő + 2db 3D szemüveg + Ingyen posta
- 16" macbook pro m1pro.
- (új, bontatlan) Kingston 8GB DDR4 3200Mhz CL22 (Foxpost:+1400Ft)
- Új állapotú ASUS TUF Gaming A15 FA507NU - Ryzen 5 7535HS, 15.6FULL HD 144Hz, 1TB SSD, 32GB
- LG 65" C1 OLED - 4K 120Hz 1ms - NVIDIA G-Sync - FreeSync Premium - HDMI 2.1 - PS5 és Xbox Ready!
- Samsung Galaxy Z Flip 3 256GB,Átlagos,Dobozával,12 hónap garanciával
- ÁRGARANCIA!Épített KomPhone Ryzen 7 5800X 16/32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- Bomba ár! Lenovo ThinkPad L480 - i5-8GEN I 16GB I 256GB SSD I 14" FHD I HDMI I Cam I W11 I Gari!
- OLCSÓBB!!! Dell Latitude 7420 és 7420 All-In-One i7-1185G7, Intel Iris Xe Graphics, 16GB, 256GB-2TB
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest