Jump to content

PHP koda pārveidošana.


kaqp
 Share

Recommended Posts

Vai tu prastu veikt iekrāsošanu, ja tev būtu dots gala html kods? Lūdzu, iemet pašreiz radīto html un to, kādu tu vēlētos iegūt. Pēc tam skatīsiesimies, kurā vietā veikt izmaiņas.

 

Edit. Taču tas nav tavs html kods. OK, jautājums - vai tu proti darboties ar html un css?

Labots - jx
Link to comment
Share on other sites

(labots)

Jā es protu html + css.

Šo izveido šis kods:

 

»» kaqp - 206

»» madebymama - 140

»» Saphire - 12

»» m0nty - 6

»» genacvale - 3

»» muzons - 1

 »» kaqp - 206 <br> »» madebymama - 140 <br> »» Saphire - 12 <br> »» m0nty - 6 <br> »» genacvale - 3 <br> »» muzons - 1 <br>

 

Bet kā lai kods izceļ visus kam ir pāri 200 ar <b> un visus kam ir paari 100 ar <i>

 

»» kaqp - 206

»» madebymama - 140

»» Saphire - 12

»» m0nty - 6

»» genacvale - 3

»» muzons - 1

Labots - kaqp
Link to comment
Share on other sites

if (rezultāts lielāks par 200)
liekam tekstu span tagos ar atribūtu class="izcelt"

 

un iekš CSS ierakstam

span.izcelt {
font-weight: bold;
   }

Link to comment
Share on other sites

pamēģini šo

function generate_bestusers()
{
global $bytes,$WWW;
$sql = @mysql_query("select uploader, count(uploader) as cnt from m3_mp3 where active=1 group by uploader order by cnt DESC LIMIT 100");
if ($sql && @mysql_num_rows($sql)>0)
{
	$i=0;
	$to_file="";
	while ($row = @mysql_fetch_array($sql, MYSQL_ASSOC))
	{
		$i++;
		$number=$row['id'];
		$row_html = " »» " . unsafe_str($row['uploader']) . " - " . 
					unsafe_str($row['cnt']) . " <br />";
		if($row['cnt'] > 200)
		{
			$to_file .= '<strong>' . $row_html . '</strong>';
		}
		elseif($row['cnt'] > 100)
		{
			$to_file .= '<em>' . $row_html . '</em>';
		}
		else
		{
			$to_file .= $row_html;
		}
	}
}
$fp = fopen ("./../html/bestusers.html", "w+");
fwrite ($fp, $to_file);
fclose ($fp);
}

 

Atļāvos nodzēst koda fragmentu, kas neko nedarīja, kā arī smukāk noformēt.

Labots - jx
Link to comment
Share on other sites

(labots)

Milzīgs paldies ! Viss strādā kā nākas ! ;-) :wink: 8)

 

Bet vai tas php kods var ņemt informāciju no diviem mysql tables ?

Piemēram , ja niks ir admins, viņam priekšā būt uzraxtīts admins.

Jā nav grūti lūdzu uzraksti, ofc ja iespējams.

sql:

table = m3_users

nez kā pareizi sauc... row = access

 

access iedalās :

1 - users

2 - admin

Labots - kaqp
Link to comment
Share on other sites

sql:

table = m3_users

nez kā pareizi sauc... row = access

 

access iedalās :

1 - users

2 - admin

 

 

te redzu 1 tabulu un 2 kolonas taja!

 

nevis 2 tabulas, varbut ari parpratu

Link to comment
Share on other sites

(labots)

nu varbūt arī tā , mysql un php nav mana stiprā puse.

Lūk:

 

TABLE `m3_users` (
 `id`
 `login`
 `passwd`
 `age`
 `city`
 `mail`
 `mail_chk`
 `ip`
 `access` <--- ja 1 tad member , ja 2 tad admins
 `www`
 `key`
 `date`
) 

Labots - kaqp
Link to comment
Share on other sites

kaqp

Es varu palīdzēt, ja kaut kas nesanāk. Priekšā saku reti un tikai pirmo reizi - neesmu nekāds bezmaksas darbaspēks, kas tagad visu darīs tavā vietā. Lūdzu, sameklē kādu html un php tutoriāli un mācies. Mēģini kaut ko paveikt pats - ja kas nesanāks, palīdzēsim un parādīsim pareizo virzienu.

Link to comment
Share on other sites

Jā es saprotu, tas ir pēdējais ko jautāju iekš php un mysql. Būšu ļoti pateicīgs ja atbildēsi, bet ja nē, tad nē. PHP esmu mēģinājis apgūt, esmu pat nopircis grāmatas. Bet nu iet kā pa celmiem.

Link to comment
Share on other sites

eMDiiPii

Iesaku autoram virs katras koda rindiņas uzrakstīt - ko tā dara.

Link to comment
Share on other sites

