2014-07-22 4 views
1

데이터베이스 열에 배열을 저장하려고했지만 아직 성공하지 못했습니다.데이터베이스 열에 배열을 저장하는 방법

저는 2 주 동안 PHP와 SQL을 조사해 왔으며 프로그래밍에 대한 배경 지식이 없습니다. 그러니 내 무지를 용서해주십시오. 나는 실수를 많이했다고 확신한다.

내 상황을 자세히 설명하겠습니다.

관리자가 일부 게임과 관련된 일부 데이터를 입력 할 수 있도록 웹 페이지를 만들었습니다. 이것은 로그인 프로세스 후입니다. 관리자가이 시점에 도착하면 나는 지금 '정확한'입력으로 귀찮게하지 않습니다. DB에있는 데이터를 가져오고 싶습니다.

+--------+--------+-----+-----+------+------+------+ 
|game_id |round_id|team1|team2|score1|score2|result| 
+--------+--------+-----+-----+------+------+------+ 
| 1  | 1  | A | B | NULL | NULL | NULL | 
| 2  | 1  | C | D | NULL | NULL | NULL | 
| 3  | 1  | E | F | NULL | NULL | NULL | 
| 4  | 2  | E | C | NULL | NULL | NULL | 
| 5  | 2  | A | D | NULL | NULL | NULL | 
| 6  | 2  | F | B | NULL | NULL | NULL | 
+--------+--------+-----+-----+------+------+------+ 

가 그럼 난 당 팀을 표시하려면이 테이블에서 데이터를 사용하는 PHP 페이지에서 양식을 만든 :

나는 내가 지금까지 가지고 MySQL의에 games라는 테이블을 생성하고 데이터로 채워진 경기.

관리자는이 양식을 사용하여 게임 점수와 결과를 채 웁니다. 아래 양식을 참조하십시오.이 양식은 위 표에 값을 저장하는 데 필요합니다.

input.php

<?php 

mysql_connect("xxx", "xxx", "xxx") or die(mysql_error()); 
mysql_select_db("xxx") or die(mysql_error()); 

$query="SELECT games_team1, games_team2 FROM games WHERE round_id = 1"; 

$result = mysql_query($query); 

?> 

<form action="someform.php" method="post"> 
    <table id="inputgameresults"> 
     <tbody> 
      <tr> 
       <th>Home</th> 
       <th>Score 1</th> 
       <th>-</th> 
       <th>Score 2</th> 
       <th>Away</th> 
       <th>Result</th> 
       </tr> 

    <?php while($row = mysql_fetch_array($result)) { ?> 

      <tr> 
       <td><?php echo $row['team1']; ?></td> 
       <td><input type="text" name="score1[]"/></td> 
       <td> - </td> 
       <td><input type="text" name="score2[]"/></td> 
       <td><?php echo $row['team2']; ?></td> 
       <td><input type="text" name="result[]"/></td> 
      </tr> 

    <?php } ?> 

      <tr> 
       <td></td> 
       <td</td> 
       <td</td> 
       <td</td> 
       <td</td> 
       <td><input type="submit" value="Submit"/></td> 
      </tr> 
     </tbody> 
    </table>      
</form> 

이 상기 형태의 표 3 열로 결과

. 이 테이블은 각 경기의 팀과 점수 및 결과에 대한 입력 필드를 표시합니다. 헤더, 게임이있는 3 개의 행, 게임 뒤의 입력 필드 및 아래의 엄한 버튼.

관리자는 아래 양식을 사용하여 입력을 제출할 수 있습니다. 출력이 올바른지 확인할 수 있도록 에코를 추가했습니다. 에코는 매력처럼 작동합니다. 이것은 내가 가지런 히 가지 않는 곳입니다. 내가 사용하는 SQL 쿼리는 폼에 설명되어 있습니다. 그것은 아마도 지식의 부족 때문에 비참하게 실패합니다.

<?php 

mysql_connect("xxx", "xxx", "xxx") or die(mysql_error()); 
mysql_select_db("xxx") or die(mysql_error()); 

