kasisppr
-
Posts
70 -
Joined
-
Last visited
Posts posted by kasisppr
-
-
Skaties cītīgāk, iespējams, kaut kāda atšķirība failu nosaukumā, nepareizas tiesības vai kļūdaina atrašanās vieta tomēr ir.
Neapvainojies xfr33, bet tādu dizainu mājas lapām es pēdējo reiz redzēju, kad sāku studēt universitātē un tas bija ~10 gadus atpakaļ.
-
Kā man nepasen stāstīja sens darba kolēģis (pietiekami pieredzējis), ja cilvēks vairs negrib neko jēdzīgu darīt vai arī viņam ir apnicis strādāt, tad viņš kļūst par konsultantu.
-
Vēl viens ieteikums, kurš te ļoti bieži tiek pieminēts, saistībā ar aizsardzību pret SQL injekcijām.
Nepadod pa tiesho $_POST, $_GET mainīgo uz datubāzi bez jebkādas apstādes, vismaz mysql_real_escape_string() vai mysql_escape_string() izmanto stringiem un intval() veseliem skaitlļem.
-
Nja xfr33, palasijos tavus PHP piedzīvojumus. Mans ieteikums, pirms sāc ko jēdzīgu/nopietnu programmēt, palasi kaut kādu grāmatu vai plīdz kādu gudrāku tev izstastīt neskaidrās lietas. Jo tavas pieļautās kļūdas ir diezgan vienkāršas(pat sintaktiskas) un tev šķiet tomēr nav īstas nojēga par dažiem PHP programēšanas pamatprincipiem.
Vienkārši var apnikt tev bakstīt katrā nāmajā sekojošajā kodā ar pirkstu, kur tu pielaid kļūdas.
-
-
Skatos hostinga saits joprojam nav pacelies.
-
Mazliet precizēšanai!
Gribi, lai pēc jaunuma ievadīšanas parāda visas tēmas un iekavās teksts, ja ievadītais jaunums ir pie šīs tēmas vai vispār jebkurš jaunums ir pie šīs tēmas???
Ja pirmais gadījums, tad:
//pienemu, ka jaunums nav vairakas reizes pievienots vienai temai SELECT title, IF(it.id IS NULL, 0, 1) AS tema_izveleta FROM thema t LEFT JOIN izveletas_temas it ON t.id = it.tema_id AND it.jaunums_id = 'svaigi ievadita jaunuma id';
PHP skripta nocheko, ja 'tema_izveleta' == 1 pieliec klat tekstu.
Ja otrais
SELECT id, title FROM thema t ; //visas temas
SELECT DISTINCT(tema_id) FROM izveletas_temas; //temas kuram ir jaunumi
Tālāk PHP scriptā samet abus rezultātus masīvā un veido ko līdzīgu:
foreach($title_rezultati AS $values) { if(in_array($values["id"], $izveletas_temas_rezultati)) $iekavas = " (tema izveleta)"; else $iekavas = ""; echo $values["title"].$iekavas; }
Nu kaut kā tā.
-
Ja piegādāsi kristāla bumbas, varbūt arī pateiksim kā.
-
Pieņemu, ka visas pēdiņas tiešām esi salicis, tāpēc tās kļūdas neapspriedīšu.
if(isset($_GET['page']) && $_GET['page'] == 'results) {..}
elseif(isset($_GET
) && $_GET
== 'results' and $_GET[info]){..}
Neredzu iemeslu, lai tev vispār kaut reizi izpildītos elseif nosacījums, ja $_GET['page'] = 'result' un pat ir kaut kāda $_GET['info'] vērtība.
Nostrādās IF nosacījums un viss.
Vai nu maini elseif ar if vietām, vai būvē citu loģiku.
-
Pats esmu veidojis ko līdzīgu.
Problēma kā jau minēja ir ar IE, jo tas neatbalsta onmouse eventu option elementiem.
Diemžēl vienkāršu risinājumu šai problēmai nav.
Variants ir vai nu tu viltīgi pārveido selectu par tabulu vai div elementiem, kuriem onmouse events IE ir atļauts, un operē ar tiem.
Izdomā vai tu to tiešām tik ļoti gribi?
-
Nu lūk, dzīvs piemērs, kāpēc dažreiz labāk izmantot
INSERT INTO table (col1, col2, ...) VALUE (col1_value, col2_value, ....);
nevis
INSERT INTO table (col1_value, col2_value, ....);
Pirmajā gadījumā pastāv iespēja, ka kods nav jāmaina, ja pieliec papildus kolonas, taču otrā bez izmaiņām kverijā neiztiksi.
-
Nu tā:
1) NEKAD pa tiešo bez apstrādes nepadod _POST, _GET, _REQUEST mainīgos MySQL querijam, it sevišķi, ja tie ir "stringi" tipa.
Tas ir ļoti nedroši, vismaz apstrādā ar mysql_escape_string();
Uzmini, kas notiks, ja es Tev $_POST['meklet'] padošu, piemēram, kā "xxx'; DROP TABLES; SELECT 'A tabulu vairs nav!!!"???
2) centies izvairīties no LIKE '%'xxx%' sintakses. Tas strādās ilgāk un pie liela datu apjoma tas būs jūtams. Varbūt kādā no taviem gadījumiem der arī LIKE 'xxx%', jo tad var arī noindeksēt attiecīgo tabulas kollonu, kas paātrina meklēšanu.
3) ja tev ir vairāk par 2 scenārijiem uz 1 vērtību, varbūt ir vērts padomāt izmatot nevis IF .. ELSEIF .. ELSE .., bet switch sintaksi.
switch $tabula { case 'lietotajs': { //kods break; } case 'komanda': { //kods break; } default: { //kods break; } }
4) vienā vietā kodā tu nodefinē mainīgos $kas un $kas2, bet kur tu tos izmanto, jo tālāk kodā tie neparādās?
-
Ja MySQL-ā vēlies izpildīt vairākus pieprasījumus vienā piegājienā, tos jāatdala ar semikolu;
... ) ENGINE=MYISAM DEFAULT CHARSET=latin1; CREATE TABLE ...
-
Kā jau Vebers teica, ērtāk ir izmantot CSS first-letter pseido elementu.
-
Nu bet linki tak tev kāreiz ari ved uz lang.php, par ko brīnies?
Ja vien pašos lang.php failos nav kods, kas noved atpakaļ uz lapu, no kuras klikšķināji, tad tā tam jābūt.
-
Es nekad neesmu manījis, ka forma vispār nosubmito zem $_post[] arī pati savējo <form> tagu vērtības.
Ieliec kaut ko tādu kā <input type="hidden" name='dzeest_sevi' value="...(tava vertiba)...." />
P.S.
Andrisp jau pasteidzas ar skaidrojumu.
-
Ko tad Tev īsti vajag galu galā?
-
Esi pārliecināts, ka tiec līdz dzēšanas kodam?
Esi mēģinājis izdrukāt to SQL kveriju un palaist uz datubāzes?
P.S.
Maz ticams, ka tā varētu būt, bet iespējams.
Ja nu tomēr viss ir PAREIZI, bet ieraksts nepazūd.
Man ir gadījies, ka pie vainas ir MySQL menedžeris, kurā ir atvērta attiecīgā tabula, kuru mēģinu caur aplikāciju rediģēt.
Bet maz ticams.
-
Izskatās pēc "Iedod gatavu kodu" tēmas.
Bet kas tev nepatīk sortēšanā izmantojot masīvu, turklāt tu sortē tikai pēc viena parametra - datuma.
Nezinu pat citu variantu, jo failus nolasi no direktorijas.
$arrFiles = array(); if ($handle = opendir($demodir)) { while (false !== ($file = readdir($handle))) { if(stristr($file, $shodienaa4) !== FALSE) { $dat = strstr($file , '-'); $datums = substr($dat, 3); // taa, kaa nepacenties iedot failu nosaukumus, pieņemu ka datums ir kaut kur te plus ar vel kaut kaadu drazu gala $arrFiles[$datums] = $file; } } closedir($handle); if(!empty($arrFiles)) { ksort($arrFiles); foreach($arrFiles AS $dat1 => $text) { $laiks = substr($dat1, 5, 4); $karte = substr($dat1, 10, -5); $st = substr($laiks, 0, 2); $min = substr($laiks, 2, 2); echo "<tr><td>".$st.":".$min."</td><td style='text-transform:lowercase'>".$karte."</td>"; echo"<td><a href='http://clan.lv/demos/".$text."'>Novilkt</a></td></tr>"; } }
Nu tāds ir mans ķep-ļep ātrais variants.
Ideja skaidra??
-
Mana nīstākā poga ir browser "Back", jo tas ir praktisks ekvivalents history.back() funkcijai.
Lai tā nostrādātu saglabājot iepriekšējās vērtības, jāpievieno PHP hederis:
header("Cache-Control: private");
vai ari meta tags HTML koda
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="PRIVATE">
Bet principa labāk glabāt tos sessijās ka jau piedāvāja iepriekš.
-
Mjaa, nostrādāja tas "freek" variants. Nezinaju, kaut ko tādu MySQL spēj sagremot
-
Un kur problēma vaicājumā jau saskaitīt?
Select .. from .. where .. order by (saskaitam) asc/desc
Nu nez "problēma" varētu būt tur, ka rezultāti tabulā "cw_rezultati" ir jāsaskaita, tie tam 2x.
Diemžēl topika autors nav pacenties izskaidrot kāda ir tabulas struktūra un kā tajā tiek glabāti dati, bet kristāla bumbas tagad dārgas un deficīts.
Varbūt Tev ir idejas kā dabūt tos atbilstošo komandu "punktus" (piedevām apstrādātus pēc tām formulām) klāt tai vienā kverijā kā kolonu
SELECT id, komandas_valsts, komandas_nosaukums, komandas_tags FROM komandas ORDER BY 'id' DESC
Ja jā, tad tiešām nav problēma izmantot tavu piemēru.
Taču es šobrīd ātrāko variantu redzu glabāt visu masīvos un operēt ar tiem.
-
Nu tad labo!
Bet ideju vismaz saprati, kāpēc nestrādāja un kā vajadzētu veidot?
-
Pag, nu ja tu esi nomainījis kveriju uz
SELECT user_level FROM users WHERE login='$_POST['login']'
,
tad spiežot uz to tavu linku, kas aizved uz logout.php, aplikācija atgriežas index.php ar tukšu $_POST['login'] vērtību. un ja vien tev datubāzē nav kāds lietotājs ar login lauka vērtību '' (tukšums) , SQL kverijs tev atgriezis 0 rindas un nekas no tava while(){} ciklā esošā koda neizpildīsies. Drīzāk raksti kaut ko līdzīgu
$user_login = !empty($_POST['login']) ? $_POST['login'] : $_SESSION['login']; $result = mysql_query("SELECT * FROM users WHERE login='$user_login'"); $row = mysql_fetch_array($result) if($row) { while($row) { if($row['user_level'] == 2) { // ja pakaape2 - tad ir moderators} else if($row['user_level'] == 3) { // ja pakaape 3 - tad ir administrators} else { // ja pakaape 1 - tad ir lietotaajs} //kaut kadu pakapi varbut tomer vajag iedot by default } } else { // te nak tava login forma }
P.S. tu $_POST['login'] rakstīji "login" pēdiņās??? Jo parādītajā SQL kverija piemērā tādu nav.
P.S.S. par koda sintaksi neesmu drošs, jo esu pieradis izmantot ADODB SQL pieprasijumiem.
Kā lai ievieto lietotāj vārdu datubāzē un pectam izvilkt to ārā..
in PHP un PHP :)
Posted
Neesmu pārliecināts, bet, ja mainiji SQL, tad
Paskaties ko isti dara mysql_result() 3-ais parametrs.