function generate_bestusers()
{   
$access = @mysql_query("SELECT access FROM m3_users");
{
if($access > 1)
{ admin; }
else
{ user; }
}
global $bytes,$WWW;
$sql = @mysql_query("select uploader, count(uploader) as cnt from m3_mp3 where active=1 group by uploader order by cnt DESC LIMIT 100");

if ($sql && @mysql_num_rows($sql)>0)
{
	$i=0;
	$to_file="";
	while ($row = @mysql_fetch_array($sql, MYSQL_ASSOC))
	{
		$i++;
		$number=$row['id'];
		$row_html = " »» " . unsafe_str($row['uploader']) . " - " .
					unsafe_str($row['cnt']) . " <br />";
		if($row['cnt'] > 200)
		{
			$to_file .= '<strong>' .$row_html $access. '</strong>';
		}
		elseif($row['cnt'] > 100)
		{
			$to_file .= '<em>' .$row_html $access. '</em>';
		}
		else
		{
			$to_file .= $row_html;
		}
	}
}
$fp = fopen ("./../html/bestusers.html", "w+");
fwrite ($fp, $to_file);
fclose ($fp);
} 

 

Kas nav pareizi ?

Link to comment
Share on other sites

Nav nepieciešams veik jaunu sql vaicājumu - izmanto jau esošā vaicājuma

$sql = @mysql_query("select uploader, count(uploader) as cnt from m3_mp3 where active=1 group by uploader order by cnt DESC LIMIT 100");

datus.

 

Lai pārliecinātos, ka seko līdzi - lūdzu, parādi, kurās rindiņās esošajā kodā šie dati tiek lietoti?

Link to comment
Share on other sites

if ($sql && @mysql_num_rows($sql)>0)

 

un

 

while ($row = @mysql_fetch_array($sql, MYSQL_ASSOC))

 

?

Link to comment
Share on other sites

eMDiiPii

Piezīme:

Labāk pārbaudīt rezultātu, nevis izmantot @

Respektīvi

<?php
$result=mysql_query("SELECT field FROM table WHERE 1 = 1 ");
if($result === false) exit; //Vai arī throw new exception vai trigger_error ...
?>

Link to comment
Share on other sites

housemouse

Nejauc gaisu :).

 

kaqp

Ļoti jauki. Tagad tajā vietā, kur tiek html kodā ievietots $row['uploader'] kaut kur blakām vajadzētu ielikt, pēc analoģijas, piekabināt klāt $row['access'], vai ne? Lūdzu, pamēģini un ziņo, kā veicas.

 

tiem, kas prot programmēt un grib tūliņ mesties ar labojumiem

kuš! Līdz tam visam nonāksim :).

Link to comment
Share on other sites

$row_html = " »» " . unsafe_str($row['uploader']) . " - " .

unsafe_str($row['cnt']) . " - " . unsafe_str($row['access']) . " <br />";

Link to comment
Share on other sites

eMDiiPii

$access = @mysql_query("SELECT access FROM m3_users");
{
if($access > 1)
{ admin; }
else
{ user; }
}

Ko atgriež mysql_query funkcija ?

 

Koda sākumā ievieto

error_reporting(E_ALL);
ini_set('display_errors', true);

un apskati kļūdu žurnālu ...

 

Ja nelīdz, aizvāc visus @ un tad aplūko kļūdas paziņojumus ...

Link to comment
Share on other sites

housemouse

$access = @mysql_query("SELECT access FROM m3_users");
{
if($access > 1)
{ admin; }
else
{ user; }
}

mēs neaiztiekam - tas pilnīgi un galīgi nepareizs kods. Nodzēšam un aizmirstam.

 

kaqp

Ļoti pareizi - tukša vieta. Vajadzētu parādīt arī kļūdas paziņojumu (skat. housemouse koda otro fragmentu). Tad, kad tu ieraudzīsi kļūdas paziņojumu, izdomāsim, kādēļ tas tur ir un kā to labot.

 

Lūgšu pārējiem īpaši nesteigties ar priekšā teikšanu. Ļausim jaunietim tikt līdzi un procesā ko iemācīties :).

Labots - jx
Link to comment
Share on other sites

(labots)

ievietoju koda sākuma

 

error_reporting(E_ALL);

ini_set('display_errors', true);

 

Nekādu kļūdu man tas neuzrādīja. Mēģināju arī bez @.

 

<?

error_reporting(E_ALL);
ini_set('display_errors', true);

function generate_bestusers()
{
global $bytes,$WWW;
$sql = @mysql_query("select uploader, count(uploader) as cnt from m3_mp3 where active=1 group by uploader order by cnt DESC LIMIT 100");
if ($sql && @mysql_num_rows($sql)>0)
{
	$i=0;
	$to_file="";
	while ($row = @mysql_fetch_array($sql, MYSQL_ASSOC))
	{
		$i++;
		$number=$row['id'];
		$row_html = " »» " . unsafe_str($row['uploader']) . " - " .
unsafe_str($row['cnt']) . " - " . unsafe_str($row['access']) . " <br />";
		if($row['cnt'] > 200)
		{
			$to_file .= '<strong>' . $row_html . '</strong>';
		}
		elseif($row['cnt'] > 100)
		{
			$to_file .= '<em>' . $row_html . '</em>';
		}
		else
		{
			$to_file .= $row_html;
		}
	}
}
$fp = fopen ("./../html/bestusers.html", "w+");
fwrite ($fp, $to_file);
fclose ($fp);
}

