스터디/php - 7

  1. 2015.02.15 천 단위 이상의 숫자에 자동으로 쉼표를 붙여주는 함수
  2. 2013.01.25 [PHP] '뇌를 자극하는 PHP 프로그래밍' 방명록 (2)
  3. 2013.01.24 [PHP] 만들고 있는 방명록
  4. 2013.01.24 [SQL] mysql_data_seek()


가끔 숫자를 계산하는 놈을 만들때 천 단위 이상의 숫자에 쉼표를 붙여주는 작업이 매우 귀찮았었는데

찾아보니 number_format() 함수가 있습니다. 사용법도 매우 간단합니다.


// num = 7503600

$num = number_format($num);

echo $num 

==> 7,503,600


반대로 천 단위 이상의 숫자에 쉼표가 있을때 쉼표를 지워줘야 하는 경우도 매우 간단하며,

이 경우에는 문자열 관련 함수를 이용할 수 있습니다.


$num = str_replace(',' '', $num); // 1. Target 2. Replace 3. Content

echo $num;


Number_format 함수에 대한 자세한 설명은 다음으로

1) http://php.net/number_format

2) http://www.w3schools.com/php/func_string_number_format.asp

2015.02.15 18:01. RSS feed. Trackback 0 came from other blogs. Leave a Response.
Posted in 스터디/php. Top

댓글을 달아 주세요


'뇌를 자극하는 PHP 프로그래밍' 책을 보면서 방명록을 만들었습니다. 주석을 달아 소스공개합니당

물론 아직 미완성입니다. 제가 매일 시간을 조금씩밖에 투자하다보니깐ㅠ 바로바로 책 보지않고 필요한부분만 검색하면서 하다가

정답이 안 나오면 책을 보는식으로 공부하다보니 좀 느립니다, 그래도 이렇게 하면 좀 더 감이 빨리와서...ㅎ


소스가 조금 다르고 제껀 변수나 함수나 페이지나 좀 지저분합니다..ㅎ


[ db_info.php ]

<?php

$conn = mysql_connect("localhost", "root", "password"); // 접속합니다.

mysql_select_db("diary", $conn); // 데이터베이스 이름이 'diary' 입니다.

?>


[ index.php ]

<html>

<head><title>Baby</title></head>

<body><center>

<form name="login" action="diary_main.php" method="POST"> // index 페이지에서 로그인을 합니다.

<table border="2">

<tr>

<td><input type="text" name="login_id"></td>

<td><input type="password" name="login_pw"></td>


<td><input type="submit" value="로그인"></td>

</tr>

</table>

</form>

</body>

</html>


[ diary_main.php ] 

<?php

include "db_info.php";

include "diary_login_.php";


$querylist = "SELECT * FROM guestbook ORDER BY id desc;"; // 게시글을 오름차순으로 받아와 정렬합니다.

$results = mysql_query($querylist, $conn);

$total = mysql_affected_rows(); // 받아온 쿼리의 총 행 수

//$rows = mysql_fetch_array($results);

$pagesize=3;

$pagestart=0;

?>

<html>

<head><title>다이어리</title></head>

<body>

<form action="diary_write.php" method="POST" name="write"> // 작성 테이블 입니다.

<table border=1>

<tr>

<td align="center">이름</td><td><input type="text" name="name"></td>

<td align="center">비밀번호</td><td><input type="password" name="pass"></td>

<td rowspan="3" align="center"><input type="submit" value="작성"></td>

</tr>

<tr>

<td colspan="4">

<textarea name="content" cols="80" rows="5"></textarea>

</td>

</tr>

</table>

</form>

----------------------------------------------------------------------------------

<br><br>

<?php

for($i=$_GET[no]; $i<$_GET[no] + $pagesize; $i++)

{

if ( $i < $total ) // 여기서 작성한 것과 총 행 수를 비교하여 오류가 나지 않게 합니다.

{

mysql_data_seek($results, $i);

$rows = mysql_fetch_array($results); // 레코드셋을 연관배열 형태로 저장합니다.

?>

<table border="1" width="500" height="60">

<tr height="30">

<td align="center">No. <?=$rows[id]?></td>

<td align="center">작성자 : <?=$rows[name]?></td>

<td rowspan="2" width="50"><center>

<a href="delete.php?id=<?=$rows[id]?>">삭제</a></td> // 삭제하기 위해 id 를 전송합니다.

</center>

</tr>

<tr>

<td align="center" colspan="2"><?=$rows[content]?></td>

</tr>

</table>

<?php

echo "<br>\n";

}

}

$back = $_GET[no] - $pagesize; // 전페이지

$next = $_GET[no] + $pagesize; // 앞페이지 - 이 부분은 어떻게 구현해야될지 몰라 책을 뺏겼습니다..ㅠ-ㅠ

if ($back >=0){

echo "<a href='$_SERVER[PHP_SELF]?no=$prev'>이전&nbsp;&nbsp;</a>";

}

