2025๋…„ 07์›” 18์ผ
DevStory

๐ŸŽฏ HTML๋กœ ์‹œ์ž‘ํ•œ ๋‚˜์˜ ๋กœ๋˜์ธํฌ ์›นํŽ˜์ด์ง€ ๋งŒ๋“ค๊ธฐ~

1์ฐจ ํ”„๋กฌํ”„ํŠธ : ํ™ˆํŽ˜์ด์ง€ ๋งŒ๋“œ๋Š” ๊ธฐ์ˆ ์ธ html ์„ ์ž‘์„ฑํ•ด์„œ ๋กœ๋˜645 ๋‹น์ฒจ๋ฒˆํ˜ธ ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค์—ˆ๋˜ ๊ฒฝํ—˜์„ ๋ธ”๋กœ๊ทธ ๊ธ€๋กœ ์ž‘์„ฑํ•˜๋ คํ•ด. “””1. <html>hello~ world </html> ๋กœ ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ์ˆซ์ž๋ฅผ ์ถœ๋ ฅ 2. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ด์šฉํ•ด์„œ ๋žœ๋ค ์ˆซ์ž 6๊ฐœ ์ถ”์ถœํ•ด์„œ ๋ฝ‘๋Š” ๋ฐฉ๋ฒ• 3. ๋™ํ–‰๋ณต๊ถŒ ์‚ฌ์ดํŠธ์—์„œ ๋‹น์ฒจ๋ฒˆํ˜ธ ๋ฐ์ดํ„ฐ csv๋กœ ๋ฐ›๋Š” ๋ฐฉ๋ฒ•, 4. ๋ฐ์ดํ„ฐ๋ฅผ mariadb๋ฅผ ์ด์šฉํ•ด์„œ query ๋งŒ๋“ค์–ด ๋„ฃ๋Š” ๋ฐฉ๋ฒ• 5. ์ถ”์ถœํ•œ ๋ฐ์ดํ„ฐ๋ฅผ table์„ ์ด์šฉํ•ด์„œ ํ‘œ์‹œํ•˜๋Š” ๋ฐฉ๋ฒ• 6. bootstrap5 ๋ฅผ ์ด์šฉํ•ด์„œ ์ˆซ์ž์— ์›ํ˜• ์ƒ‰๊น”์„ ๋„ฃ๋Š” ๋ฐฉ๋ฒ•””” ์„ ์ดˆ์‹ฌ์ž๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ์ž์„ธํ•˜๊ณ ๋„ ์นœ์ ˆํ•œ ๋งํˆฌ๋กœ ์ž‘์„ฑํ•ด ์ค˜.

 

2์ฐจ : (1์ฐจ๊ฒฐ๊ณผ๋ฅผ)์›Œ๋“œํ”„๋ ˆ์Šค ๋ธ”๋ก์œผ๋กœ ์žฌ๊ตฌ์„ฑ ํ•ด์ค˜.


๐ŸŽฏ HTML๋กœ ์‹œ์ž‘ํ•œ ๋‚˜์˜ ๋กœ๋˜์ธํฌ ์›นํŽ˜์ด์ง€ ๋งŒ๋“ค๊ธฐ

์•ˆ๋…•ํ•˜์„ธ์š”! ์˜ค๋Š˜์€ ์ œ๊ฐ€ ์ฒ˜์Œ์œผ๋กœ ๋กœ๋˜์ธํฌ ์›นํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“œ๋Š” ๊ณผ์ •์„ ๊ณต์œ ํ•ด ๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
์ดˆ๋ณด์ž ๋ถ„๋“ค๋„ ์‰ฝ๊ฒŒ ๋”ฐ๋ผ์˜ฌ ์ˆ˜ ์žˆ๋„๋ก HTML + JS โ†’ ๋ฐ์ดํ„ฐ โ†’ DB โ†’ ํ…Œ์ด๋ธ” ์ถœ๋ ฅ โ†’ Bootstrap ๋””์ž์ธ๊นŒ์ง€ ์ฒœ์ฒœํžˆ ์„ค๋ช…๋“œ๋ฆด๊ฒŒ์š”. ๐Ÿ˜Š

