- sziku69: Fűzzük össze a szavakat :)
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- sziku69: Szólánc.
- Luck Dragon: Asszociációs játék. :)
- Magga: PLEX: multimédia az egész lakásban
- eBay-es kütyük kis pénzért
- ubyegon2: Airfryer XL XXL forrólevegős sütő gyakorlati tanácsok, ötletek, receptek
- laskr99: Processzor és videokártya szilícium mag fotók újrakezdés
- Hieronymus: A németországi vasúthálózat
- Viber: ingyen telefonálás a mobilodon
Új hozzászólás Aktív témák
-
Peter Kiss
őstag
válasz
Sk8erPeter #13449 üzenetére
Ha furcsállná, miért az van bent, ami.
-
Sk8erPeter
nagyúr
válasz
Peter Kiss #13447 üzenetére
Itt miért kéne már htmlentities()?
-
Peter Kiss
őstag
válasz
spammer #13446 üzenetére
1. Értelmetlen. Használj prepared statement-eket!
2. htmlentities -
DNReNTi
őstag
válasz
spammer #13444 üzenetére
Persze hogy van értelme. Az űrlapon bevitt adatokat mindenképp célszerű az escape_string() metóduson átengedni mielőtt betolod az adatbázisba, elkerülendő a mysql injection-t.
A másik dolog is teljesen normális. Sőt ilyenkor célszerű közös css-t használni az editorban (TinyMCE) és a megjelenítéskor, hiszen nem csak tartalomra hanem kinézetre is pontosan ugyan azt kapja majd vissza az user amit megszerkesztett. -
spammer
veterán
válasz
fordfairlane #13443 üzenetére
Köszi, msqli-t próbálgatom most, de kezdő vagyok, meg nem is lesz szükség semmi nagy vagy bonyolult adatbázisra.
Ennek így van értelme?
$text = $db->escape_string($_POST['text']);
Form adatokat ad át, és a text mező (ami egy textfield) html kóddal formázható (TinyMCE pluginnel). Viszont ha megnézem adatbázisban (phpmyadmin), simán úgy látom, ahogy a form elküldi. Például:
<p><a href="valami.com">valami.com</a> "html próba".</p>
Ez így?
-
spammer
veterán
Ha már úgyis szó van itt a mysqli-ről. Megnéztem a tárhelyszolgáltatónál, ezt írja a az infó:
MysqlI Support
Client API library version 5.5.24Tehát nyugodtan használhatok mysqli-t, ugye? Az a helyzet, hogy össze akarok dobni egy kisebb DB-t majd a weblaphoz, úgyis kellene mysql-lel foglalkoznom, de akkor jobb, ha a mysqli tutorialokat keresek egyből, ugye?
-
Sk8erPeter
nagyúr
válasz
Peter Kiss #13440 üzenetére
Akkor másképpen fogalmazok: kezdő ne akarjon adatbázis-wrappert csinálni, mert csak egy katyvasz lesz belőle.
Meg amúgy is Dunát lehet rekeszteni az ilyenekkel.
-
Peter Kiss
őstag
válasz
pvt.peter #13428 üzenetére
Semennyire. A csatlakozáshoz szükséges adatok tárolói mind private-ok, hol lehet őket beállítani? Konstruktorban csatlakozik a szerverhez (miért is?), de be lehet zárni menet közben a kódban, így a későbbi részek meg is haltak, ha használni akarják. Állapotot tartalmazó cuccok nem lehetnek static változóban sosem. Ennél durvább már csak az lehetne, ha ehhez hasonló kóddal perzisztens kapcsolatokat használna valaki.
Ha jól emlékszem, a mysql nem is tud SQL tranzakciókat kezelni.
@Sk8erPeter
Van értelme wrapper-t csinálni, mert a mysqli és a PDO még nem az, illetve mind a kettő ocsmányul néz ki, plusz sosem tudhatod, mikor mondják azt, hogy PDO nincs, csak mysqli, akkor cserélhetsz mindenhol mindent, emellett meg tudja könnyíteni a tranzakciókezelést, be tudsz szúrni pl. PDO driver-specifikus beállításokat, ilyesmi.
-
Jim-Y
veterán
válasz
Tele von Zsinór #13436 üzenetére
hiányzott egy package:
sudo apt-get install php5-mysql
ezután megjavult
köszi
Egyébként sajnos az nem sokat mondott, hogy kapcsold be a modult, ha az egyszerű ember azt se tudja, hogy azt hogyan kell
-
Jim-Y
veterán
Sziasztok. Nem megy debian alatt a PHP rendesen. Nézem az apache logot:
Először:
PHP Fatal error: Uncaught exception 'PDOException' with message 'could not find driver' in /var/www/woowie/php/server.php:10\nStack trace:\n#0 /var/www/woowie/php/server.php(10): PDO->__construct('mysql:host=loca...', 'root', 'root', Array)\n#1 {main}\n thrown in /var/www/woowie/php/server.php on line 10, referer: http://localhost/woowie/Ekkor ez volt a PDO:
$db = new PDO(
"mysql:host=localhost;dbname=test",
"root",
"root",
array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8;',
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
)
);Majd kicseréltem erre:
$dsn = 'mysql:dbname=testdb;host=localhost';
$user = 'root';
$password = 'root';
try {
$dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}Így ezt a hibaüzit kapom:
[Tue May 14 23:06:55 2013] [error] [client ::1] PHP Notice: Undefined variable: db in /var/www/woowie/php/server.php on line 20, referer: http://localhost/woowie/
[Tue May 14 23:06:55 2013] [error] [client ::1] PHP Fatal error: Call to a member function prepare() on a non-object in /var/www/woowie/php/server.php on line 20, referer: http://localhost/woowie/Ötlet?:/
php5, apache, mysql installálva, újraindítva, config fájlokban nem turkáltam.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #13431 üzenetére
"Hogy fordítva?"
Úgy, hogy nem az Oracle-fejlesztőknek kell ráfeküdniük izomból a PHP-val való együttműködésre, hanem a PHP fejlesztőinek... -
Sk8erPeter
nagyúr
válasz
pvt.peter #13428 üzenetére
Igazából azt pötyögted be, ami kommentekben is megtalálható, túl sok új nincs benne. Ez a query1(), query2() elég mágikus név, mit akarsz vele megvalósítani? Mindenesetre már az elnevezés is rossz. De legfőképp az, hogy fel akarod fedezni a spanyolviaszt: ne akarj n+1-edik adatbázis-kommunikációs wrapper osztályt csinálni, ott a mysqli és a PDO, valamint remek ORM-ek vannak. Írtad, hogy a mysql_ függvények használatára vagy kényszerítve, de ezt az érvet sajnos nem tudjuk elfogadni.
Tehát minimum mysqli vagy PDO, a mysql_ kezdetű függvények használatáról 2013-ban már nincs is értelme beszélni.
Volt már korábban itt egy (v. több) hitvita a topicban, hogy Singleton-minta jó-e vagy sem, a vége az lett, hogy több érv szól a nem mellett (itt olvashatsz róla többek közt: [link], meg persze a topicban, a Singleton szóra rákeresve). -
Andoidtibi
csendes tag
Hát nagyon szépen köszönöm mind kettőtöknek nagyon sokat segítetettek
még most tanulgatom a PHP nyelvet valaki esetleg tudna olyan oldalt ahhol magyarul vannak jó leírások meg gyakorlati feladatok ?
-
Speeedfire
félisten
válasz
Sk8erPeter #13427 üzenetére
Nagyon sok adatot lekérdezni egyszerre oracle-ből pdo-n keresztül.
Nem is néztem azóta, biztos van rá valami, amivel előbb elkapom és nem dob rá error-t, hanem én mondom meg neki. Csak, nem lehet egyszerű a dolog...vagy én nem találom meg.
Nem fordítva kéne, hogy legyen a fejlesztési irány?
Hogy fordítva? -
pvt.peter
őstag
Sziasztok!
Adott az alábbi php kód:
http://pastebin.com/Hy8YGsxMA kérdésem: a fenti kód mennyire jó felépítése egy adatbázis tranzakcióinak a kezelésére, tehát adatlekérésére, módosítására esetleg törlésére.
Mit lehetne rajta javítani, módosítani? (mysqli -vel való kapcsolódás rajtam kívül álló okok miatt kizárva)Választ előre is köszönöm,
Peti -
Sk8erPeter
nagyúr
válasz
Speeedfire #13426 üzenetére
"De ha gondolod próbáld rekonsturktuálni oracle alatt pdo-val ezt a dolgot, mert kíváncsi lennék rá."
Milyen dolgot?Én már az elejére sem emlékszem.
Igazából csak arra lettem volna kíváncsi, rájöttél-e, hogyan bírálhatod felül a Yii erőszakos kivételkezelését, mert úgy tűnt, nem tudod elkapni a keletkező kivételt, mert már előbb kitolja a kimenetre a Yii, ami gáz.
"Egyszerűen az oracle nem akarja támogatni a pdo-t. "
Nem fordítva kéne, hogy legyen a fejlesztési irány? -
Speeedfire
félisten
válasz
Sk8erPeter #13422 üzenetére
Nem is foglalkoztam azóta ezzel az error500-al. Csináltam egy tárolt eljárást oracle-ben, ami az excel-t elmenti egy blob mezőben, onnan meg szépen kistreamelem.
De ha gondolod próbáld rekonsturktuálni oracle alatt pdo-val ezt a dolgot, mert kíváncsi lennék rá.
Szét gugliztam magam, de csak módosított oci8 csomagokat láttam. Egyszerűen az oracle nem akarja támogatni a pdo-t. Használjon mindenki oci-t. -
Soak
veterán
Nem kene erre kitolni egy elso hsz jellegu dolgot hogy ingyen segitseget nem sok ertelme van privatban kerni? Vagy csak engem zavarnak ezek nagyon?
-
shaggy
aktív tag
SOS segítségre lenne szükségem van egy progi php-ben és hozzá egy adatbázis de most valami lelete és amikor beírom a jelszót és felhasználónevet hibát dob ki és nem enged az oldalra a login.php 20 és 21 sora hibás szerinte de szerintem jó nem tudom mi a hiba valaki segítsen.
Privátba írtók elküldm a teljes progit is. -
Sk8erPeter
nagyúr
válasz
Speeedfire #13406 üzenetére
sikerült azóta rájönni, mi a para?
-
Sk8erPeter
nagyúr
válasz
Andoidtibi #13418 üzenetére
Amit most csinálsz:
egy <table> elembe 15-ször kiíratod egy <ul>-be az aktuális elemet.
Ez szintaktikai hiba (meg nem a feladatnak megfelelő): <table> elemen belül ezek lehetnek:
http://www.w3.org/TR/html-markup/table.html.
Tehát <table> után jöhet egy <caption>, <colgroup>, <thead>, <tbody> vagy <tfoot> elem, vagy esetleg egyből a <tr> (táblázat sora), ami pedig <td>-(ke)t (táblázat oszlopa) tartalmazhat.
De <ul> semmiképp sem következhet egyből. Ezenkívül az <ul> elemen belül csak <li> elemek szerepelhetnek.
Itt van egy egyszerű 3 oszlopos, 3 soros táblázat, a felső sor a fejléc:
http://jsfiddle.net/JH48Z/amit Te szeretnél, annak a kimenete így néz ki szintaktikailag helyesen:
http://jsfiddle.net/JH48Z/1/
vagy <tbody> nélkül is jó:
http://jsfiddle.net/JH48Z/2/Na, tehát ennek megfelelően kell kiíratnod, ez az első, amit végig kell gondolnod. Próbáld meg az összes lépést egyesével végiggondolni, akár papírra is leírhatod, ha úgy egyszerűbb (algoritmizálj).
Először ki kell íratni a <table> elemet (majd a végén, a tartalom bepakolása után le kell zárni). Aztán jön a <tr>, most csak egy sort szeretnél, tehát akkor ezt csak egyszer kell kiíratnod, majd ebbe kerül majd a 3 <td>, a <td>-ken belülre pedig az 5-5 listaelem (<ul><li>...</li></ul>). De hülyebiztosra kell elkészítened a kódot, számítani arra, hogy a tömb elemeinek száma változni fog. Pl. működjön úgy is, ha csak 10 elemed van, meg akkor is, ha 632.
Most vegyük azt, hogy mindenképp azt szeretnéd, hogy mindig legyen 3 oszlop, és mindig 5 elemet írjon az adott oszlopba, már ha van annyi (ha már nincs annyi, akkor a maradékot pakolja bele az aktuális cellának aktuális listájába).
Ha tök általánosan akarod megoldani, lesz három ciklusod egymásba ágyazva. Egyikben kiírod a szükséges számú sort (itt most 1, de lehetne jóval több is), a benne lévő ciklusban a szükséges számú cellát (itt 3), az azonbelül lévő ciklusban pedig a listaelemeket íratod ki.
Amire szükséged lesz, a felső egészrész egyszerű kiszámítására vonatkozó függvény: ceil()Egy elég általános megoldás, amit gyorsan bepötyögtem, kipróbáltam, jó:
$elementsArray = array("Egy","Kettő","Három", "Négy" , "Öt" , "Hat" , "Hét" , "Nyolc" , "Kilenc" , "Tíz", "Alma" , "Dió" , "Mák" ,"Körte" , "Cseresznye"
, "asd", 'asd', 'qwe', 'retkljwer', 'xycbm'
);
$nrOfElements = count($elementsArray);
// szükséges listaelemek száma
$nrOfNeededListElements = 5;
// szükséges oszlopok száma
$nrOfNeededColumns = 3;
$nrOfNeededRows = ceil($nrOfElements/($nrOfNeededListElements*$nrOfNeededColumns));
// $nrOfCellsToFill = ceil($nrOfElements/$nrOfNeededListElements);
$nrOfElementsPrinted = 0;
echo '<table class="list-items-table">';
for($row = 0; $row < $nrOfNeededRows; $row++){
// sor
echo '<tr>';
for($cell = 0; $cell < $nrOfNeededColumns; $cell++) {
// <td>-t mindenképp kiírjuk, üresen is (bár elvileg nem feltétlenül muszáj)
echo '<td>';
// akkor írjuk csak ki az <ul>-t, ha szükséges
if($nrOfElementsPrinted < $nrOfElements) {
echo '<ul class="list-items">';
for($i = 0; ($i < $nrOfNeededListElements) && ($nrOfElementsPrinted < $nrOfElements); $i++) {
echo '<li>';
echo $elementsArray[$nrOfElementsPrinted];
echo '</li>';
$nrOfElementsPrinted++;
}
echo '</ul>';
}
echo '</td>';
}
echo '</tr>';
}
echo '</table>';Azért jó, hogy általános, mert változtathatod benne ezt a két változót:
$nrOfNeededListElements = 5;
$nrOfNeededColumns = 3;így az elsővel meghatározhatod, hány listaelemre lesz szükséged (neked most 5 kellett), a másodikkal pedig azt, hogy hány oszlopra van szükséged (itt 3). Ha átállítod másra, úgy is működőképes.
Itt láthatod, mi lesz a kimenet (egy sorba pakolja, ezzel most nem foglalkoztam, hogy legyen elválasztva a kódban sortöréssel - lásd PHP_EOL):
Ergo így fog kinézni, ide bemásoltam a kimenetet:
http://jsfiddle.net/JH48Z/3/ -
DNReNTi
őstag
válasz
Andoidtibi #13418 üzenetére
Így nézne ki szerintem a legegyszerűbb táblás megoldás, természetesen ez most fixen 3 oszlop 5 sort jelenít meg, 15 elemmel.
Talán kiindulási alapnak jó lesz.
$elemek = array("Egy","Kettő","Három", "Négy" , "Öt" , "Hat" , "Hét" , "Nyolc" , "Kilenc" , "Tíz", "Alma" , "Dió" , "Mák" ,"Körte" , "Cseresznye");
sort($elemek);
$szamlalo = 0;
echo '<table>';
for ($i = 1; $i <= 5; $i++) {
echo '<tr>';
for ($j = 1; $j <= 3; $j++) {
echo '<td>'.$elemek[$szamlalo].'</td>';
$szamlalo++;
}
echo '</tr>';
}
echo '</table>'; -
DNReNTi
őstag
válasz
Andoidtibi #13418 üzenetére
Szia,
Én először eldönteném hogy táblázatba vagy listába akarom kiíratni.
Esetedben talán egyszerűbb a táblázat, viszont szebb megoldás listával, mely megjelenését nem a kiíratás hanem a css határozná meg.Megírom gyorsan a táblást.
-
Andoidtibi
csendes tag
Sziasztok szeretnék egy olyan kérdéssel hozzátok fordulni ami ebben a kódban rejlik
Ezt a Tizenöt tömb elemet szeretném úgy ki íratni <ul>-ben hogy 3 oszlop legyen és ötösével listázza
<?php
$elemek=array("Egy","Kettő","Három", "Négy" , "Öt" , "Hat" , "Hét" , "Nyolc" , "Kilenc" , "Tíz", "Alma" , "Dió" , "Mák" ,"Körte" , "Cseresznye");
sort( $elemek );print '<table>';
for($c=0;$c<count($elemek);$c++){print '
<ul>'.$elemek[$c].'</ul>
';
}
print'</table>';?>
-
spammer
veterán
válasz
Peter Kiss #13415 üzenetére
Köszi
Azt hittem, valami bonyolultabb dolog lesz
-
Speeedfire
félisten
válasz
DeltaPower #13413 üzenetére
Az adatbázis utf-8-ban van természetesen.
-
spammer
veterán
Ezzel a kóddal keresek text fájlban [link], a keresendő kifejezést egy input mező adja át (tehát $needle = $_POST['search'])
A problémám az, hogy case-sensitive a cucc, tehát be beírom, hogy "mogyoró", azt nem találja meg, de a "Mogyoró"-t igen (nagy kezdőbetűvel), mert úgy szerepel a text fájlban.
Hogyan tudnám a fentebb linkelt kódban megadni, hogy ne tegyen különbséget kis és nagybetű között?
strtolower($needle) nem jó, mert az ugye csak lowercase-re konvertálja a keresendő szót, de attól még a text fájlban ha nagy kezdőbetűs a szó, akkor nem találja meg.
-
DeltaPower
addikt
válasz
Speeedfire #13412 üzenetére
Az adatbázist. Vagy az már utf-ben van?
-
Speeedfire
félisten
válasz
DeltaPower #13411 üzenetére
Milyen forrásra gondolsz?
-
DeltaPower
addikt
válasz
Speeedfire #13410 üzenetére
Az nem járható, hogy a forrást konvertálod utf-be?
-
Speeedfire
félisten
válasz
DeltaPower #13407 üzenetére
Én is hasonlókat láttam. Mivel varchar4000 a legtöbb, emiatt sokat magát az oci8 fájlt forgatták le ismét azzal a módosítással, hogy ezeket a ba varchar4000-reket levágják és nem csordul túl.
Az error kérdés még mindig érdekes, nem találtam rá eddig értelmes megoldást. Pedig biztos van valami amivel le tudom tiltani a yii error kezelését.Mindenesetre ezt a dolgot rövidre zártam azzal a megoldással, hogy az excel-t az oracle generálja le nekem egy blob mezőbe amit kistream-elek magamnak. Így nem gond az 50-100k sor sem.
-
spammer
veterán
válasz
PiXeL90 #13408 üzenetére
Köszi, azóta már megoldottam, csak elfelejtettem beírni. Amúgy lehet, hogy rosszul fogalmaztam meg, mert nem csak egyszerűen szűrni akartam az eredményt (listát) egy If-fel, hanem ha az adott fájl adott sora = feltétel, akkor listázza a fájlokat és a kívánt tartalmukat. Kicsit bonyolult így, de a lényeg, hogy már megoldódott
-
DeltaPower
addikt
válasz
Speeedfire #13406 üzenetére
Ha jól értettem a google találatok közt olvasottakat, ez a "buffer" félrevezető. A problémát az okozza, hogy a single byte char adatot multibyte char adattá konvertálod/konvertálódik fetchAll-nál, akkor az eredeti bináris méreten túlcsordulhat, erre viszont buffer overflowot jelez. A yii pedig lehet hogy a buffer overflowot hackelési kísérletnek veszi és inkább elszáll 500-al, vagy ha valami security plugin van telepítve, az is ráugorhat.
-
Speeedfire
félisten
válasz
Sk8erPeter #13404 üzenetére
Nem tudom, nem igazán találtam rá ilyen megoldást, de lehet én keresem rossz helyen. Pedig az elvileg csak egy warning. Érdekes, hogy pl a PDO-ban sem tudom beállítani ezt a buffer értéket.
A warning kidobja, hogy le lesz vágva, ez még nem is lenne nagy gáz. De, hogy emiatt miért lesz error 500!?
Nem értem még egyelőre, remélem holnapra rájövök. -
spammer
veterán
Elakadtam.
Ezzel megkapom minden txt fájlból a 3. sorba írt adatot:
$dir = "articles";
$files = array_reverse(glob($dir."*.txt"));
foreach ($files as $file) {
$open = file($file);
$line = $open[2];
echo $line . "<br>";
}Például ezeket az adatokat kapom meg:
kék
zöld
sárga
piros
zöldHogyan tudom megadni, hogy csak azokat a fájlokat listázza, amiknek a 3. sorában ($line=$open[2]) az van, hogy "zöld" ?
Hova és hogyan kellene erre feltételt írni?
-
Sk8erPeter
nagyúr
válasz
Speeedfire #13399 üzenetére
Ebben a formában azért ez elég furcsa... Nem is tudod felülbírálni? Mert ez alapján olyan, mintha komolyabb hibákra nem dobhatnál egy szép felhasználóbarát hibaoldalt, hanem majd a Yii szépen megmondja, hogy itt aztán gáz van, de feltételezem, azért ezt megoldották valahogy, elég régi keretrendszerről van szó...
-
Sk8erPeter
nagyúr
válasz
don.racz #13400 üzenetére
Sok szerencsét hozzá, de azért ez itt nem így működik. Inkább úgy, hogy leírod szépen a komplett problémát, mutatsz példakódot, megmutatod, mire jutottál eddig, aztán megpróbálunk segíteni. De a fórum nem privát segítség-megoldásokra, meg egyéni Skype-olásokra való. Tiszteld mások szabadidejét is.
-
Peter Kiss
őstag
válasz
Speeedfire #13399 üzenetére
Az gáz azért.
-
Speeedfire
félisten
Még mindig PDO OCI kapcsolat. Adott egy tábla ~150 mezővel, a legtöbb varchar2(4000) és ha nyomok egy fetchAll()-t akkor a fenti hiba jön elő. Ezt nem lehet valahogy mellőzni, megnéztem és a legnagyobb mezőben ~500 karakter van.
Új hozzászólás Aktív témák
- Intel Core i7 6700K / GTX 1660TI / 16GB DDR4 RAM / 500 GB SSD konfig eladó
- Samsung Galaxy S23 128GB, Kártyafüggetlen, 1 Év Garanciával
- Samsung Galaxy A53 5G 128GB, Kártyafüggetlen, 1 Év Garanciával
- Megkímélt állapotú Xbox Series X 1TB eladó. Kitisztítva és újrapasztázva!
- Gamer PC - i5 13400F, GTX 1080ti és 16gb DDR5
- ÁRGARANCIA!Épített KomPhone Ryzen 7 7800X3D 32/64GB RAM RX 9070 16GB GAMER PC termékbeszámítással
- Csere-Beszámítás! Felsőkategóriás számítógép PC Játékra! I9 13900KF / RTX 4080 / 32GB RAM / 1TB SSD
- SZÜNETMENTES TÁPOK
- Csere-Beszámítás! Olcsó RTX Gamer Laptop játékra! I5 11400H / RTX 3050Ti / 16GB DDR4 / 512GB SSD
- Eredeti Lenovo 300W töltők - ADL300SDC3A
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: CAMERA-PRO Hungary Kft
Város: Budapest