if ($next < $total){

echo "<a href='$_SERVER[PHP_SELF]?no=$next'>다음</a>";

}

?>

</body>

</html>


[ diary_login_.php ]

<?php

include "db_info.php"; 

$query = "SELECT count(*) FROM users where login_id = '$_POST[login_id]' && login_pw = '$_POST[login_pw]'";

$result = mysql_query($query, $conn); // 로그인검사 -> 메인페이지에서 인클루드하여 사용함

$row = mysql_fetch_array($result);


if($row[0] == 1)

{

echo "<center><br><br>";

echo "로그인에 성공하셨습니다. $_POST[login_id]님.<br>";

echo "<br><br>";

}

else

{

echo "<center><br><br>";

echo "로그인에 실패하셨습니다. $_POST[login_id]님.<br>";

echo "<br><br>";

}

?>


[ diary_write.php ]

<?php

include "db_info.php";

$query = "INSERT INTO guestbook ( name, pass, content ) VALUES ( '$_POST[name]', '$_POST[pass]', '$_POST[content]' )";

mysql_query($query, $conn); // 작성합니당

?>

<script>

alert("글을 성공적으로 작성하셨습니다.");

location.href = "diary_main.php";

</script>


[ diary_delete.php ]

<?php

include "db_info.php";

$query = "DELETE FROM guestbook WHERE id='$_GET[id]'"; // 앞서서 보냈던 id 데이터를 받아와 삭제합니다.

$result = mysql_query($query, $conn);

?>


<script>

alert("정상적으로 삭제되었..을 겁니다!?");

location.href = "diary_main.php";

</script>


세션을 이용한 로그인 유지 (쿠키는 이미 시도해봄)

이제 필요한건 글이 많을경우 쿼리를 너무 많이 받아오면 무리가 생길 수 있으므로 제한을 두는 기능과

게시글을 삭제할때 비밀번호를 검사하고

게시글을 삭제하면 id 또한 정상적으로 초기화가 되게 하고

디자인을 꾸미고

보안을 다지고


이렇게만 하면 될것같네요, 나머지 보안 쪽 공부는 여러 PHP 워게임 풀어가면서 하면 될것같습니다.

HTML, CSS 는 대충 알고 하니깐 이제 빨리 JSP 공부하는 일만 남았군요... 그나저나 JSP 공부하면 윈도우8 앱 개발해봐야겠어요 ㅎㅎㅎ

2013.01.25 12:14. RSS feed. Trackback 0 came from other blogs. Leave a Response.
Posted in 스터디/php. Top

댓글을 달아 주세요

  1. 맞짱섯다

    http://killer.96.it

    대 박 세 일 중 입니다

    2017.02.05 15:19 신고  ×  +
  2. 맞짱섯다

    http://killer.96.it

    대 박 세 일 중 입니다

    2017.02.05 17:19 신고  ×  +


웹에는 별로 관심이 없던터라 놓고 있었는데 최근에 뜻밖에 일이 생겨 PHP 를 공부하게되었다.

그리고 PHP 로 방명록을 만들고있다.




여기 나와있는 기능들은 모두 이미 구현을 했지만 완성도가 매우 부족한건 현실... 모두 이론만 보고 어찌어찌 구현해낸건데...

중요한건 일단 책 보기 싫어서 끙끙 앓다가 도대체 어찌 해야되지 하면서 책을 보고 구현해낸 기능들에 대하여

좀 더 높은 이해를 하고 보안적인 측면을 고려해보고 (어쩌다 맡은 프로젝트에서 보안적인 말을 하게될 경우가 높아져서,)

마무리로 완성도를 높혀 좀 거대하게 완성해보려고 한다.


예를 들면 SNS 처럼?! 그래서 가능만하다면야 우리 동아리나 교내 SNS 로 활용하고 싶은 욕심이 생긴다.

화이티이이이잉


2013.01.24 18:06. RSS feed. Trackback 0 came from other blogs. Leave a Response.
Posted in 스터디/php. Top

댓글을 달아 주세요


mysql_data_seek($result, $row_number)


결과 레코드셋에서 레코드를 첫번째 행위치로 이동시킨다. $result 는 수정할 레코드셋이며 $row_number 은 이동시킬 행 위치다.

예를 들면 데이터를 번갈아 출력하고 싶을경우 다음과 같이 응용이 가능하다.


for (i=0, i<10, i++)

{

mysql_data_seek($result, $i);

echo "$result"; (예시일뿐, 물론 이렇게 사용되는건아님)

}


이렇게될경우 앞에서 result 를 쿼리문을 이용해 결과가 나오게 했을 경우 해당되는 행에 있는 내용을 출력하게 할 수 있다.

2013.01.24 17:04. RSS feed. Trackback 0 came from other blogs. Leave a Response.
Posted in 스터디/php. Top

댓글을 달아 주세요