$sc1 = $_POST['score1']; 
$sc2 = $_POST['score2']; 
$res = $_POST['result']; 

foreach($sc1 as $value) { 
    echo "score team 1 $value<br/>"; 
    mysql_query("UPDATE games SET game_score1 = '".$value[]"' WHERE games_id = [1,2,3] "); 
} 

foreach($sc2 as $value) { 
    echo "score team 2$value<br/>"; 

} 

foreach($res as $value) { 
    echo "res $value<br/>"; 
} 

?> 

form1.php

내가 개선, 또는 좀 더 효율적으로 할 수있는 주요 문제 외에 많은 것들이 확신 해요. 지금이 주제가 내 주요 관심사는 아니지만 어떤 도움도 환영합니다. D

주요 초점은 이제 양식의 입력란을 db의 올바른 위치에 가져 오는 것입니다. 양식의 데이터는 score1, score2 및 게임의 결과 열에있는 데이터베이스로 보내야합니다.

어떤 도움이나 조언을 환영합니다!

+0

PHP 설명서에서'$ _POST' 변수에 대한이 주석을보십시오 : http://php.net/manual/ ko/reserved.variables.post.php # 87650. 당신은''와 같은 것을해야합니다. 여기서 0은'game_id'입니다. 동일한 주석에서 언급 한 것처럼'input.php'에서 연상 배열에 접근합니다. –

+0

try : where games_id = "..."(값을 따옴표로 묶으십시오). 또한 데이터베이스에 배열을 저장하려면 직렬화를 살펴보십시오. – Bogdan

+0

일반적으로 데이터베이스에 배열과 같은 데이터를 저장하는 것은 좋지 않습니다. 유용한 검색을 수행하는 것이 불가능하지는 않더라도 어렵게 만들 것입니다.이 부분이 정상적으로 작동하는 경우가 있지만 확실 할 것입니다. 이 경우, 또 다른 방법은 속성 값 테이블입니다.이 값 테이블은 좀 더 복잡하지만 조금 복잡하고 데이터를 검색 할 수있는 기능을 유지합니다. – ArtisticPhoenix

답변

0

데이터베이스 컬럼에 전체 배열을 저장하는 간단한 방법은 json으로 배열을 인코딩하는 것입니다.예에서, $의 SC1은 당신이 colomnu에서 배열을 얻을 때 다음

mysql_query("UPDATE games SET game_score1 = '". json_encode($sc1) . "' WHERE   
    games_id = [1,2,3,4,5,6,7,8,9] "); 

를 저장할 배열, 그것은 JSON 형식에 여전히, 그래서 당신은이

$array = json_decode($result); 

을 할 필요가 때로는 배열 ''와 elemens을 포함 당신이해야 할 모든 대신

를 사용하는

addslashes(json_encode($sc1)) 

을 사용하는 것입니다

json_encode($sc1); 
0

mysql에 새로운 행을 삽입하는 구문이 필요해 보입니다. 사전에

INSERT games (round_id, team1, team2, score1, score2, result) 
VALUES (3, 4, 6, 18, 1, 0, 1); 
0

내 문제에 대한 가능한 해결책을 너희들 감사합니다 : 자동 증가를 GAME_ID 경우 한 Statment에 지정할 필요가 없습니다. 나는 그들을 들여다 볼 것이다.

내 친구가 데이터베이스에서 루프 할 수 있도록 '키'를 사용해야한다고 말했습니다. 데이터가 데이터베이스에서 검색된 경우와 같습니다. 이것은 작동하는 것처럼 보였다.

나는 $ key ++를 사용하여 첫 번째 games_id에서 시작합니다.

foreach($sc1 as $key => $value) { 
    $key++; 
    mysql_query("UPDATE games SET game_score1 = '".$value[]"' WHERE games_id = '".$key."' "); 
} 

내 다음 과제는 round_id 당 검색하고 round_id 당 저장하는 것입니다. 그리고 더 재미있게 만들려면 현재 날짜가 현재 round_id를 가리킬 것입니다 : D

관련 문제