?>

Labots - kaqp
Link to comment
Share on other sites

nezinu abu tabulu struktūru, bet izveido tak vienu pieprasījumu ar visu vajadzīgo infu un access katram lietotājam.

Ā, un $bytes, $WWW un $i nafig nav vajadzīgi

Link to comment
Share on other sites

un šādi?

function generate_bestusers()
{
error_reporting(E_ALL);
ini_set('display_errors', true);
global $bytes,$WWW;
$sql = @mysql_query("select uploader, count(uploader) as cnt from m3_mp3 where active=1 group by uploader order by cnt DESC LIMIT 100");
if ($sql && @mysql_num_rows($sql)>0)
{
	$i=0;
	$to_file="";
	while ($row = @mysql_fetch_array($sql, MYSQL_ASSOC))
	{
		$i++;
		$number=$row['id'];
		$row_html = " »» " . unsafe_str($row['uploader']) . " - " .
unsafe_str($row['cnt']) . " - " . unsafe_str($row['access']) . " <br />";
		if($row['cnt'] > 200)
		{
			$to_file .= '<strong>' . $row_html . '</strong>';
		}
		elseif($row['cnt'] > 100)
		{
			$to_file .= '<em>' . $row_html . '</em>';
		}
		else
		{
			$to_file .= $row_html;
		}
	}
}
$fp = fopen ("./../html/bestusers.html", "w+");
fwrite ($fp, $to_file);
fclose ($fp);
}

Link to comment
Share on other sites

(labots)

parādās , tikai html failā

nick - 142 -

 

Notice: Undefined index: id

Notice: Undefined index: access

 

Ir jānorāda kur atrodas access, kā lai to izdaru ?

Labots - kaqp
Link to comment
Share on other sites

OK, neiespringsim uz servera īpatnībām. Tātad - kam vajadzēja notikt. Brīdī, kad tu centies piekļūt $row['access'], vajadzēja izmest kļūdu. Masīvā $row atrodas tikai kolonnas uploader un count ($row['uploader'] un $row['count']). Mums tur nepieciešams iedabūt access - jautājums - kā to paveikt?

 

O, tieši tas, ka vajadzīgs

Notice: Undefined index: id

Notice: Undefined index: access

 

Hint - skaties sql vaicājuma virzienā.

Labots - jx
Link to comment
Share on other sites

(labots)

kā lai es uzzinu to access netaisot jaunu vaicājumu uz mysql ?

Labots - kaqp
Link to comment
Share on other sites

Pārveidojot esošo. Pameklē gūglē, kas ir sql vaicājums, kādas ir tā sastāvdaļas un ko katra no tām dara.

 

Nedaudz piepalīdzēšu, skaistāk un saprotamāk noformējot vaicājumu

SELECT 
`uploader`, count(`uploader`) as `cnt` 
FROM 
`m3_mp3` 
WHERE 
`active` = 1 
GROUP BY 
`uploader`
ORDER BY 
`cnt` DESC 
LIMIT 
100

Labots - jx
Link to comment
Share on other sites

(labots)

( SELECT access from m3_users )

UNION

( SELECT uploader from m3_mp3 )

ORDER BY

 

?

Labots - kaqp
Link to comment
Share on other sites

(labots)

nu kaut kāds bezsakars , esmu baigi apjucis

 

select m3_users.access, m3_mp3.uploaders

from m3_users

left join m3_mp3 on m3_mp3.id = m3_users.id

Labots - kaqp
Link to comment
Share on other sites

OK, viss top ļoti labi. Tas jau gadrīz, gandrīz derēs. Nedaudz pārveidošu, lai iegūtu

SELECT
m3_mp3.uploader, count(m3_mp3.uploader) as cnt, m3_users.access
FROM
m3_mp3
LEFT JOIN 
m3_users
ON
m3_mp3.id = m3_users.id
WHERE
m3_mp3.active = 1
GROUP BY
m3_mp3.uploader
ORDER BY
cnt DESC
LIMIT
100

Ievēro, ka 2. rindiņā ir parādījies mums nepieciešamais access lauks, kā arī - tā kā tagad viena vaicājuma ietvaros lietojam 2 tabulas - katram laukam nepieciešams īpaši norādīt tā tabulu.

 

Izmēģini un ziņo par rezultātiem. Būs jāveic vēl viens solis un tas arī viss.

Labots - jx
Link to comment
Share on other sites

Izveido kontu, vai pieraksties esošajā, lai komentētu

Jums ir jābūt šī foruma biedram, lai varētu komentēt tēmas

Izveidot jaunu kontu

Piereģistrējies un izveido jaunu kontu, tas būs viegli!

Reģistrēt jaunu kontu

Pierakstīties

Jums jau ir konts? Pierakstieties tajā šeit!

Pierakstīties tagad!
 Share

×
×
  • Izveidot jaunu...