(์ด๋ฐฉ๋ฒ•์œผ๋กœ ๋งŒ๋“ค๊ณ  ์กฐ๊ธˆ ๋‹ค๋“ฌ์€ ๊ฒฐ๊ณผ ์‚ฌ์ดํŠธ๋Š” :ย  https://www.tegine.com/lottoinfoย  <— ์—ฌ๊ธฐ์ž…๋‹ˆ๋‹ค~)


1๏ธโƒฃ <html>hello~ world</html> ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ธฐ

์ฒ˜์Œ์—” ์ด๋ ‡๊ฒŒ ๋‹จ์ˆœํ•˜๊ฒŒ ์‹œ์ž‘ํ–ˆ์–ด์š”.

๋ฉ”๋ชจ์žฅ, vscode, ๋‹จ์ˆœํ•œ ํŽธ์ง‘๊ธฐ ๋ชจ๋‘๋ชจ๋‘ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ด์š”~

<html>
  hello~ world
</html>

ํ•˜์ง€๋งŒ ์‹ค์ œ ์›นํŽ˜์ด์ง€์—์„œ๋Š” ์•„๋ž˜์ฒ˜๋Ÿผ ๊ธฐ๋ณธ HTML ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์•„์š”:

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <title>๋กœ๋˜์ธํฌ ํŽ˜์ด์ง€</title>
</head>
<body>
  <h1>Hello~ Lotto World!</h1>
</body>
</html>

lottoinfo.html์ด๋ผ๊ณ  ํ˜„์žฌ๊นŒ์ง€์˜ ์ž‘์—…๋ถ„์„ ํŒŒ์ผ๋กœ ์ €์žฅํ•˜๊ณ ,

ํฌ๋กฌ์ด๋‚˜, ์‚ฌํŒŒ๋ฆฌ, ์—ฃ์ง€๋“ฑ ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋„์›Œ๋ณด๋ฉด “Hello~ Lotto World!”๊ฐ€ ๋”ฑ ๋ณด์ž…๋‹ˆ๋‹ค. ๐Ÿ˜Š

 

 


2๏ธโƒฃ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๋žœ๋ค ์ˆซ์ž 6๊ฐœ ๋ฝ‘๊ธฐ

๋‹ค์Œ ๋‹จ๊ณ„๋Š” 1๋ถ€ํ„ฐ 45 ์‚ฌ์ด์˜ ์ˆซ์ž ์ค‘ ๋žœ๋คํ•˜๊ฒŒ 6๊ฐœ ๋ฝ‘๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ๋ถ™์—ฌ๋„ฃ๊ณ  ์‹คํ–‰ํ•ด ๋ณด์„ธ์š”.

<script>
  function generateLottoNumbers() {
    const numbers = new Set();
    while (numbers.size < 6) {
      const num = Math.floor(Math.random() * 45) + 1;
      numbers.add(num);
    }
    alert([...numbers].sort((a, b) => a - b).join(', '));
  }
</script>
<button onclick="generateLottoNumbers()">๋กœ๋˜ ๋ฒˆํ˜ธ ์ถ”์ฒจ</button>
  • ์ค‘๋ณต ์—†์ด Set์„ ์ด์šฉํ•ด ์ˆซ์ž๋ฅผ ์ €์žฅํ•˜๊ณ 
  • sort()๋ฅผ ์ด์šฉํ•ด ์ •๋ ฌ ํ›„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค

 


3๏ธโƒฃ ๋™ํ–‰๋ณต๊ถŒ์—์„œ ๋‹น์ฒจ๋ฒˆํ˜ธ ์ •๋ณด ๋ฐ›๊ธฐ

๋™ํ–‰๋ณต๊ถŒ ๊ณต์‹ ์‚ฌ์ดํŠธ์—์„œ ์—‘์…€ ํŒŒ์ผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค:

  1. ๋™ํ–‰๋ณต๊ถŒ ์ ‘์†
  2. ๋ฉ”๋‰ด โ†’ ๋‹น์ฒจ๊ฒฐ๊ณผ > ํšŒ์ฐจ๋ณ„ ๋‹น์ฒจ๋ฒˆํ˜ธย ํด๋ฆญ
  3. ์Šคํฌ๋กค ๋‚ด๋ฆฌ๋ฉด ์•„๋ž˜์ชฝ์— ์‹œ์ž‘ํšŒ์ฐจ ์„ ํƒ ํ›„ ์—‘์…€ ๋‹ค์šด๋กœ๋“œ ๋ฒ„ํŠผ์ด ์žˆ์–ด์š”

๋ฐ›์€ ํŒŒ์ผ์„ excel.xls ๊ฐ™์€ ์ด๋ฆ„์œผ๋กœ ์ €์žฅํ•ด ์ฃผ์„ธ์š”.

 

 


4๏ธโƒฃ MariaDB์— ๋กœ๋˜ ๋‹น์ฒจ๋ฒˆํ˜ธ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ

์œ„์—์„œ ๋ฐ›์€ xlsํŒŒ์ผ์—์„œ CSV ํŒŒ์ผ์„ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค.

๋ฐฉ๋ฒ•1 : ์—‘์…€์—์„œ ๋‹น์ฒจ๋ฒˆํ˜ธ ๋ถ€๋ถ„๋งŒ ๋‚จ๊ธฐ๊ณ ,ย  ์‚ญ์ œํ›„ csv ํŒŒ์ผ ํ˜•์‹์œผ๋กœ ๋‚ด๋ณด๋‚ด๊ธฐ ํ•ฉ๋‹ˆ๋‹ค.

๋ฐฉ๋ฒ•2 : ๋ฐฉ๋ฒ•1์ฒ˜๋Ÿผ ๋‹น์ฒจ ๋ฒˆํ˜ธ ๋ถ€๋ถ„๋งŒ ๋‚จ๊ธดํ›„,ย  ์˜†์˜ ์…€์—์„œ query ๊ตฌ๋ฌธ์„ ์ƒ์„ฑํ•˜๋Š” ์‹์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

์œ„์˜ ํ™”๋ฉด๊ณผ ๊ฐ™์€๊ฒฝ์šฐ J4์—์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ์ž…๋ ฅํ•˜๋ฉด ์ฟผ๋ฆฌ๊ฐ€ ์™„์„ฑ๋ฉ๋‹ˆ๋‹ค.

=”INSERT INTO lottolotto (hoi, num1, num2, num3, num4, num5, num6, bonus) VALUES (” & A2 & “, ” & B2 & “, ” & C2 & “, ” & D2 & “, ” & E2 & “, ” & F2 & “, ” & G2 & “, ” & H2 & “);”

 

MariaDB์— ์ €์žฅํ•˜๋ ค๋ฉด ๋จผ์ € ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค์–ด์•ผ ํ•ด์š”.

CREATE TABLE lottolotto (
  round INT PRIMARY KEY,
  num1 TINYINT, num2 TINYINT, num3 TINYINT,
  num4 TINYINT, num5 TINYINT, num6 TINYINT,
  bonus TINYINT
);
    

5๏ธโƒฃ ํ…Œ์ด๋ธ”๋กœ ์ˆซ์ž ์ถœ๋ ฅํ•˜๊ธฐ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๊ฐ€์ ธ์˜จ ๋ฐ์ดํ„ฐ๋ฅผ HTML ํ…Œ์ด๋ธ”๋กœ ์ถœ๋ ฅํ•ด๋ณผ๊ฒŒ์š”.

์šฐ์„  ํ…Œ์ŠคํŠธ๋กœ 1์ค„์„ ํ•˜๋“œ์ฝ”๋”ฉํ•ด์„œ ๋…ธ์ถœํ•ด ๋ด…๋‹ˆ๋‹ค.

<table border="1">
  <tr>
    <th>ํšŒ์ฐจ</th><th>๋ฒˆํ˜ธ</th>
  </tr>
  <tr>
    <td>1179</td>
    <td>5, 12, 23, 28, 35, 44 + 13</td>
  </tr>
</table>


 

PHP๋กœ DB ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์™€ ์ถœ๋ ฅํ•˜๋ ค๋ฉด ์ด๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

<?php
$conn = new mysqli("localhost", "root", "1234", "lotto"); //๋ณธ์ธํ™˜๊ฒฝ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”
$result = $conn->query("SELECT * FROM lottolotto ORDER BY round DESC");
while ($row = $result->fetch_assoc()) {
  echo "<tr><td>{$row['hoi']}</td><td>{$row['num1']}, {$row['num2']}, {$row['num3']}, {$row['num4']}, {$row['num5']}, {$row['num6']} + {$row['bonus']}</td></tr>";
}
?>

๐Ÿ“Œ PHP๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์ด ๋กœ์ปฌ์— ๊ตฌ์ถ•๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“Œ ํ˜น์€ Cafe24๋“ฑ์˜ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•ด์„œ php ํŽ˜์ด์ง€๋ฅผ ํ…Œ์ŠคํŠธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 


6๏ธโƒฃ Bootstrap5๋กœ ์›ํ˜• ์ƒ‰์ƒ ๋ฐฐ์ง€ ๋งŒ๋“ค๊ธฐ

 

<!DOCTYPE html>
<html lang=”ko”>
<head>
ย  ย  <meta charset=”UTF-8″>
ย  ย  <title>๋กœ๋˜์ธํฌ ํŽ˜์ด์ง€</title>
ย  ย  <!– โœ… Bootstrap 5 CSS ์ถ”๊ฐ€ –>
ย  ย  <link href=”https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css” rel=”stylesheet”>
ย  ย  <style>
ย  ย  ย  ย  .lotto-ball {
ย  ย  ย  ย  ย  ย  display: inline-block;
ย  ย  ย  ย  ย  ย  width: 40px;
ย  ย  ย  ย  ย  ย  height: 40px;
ย  ย  ย  ย  ย  ย  line-height: 40px;
ย  ย  ย  ย  ย  ย  border-radius: 50%;
ย  ย  ย  ย  ย  ย  text-align: center;
ย  ย  ย  ย  ย  ย  font-weight: bold;
ย  ย  ย  ย  ย  ย  margin-right: 5px;
ย  ย  ย  ย  ย  ย  color: white;
ย  ย  ย  ย  }
ย  ย  </style>
</head>
<body class=”p-4″>
ย  ย  <script>
ย  ย  ย  ย  function generateLottoNumbers() {
ย  ย  ย  ย  ย  ย  const numbers = new Set();
ย  ย  ย  ย  ย  ย  while (numbers.size < 6) {
ย  ย  ย  ย  ย  ย  ย  ย  const num = Math.floor(Math.random() * 45) + 1;
ย  ย  ย  ย  ย  ย  ย  ย  numbers.add(num);
ย  ย  ย  ย  ย  ย  }
ย  ย  ย  ย  ย  ย  alert([…numbers].sort((a, b) => a – b).join(‘, ‘));
ย  ย  ย  ย  }
ย  ย  </script>
ย  ย  <button class=”btn btn-primary mb-4″ onclick=”generateLottoNumbers()”>๋กœ๋˜ ๋ฒˆํ˜ธ ์ถ”์ฒจ</button>
ย  ย  <h1 class=”mb-4″>Hello~ Lotto World!</h1>
ย  ย  <h2 class=”mb-3″>๋กœ๋˜ ๋ฒˆํ˜ธ ์ •๋ณด</h2>
ย  ย  <table class=”table table-bordered text-center align-middle”>
ย  ย  ย  ย  <thead class=”table-light”>
ย  ย  ย  ย  ย  ย  <tr>
ย  ย  ย  ย  ย  ย  ย  ย  <th>ํšŒ์ฐจ</th>
ย  ย  ย  ย  ย  ย  ย  ย  <th>๋ฒˆํ˜ธ</th>
ย  ย  ย  ย  ย  ย  </tr>
ย  ย  ย  ย  </thead>
ย  ย  ย  ย  <tbody>
ย  ย  ย  ย  ย  ย  <?php
ย  ย  ย  ย  ย  ย  function getColorClass($num) {
ย  ย  ย  ย  ย  ย  ย  ย  // ๋ฒˆํ˜ธ๋ณ„ ์ƒ‰์ƒ ๊ตฌ๊ฐ„ ์ •์˜ (์˜ˆ์‹œ)
ย  ย  ย  ย  ย  ย  ย  ย  if ($num <= 10) return ‘bg-primary’;
ย  ย  ย  ย  ย  ย  ย  ย  if ($num <= 20) return ‘bg-success’;
ย  ย  ย  ย  ย  ย  ย  ย  if ($num <= 30) return ‘bg-warning’;
ย  ย  ย  ย  ย  ย  ย  ย  if ($num <= 40) return ‘bg-danger’;
ย  ย  ย  ย  ย  ย  ย  ย  return ‘bg-secondary’;
ย  ย  ย  ย  ย  ย  }
ย  ย  ย  ย  ย  ย  $conn = new mysqli(“localhost”, “”, “”, “”); //์—ฌ๋Ÿฌ๋ถ„์˜ ์ •๋ณด๋ฅผ ๋„ฃ์–ด ์ฃผ์„ธ์š”~
ย  ย  ย  ย  ย  ย  $result = $conn->query(“SELECT * FROM lottolotto ORDER BY hoi DESC”);
ย  ย  ย  ย  ย  ย  while ($row = $result->fetch_assoc()) {
ย  ย  ย  ย  ย  ย  ย  ย  echo “<tr><td>{$row[‘hoi’]}</td><td>”;
ย  ย  ย  ย  ย  ย  ย  ย  for ($i = 1; $i <= 6; $i++) {
ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  $num = $row[“num$i”];
ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  $color = getColorClass($num);
ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  echo “<span class=’lotto-ball $color’>{$num}</span>”;
ย  ย  ย  ย  ย  ย  ย  ย  }
ย  ย  ย  ย  ย  ย  ย  ย  // ๋ณด๋„ˆ์Šค ๋ฒˆํ˜ธ
ย  ย  ย  ย  ย  ย  ย  ย  $bonus = $row[‘bonus’];
ย  ย  ย  ย  ย  ย  ย  ย  $bonusColor = getColorClass($bonus);
ย  ย  ย  ย  ย  ย  ย  ย  echo “<span class=’lotto-ball $bonusColor’>+{$bonus}</span>”;
ย  ย  ย  ย  ย  ย  ย  ย  echo “</td></tr>”;
ย  ย  ย  ย  ย  ย  }
ย  ย  ย  ย  ย  ย  ?>
ย  ย  ย  ย  </tbody>
ย  ย  </table>
</body>
</html>

 


โœ… ๋งˆ๋ฌด๋ฆฌํ•˜๋ฉฐ

์ง€๊ธˆ๊นŒ์ง€ ๊ฐ„๋‹จํ•œ HTML๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ:

  • JavaScript๋กœ ๋ฒˆํ˜ธ ์ƒ์„ฑ
  • ๋™ํ–‰๋ณต๊ถŒ์—์„œ CSV ๋‹ค์šด๋กœ๋“œ ํ˜น์€ ์ง์ ‘ Query์ž‘์„ฑ
  • MariaDB์— ์ €์žฅ
  • ํ…Œ์ด๋ธ”๋กœ ์ถœ๋ ฅ
  • Bootstrap5์œผ๋กœ ๋””์ž์ธ

๊นŒ์ง€ ๋”ฐ๋ผ์˜ค์…จ๋‹ค๋ฉด ์ •๋ง ๋Œ€๋‹จํ•˜์‹  ๊ฑฐ์˜ˆ์š”! ๐Ÿ™Œ๐Ÿ™Œ

์ฝ์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ™Œ

๋‹ต๊ธ€ ๋‚จ๊ธฐ๊ธฐ

์ด๋ฉ”์ผ ์ฃผ์†Œ๋Š” ๊ณต๊ฐœ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•„์ˆ˜ ํ•„๋“œ๋Š” *๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค