arpsoft Posted April 11, 2010 Posted April 11, 2010 Az AJAX azért nagyon király, mert aszinkron tud dolgozni. Ha szinkronban akarsz mûködni, akkor mindig meg kell várnod, míg válaszol a szerver és ez - fõleg ott, ahol használni szeretnéd - nagyon zavaró lehet, hiszen addig nem gépelsz második betût,ameddig az elsõ betû alapján a szerver ki nem választotta és vissza nem küldte azt a kétszáz lehetséges szót. De ha aszinkron dolgozol, akkor külön figyelni kell, hogy melyik kérésre jött már válasz, melyikre nem.
kléni Posted April 16, 2010 Posted April 16, 2010 Azt meg lehet tudni, hogy egy tömb értéke az-e, amivel összehasonlítom? Épp arhívumot csinálnék, a legjobb ötletem az volt, hogyha a lekért dátum elsõ 4 száma már szerepel a tömbben, akkor nem adjuk hozzá, ha nem, akkor igen, majd annyiszor ismétlem az egyes éveket, ahány elem van a tömbben. Ha ennél van jobb ötletetek, szívesen fogadom
payskin Posted April 17, 2010 Posted April 17, 2010 Megpróbálom értelmezni: egy tömb értéke az-e, amivel összehasonlítom Erre való az if utasítás. if (tömb értéke == amivel összehasonlítom) { az-e } else { nem az-e } Innentől kicsit elvesztettem a fonalat. Azt értem, hogy van egy tömb meg egy évszám, és hogy benne van-e, de hogy van benne? Értékként? Kulcsként? Ha értékként, akkor in_array, ha kulcsként, akkor vagy array_key_exists vagy isset($tomb[$kulcs]).
kléni Posted April 23, 2010 Posted April 23, 2010 Eléggé furcsa jelenség szemtanúja voltam. Van az oldal, amit most készítek: http://kleni.weboldala.net/index.php?o=blog Épp a hozzászólás enedélyezését csinálgattam. ha kiválasztom a radiogomgot, akkor 1 vagy 0 lesz az uzi oszlop tartalma. Az első 9 bejegyzésnél ki volt választva az engedélyezés, ezért 1 lett a sor uzi cellája. a 10, és 12. bejegyzésnél leárt, így ugye 0. Amikor elküldtem a 10. bejegyzést, nem jelenítette meg, hogy Szólj hozzá! Amikor elküldtem a 11. bejegyzést, megjelenítette a 10, és 11. bejegyzés mellett is hogy Szólj hozzá. A 12. bejegyzés elküldésekor megint nem jelenítette meg. Ha kitörlöm a 11, és 12. bejegyzést, a 10. mellett megint nem jeleníti meg a szöveget. Na most akor hogy van, mi nem jó? Az egész (később rövidített ) kiir(), ami létható az oldalon: function kiir($sql, $kereses){ $keres = mysql_query("SELECT blog.*,COUNT(blog_uzenetek.bid) as uzivan FROM blog LEFT JOIN blog_uzenetek ON (blog.id=blog_uzenetek.bid) ".$vazlat." GROUP BY blog_uzenetek.bid,blog.id ORDER BY blog.id DESC LIMIT ".(($lap*10)-10).",10"); while($sor = mysql_fetch_array($keres)){ echo "uzivan: ".$sor['uzivan']."; uzi: ".$sor["uzi"]; if ($sor["uzivan"] == 0){ if ($sor["uzi"] == 1){ $uzenetek = " | <a href=\"index.php?o=blog&b=b&id=".$sor['id']."#iras\">Szólj hozzá!</a>";}} else{ $uzi = $sor["uzivan"]; $uzenetek = " | <a href=\"index.php?o=$_GET[o]&b=b&id=".$sor['id']."#iras\">".$uzi." hozzászólás</a>";} edit: Most hogy tettem hozzá egy else-t így jó lett, de még mindig nem értem miért van, hisz csak akkor lesz Szólj hozzá, ha egyezik a két érték, és akkor ugye nem egyezik Kitti: most a módosítás nem jó, hasonló a hiba, és ezt sem értjük, főleg, hogy itt mindennek adtam else ágat. Szóval, ha egy bejegyzésnél, aminek nem volt cimke adva, adok egyet, akkor mindegyik mindegyiknek ad. a $id nem lehet a hibás, mivel módosításnál ugyanebből a válozóból nyerem ki az id-t, és az alapján jelenítem meg az űrlapon a szövegeket. $cimkek = ""; $sql = mysql_query("SELECT * FROM blog_cimke"); while ($cimke2 = mysql_fetch_array($sql)){ $szam = $cimke2['id']; if (!empty($_POST["cimke$szam"])){ if ($elsocimke){ $cimkek.="|".$_POST["cimke$szam"]; } else{ $cimkek = $_POST["cimke$szam"]; $elsocimke = 1; }} else{ $cimkek = "";} $cimkek = mysql_real_escape_string($cimkek); mysql_query("UPDATE blog SET cim='".$cim."', szoveg='".$szoveg."', datum='".$datum."', vazlat='".$vazlat."', uzi='".$uzi."', cimke='".$cimkek."' WHERE id='".$id."'");
Pjotr Posted May 7, 2010 Posted May 7, 2010 Látja valaki ebben ennek a hibának az okát? Parse error: syntax error, unexpected '}' in C:\WEBDEV\websites\phm\ubf.php on line 46 <?php if(isset($_SESSION['nev'])) { function tisztit($cEredeti) { $cKeszlet="aábcdeéfghiíjklmnoóöõpqrstuúüûvwxyz0123456789"; $cEredeti=mb_strtolower($cEredeti,"UTF-8"); $nMax=strlen($cEredeti); $cMasolat=""; for($i=0;$i<$nMax;$i++) { $cElem=substr($cEredeti,$i,1); if(stristr($cKeszlet,$cElem)<>"") { $cMasolat.=$cElem; } } $e=Array("ö","ü","ó","õ","ú","é","á","û","í"," "); $em=Array("o","u","o","o","u","e","a","u","i","_"); return str_replace($e,$em,$cMasolat); } include("connection.php"); if($_FILES['pirosfajl']['error'] > 0) { echo $_FILES['pirosfajl']['name']; $file = fopen($_FILES['pirosfajl']['name'],'r'); while(!feof($file)) { $sor = trim(fgets($file)); $piros = 1; $id = -1; $v = mysql_query("SELECT * FROM lista WHERE nev=TRIM('$sor') and state='1'"); if(mysql_num_rows($v) == 1) { while($o = mysql_fetch_assoc($v)) { $piros += $o['piros']; $id = $o['id']; } mysql_query("UPDATE lista SET piros='$piros', up=now() WHERE id='$id' and state='1'"); } else { $url = tisztit($sor); mysql_query("INSERT INTO lista (nev, piros, fekete, up, url) VALUES (TRIM('$name'), '$piros', 0, now(), '$url')"); } } } } ?>
Pjotr Posted May 7, 2010 Posted May 7, 2010 A fenti hibán már túljutottam (user error), most a fájllal van problémája, de talán megoldom.
kléni Posted May 7, 2010 Posted May 7, 2010 == ÕÕ, ezt most mire alapozod? Nem összehasonlítja a két elemet.. Pjort, végülis hogy oldottad meg?
KGigi Posted May 7, 2010 Posted May 7, 2010 Például hogy egy ciklusfeltételbe logikai változó vagy olyan függvény kell, aminek a visszatérési értéke logikai? Bár vannak olyan elfuserált nyelvek, amik értékadásnál ilyen esetben automatikusan igazzal térnek vissza, ezzel szép hibákat lehet gyártani. Ettől persze még lehet, hogy az ott értékadás akar lenni, mivel a $o változó nincs előtte deklarálva, de kiindulásnak nem rossz. Az ember ilyet nem nagyon csinál, hacsak nem tudja pontosan, hogy mit akar. Közben utánanéztem, és ez nem hiba, és valószínűleg azt is csinálja, amit szeretne.
Pjotr Posted May 7, 2010 Posted May 7, 2010 Az a helyzet, hogy 3 géppel dolgozok egyszerre, és már este van.
KGigi Posted May 7, 2010 Posted May 7, 2010 Értem. Amúgy ha tudod, hogy az eredményed egy soros, akkor miért ciklussal olvasol?
Pjotr Posted May 7, 2010 Posted May 7, 2010 Mert több sor van? Egyébként van a kódban hiba (nem emiatt nem ment), $name helyett $sor kell.
KGigi Posted May 7, 2010 Posted May 7, 2010 if(mysql_num_rows($v) == 1) { while($o = mysql_fetch_assoc($v)) { $piros += $o['piros']; $id = $o['id']; } mysql_query("UPDATE lista SET piros='$piros', up=now() WHERE id='$id' and state='1'"); } Egy sorod van.
kléni Posted May 7, 2010 Posted May 7, 2010 Például hogy egy ciklusfeltételbe logikai változó vagy olyan függvény kell, aminek a visszatérési értéke logikai? Hát lehet, én a while-t még csak mysqlbõl kinyerst sorok ismétlésére használtam, ott meg még csak az = -t használtam. Na nem baj, még nem késõ megismerni
Pjotr Posted May 7, 2010 Posted May 7, 2010 Ja, hogy ott. Én még a fájlnál tartok. Azért használok ciklust, mert copy-paste használom a meglévő kódokat, ez meg már megvolt máshol. Még az is kimaradt, hogy az ['error']-nál rossz relációs jel van, plusz fájlolvasásnál a ['tmp_name']-t kellett használni.
KGigi Posted May 7, 2010 Posted May 7, 2010 Ha nem holnapra kell, szerintem aludj rá egyet. Csak szétbarmolod azt is, ami jó. Hidd el, tapasztalat.
Pjotr Posted May 8, 2010 Posted May 8, 2010 Már mûködik, amit szerettem volna. --- Valamerre kérdeztem karakterkódolással kapcsolatban (nem volt 100-as az UTF-. Megoldás a következõ lett (nem, nem latin2, muhahaha). Van egy connection.php állományom, amiben benne vannak az adatbázis-kapcsolathoz szükséges dolgok, ebbe kellett beírnom a következõt: mysql_query("SET NAMES 'utf8'"); mysql_query("SET CHARACTER SET 'utf8'"); Innentõl mindenhol jól jelennek meg a karakterek (adatbázisban utf8_general_ci).
kléni Posted May 16, 2010 Posted May 16, 2010 Valaki érti, az alábbi kódban miért nem megy a csere? function cimkekiir($mit, $cimke3) { $sq2 = mysql_query("SELECT * FROM blog_cimke"); while ($keres2 = mysql_fetch_assoc($sq2)) { $cid = $keres2["id"]; $cimke2[$cid] = $keres2["nev"]; } $cimke = ""; if (!empty($cimke3)) { $cimkeek = explode("-", $cimke3); foreach ($cimkeek as $szam) { $cimke_nev = $cimke2[$szam]; $cimke_link = "index.php?o=c&id=".$szam; $szoveg = preg_replace("/4/iU", "55", $mit); $cimke.= $szoveg." ".$cimke_nev." ".$cimke_link."<br /><br />".$mit."<br />"; } $cimkek = " |".$cimke; } else { $cimkek = ""; } return $cimkek; } Ha $mit-et átírom "4dfgkjgklfjdgkdfjg"-re, akkor megy, kicseréli a 4-et 55-re. A $mit-ben viszont bennevan szintén a 4, ezt a kiírás is mutatja. Kiírásnak ezt kapom: [cimkenev]4 [cimkenev]4 címke1 index.php?o=c&id=4 Ebben kéne cserélni: <a href="[cimkelink]">[cimkenev]4</a>
kléni Posted May 20, 2010 Posted May 20, 2010 Nem tudtok valami olyan függvényt, ami nem az include, de beágyaz egy fájt, és megadhatom úgy, hogy $valami = függvény(fájl.txt)? A file_get_contents nem jó, mert abban nem fut le a php kód Vagy ha valakinek van ötlete, másképp hogy oldajm meg, itt a kód: function menukiir() { global $skinmappa; if (file_exists($skinmappa."menumodul.php")) { $kiir = file_get_contents($skinmappa."menumodul.php"); } else { $kiir = "hiba"; } $sql = mysql_query("SELECT * FROM blog_modul WHERE aktiv='1' AND menu='2'"); while($modul = mysql_fetch_array($sql)) { $tartalom = file_get_contents("modul/".$modul['mappa']."/".$modul['fajl']); $kiir = preg_replace("/\<modul:nev>/iU", $modul['nev'], $kiir); $kiir = preg_replace("/\<modul:mappa>/iU", $modul['mappa'], $kiir); $kiir = preg_replace("/\<modul:tartalom>/iU", $tartalom, $kiir); $kiirr.= $kiir; } return $kiirr; }
kléni Posted May 25, 2010 Posted May 25, 2010 Kaptam egy ilyen hibaüzenetet: Warning: Cannot modify header information - headers already sent by (output started at /var/www/weboldala.net/kleni/www/index.php:681) in /var/www/weboldala.net/kleni/www/index.php on line 36 Nade a 681. sorban semmi nincs, ami meghívná a vissza() függvényt, ami visszairányítana az avatar feltöltése után... Ez van benne: <br />"; Az avatar feltöltése után ez irányítana vissza (881 sor): vissza("index.php?o=beallitas"); Na most, eddig tökéletesen mûködött, nem egyszer simán feltöltötte hiba nélkül. Azóta ahhoz a részhez nem nyúltam. És fõleg nem értem, miért van, mivel az egész kód alapból a head betöltése elõtt van, és máshol tökéletesen mûködik a visszairányítás, és a kód is ugyan az.
payskin Posted May 26, 2010 Posted May 26, 2010 Hát, ha kiírsz valamit a "képernyõre", akár csak egy -t, akkor már nem irányítgathatsz sehova.
kléni Posted May 27, 2010 Posted May 27, 2010 Hmm, ez igaz. A kiírás elé tettem mindenhol a feldolgozást, így megy is. Köszi Viszont, elkezdtem csinálni a lapozást. Tök jól ment, kis kísérletezés után. Az egyetlen gond csak az, hogy egy szóköz akaratom ellenére megjelenik. a kicserélõ kód: $y = 0; for ($x = 1; $x <= $lapok; $x++) { if ( file_exists($skinmappa."lapozas.php")) { $lap = file_get_contents($skinmappa."lapozas.php"); } else { $lap = "<p>A ".$skinmappa."lapozas.php fájl nem található!</p>"; } if (!isset($_GET["l"]) and $y == 0) { $xx = 1; } else { $xx = 0; } $lap = preg_replace("/\<lapozas:link>/iU", "index.php?o=fooldal".$link."&l=".$x, $lap); $lap = preg_replace("/\<lapozas:szam>/iU", $x, $lap); if ($x == $_GET["l"] or $xx == 1) { $lap = preg_replace("/\<lapozas:aktiv>(.*)<\/lapozas:aktiv>/iU", "\\1", $lap); $lap = preg_replace("/\<lapozas:inaktiv>(.*)<\/lapozas:inaktiv>/iU", NULL, $lap); if (!empty($lap) and $lap != "" and $lap !== "" and $lap != NULL and $lap !== NULL and $lap != " " and $lap !== " ") { $tomb[] = $lap; } } else { $lap = preg_replace("/\<lapozas:inaktiv>(.*)<\/lapozas:inaktiv>/iU", "\\1", $lap); $lap = preg_replace("/\<lapozas:aktiv>(.*)<\/lapozas:aktiv>/iU", NULL, $lap); if (!empty($lap) and $lap != "" and $lap !== "" and $lap != NULL and $lap !== NULL and $lap != " " and $lap !== " ") { $tomb[] = $lap; } } $y++; } if(!empty($tomb) and !empty($tomb[1])) { echo "<p>".trim(implode("",$tomb))."</p>"; } A kicserélendõ kód: <lapozas:aktiv><lapozas:szam></lapozas:aktiv> <lapozas:inaktiv><a href="<lapozas:link>"><lapozas:szam></a></lapozas:inaktiv> Az oldal forrása (amit látok): <p>1 <a href="index.php?o=fooldal&l=2">2</a> <a href="index.php?o=fooldal&l=3">3</a></p> A firebugban látottak: http://kleni.weboldala.net/bug.PNG Valakinek tippje, mitõl vannak ott a szóközök?
Pjotr Posted May 27, 2010 Posted May 27, 2010 "Apró" tipp: Ne használj preg_replace-t, str_replace gyorsabb, biztonságosabb.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now