··조회 11,536
[re] 감사합니다 그리고 질문이 또 있는데요..
>제생각으로는
>
>1번타자의 이름은 $name_1, 타수는 $ab_1, 안타는 $hit_1~~~
>2번타자는 $name_2, $ab_2, $hit_2~~~
>3번타자는 $name_2, $ab_3, $hit_3~~~
>
>이런식으로 변수로 전달한뒤에
>
>입력시에
>$sql = "insert into record_batter
> values('$name_1, ','$ab_1','$hit_1'~~~
>$sql = "insert into record_batter
> values('$name_2, ','$ab_2','$hit_2'~~~
>$sql = "insert into record_batter
> values('$name_3', '$ab_3','$hit_3'~~~
>
>이런식이 오류가 나지 않을까해서 여쭙습니다.
오류는 안나지만 원하는 결과는 안나옵니다.
저렇게 되면 맨 마지막 쿼리만 적용되겠죠. 쿼리를 받는 변수명을 다르게 주면
되기야 하겠지만 너무 번거롭습니다. 그럴때 쓰라고 있는게 배열이죠.
배열을 쓰세요. 그럼 쉽게 해결됩니다.
== form.php =========================================
<html>
<head>
<title></title>
</head>
<body>
<form name="form" action="ok.php" method="post">
<input type="text" name="name[]"><input type="text" name="hit[]"><br>
<input type="text" name="name[]"><input type="text" name="hit[]"><br>
<input type="text" name="name[]"><input type="text" name="hit[]"><br>
<input type="text" name="name[]"><input type="text" name="hit[]"><br>
<input type="text" name="name[]"><input type="text" name="hit[]"><br>
<input type="submit" value=" OK?! ">
</form>
</body>
</html>
==================================================
== ok.php ===========================================
<?
/***********************************
* 배열로 넘어온 데이터의 총 수 계산
* (null 이나 빈값으로 넘어온 데이터 제외)
************************************/
function count_real($arg){
if ($arg){
// $arg 가 배열이 아닌경우 1 리턴
if(!is_array($arg))
return 1;
// $arg 가 배열인 경우 null 을 제외한 count 리턴
foreach($arg as $key => $val)
$count += count_real($val);
return $count;
}
}
$total = count_real($name); // 배열로 넘어온 $name[] 수 카운트
for($i=0;$i<$total;$i++){ // $name 갯수만큼 루프
echo"이름 : $name[$i] 안타 : $hit[$i]<br>";
}
?>
==================================================
그냥 count($name) 해도 $name 배열의 수를 리턴해주지만 이 경우에는
null 이나 빈값으로 넘어오는 것도 카운트를 합니다. 따라서 입력폼에서 데이터를
다 입력안해도 무조건 $total 은 5가 되서 루프가 5번 돌게되죠.
그럴 경우 루프문 안에서 쿼리를 실행시키면 데이터가 제대로 안들어가겠죠.
그래서 위에 null 이나 빈값을 제외시키고 카운트하는 count_real($arg) 이라는
함수를 만들었습니다. ^^;; (저도 필요할 것 같아서... 헤헤))
디비에 인서트할 꺼니까
echo"이름 : $name[$i] 타율 : $rbi[$i]<br>";
대신 그 위치에 쿼리문을 적고 인서트하면 되겠네요.
>즉, DB에 동시에 여러가지를 입력하는 방법이 가능한지가 궁금합니다.
Insert,Update,Delete 는 여러번 가능합니다.
물론 트랜잭션을 고려하고 하는것이 좋지만 관리자가 입력하는 거라면
그리 개의치 않아도 될 듯..
>
>1번타자의 이름은 $name_1, 타수는 $ab_1, 안타는 $hit_1~~~
>2번타자는 $name_2, $ab_2, $hit_2~~~
>3번타자는 $name_2, $ab_3, $hit_3~~~
>
>이런식으로 변수로 전달한뒤에
>
>입력시에
>$sql = "insert into record_batter
> values('$name_1, ','$ab_1','$hit_1'~~~
>$sql = "insert into record_batter
> values('$name_2, ','$ab_2','$hit_2'~~~
>$sql = "insert into record_batter
> values('$name_3', '$ab_3','$hit_3'~~~
>
>이런식이 오류가 나지 않을까해서 여쭙습니다.
오류는 안나지만 원하는 결과는 안나옵니다.
저렇게 되면 맨 마지막 쿼리만 적용되겠죠. 쿼리를 받는 변수명을 다르게 주면
되기야 하겠지만 너무 번거롭습니다. 그럴때 쓰라고 있는게 배열이죠.
배열을 쓰세요. 그럼 쉽게 해결됩니다.
== form.php =========================================
<html>
<head>
<title></title>
</head>
<body>
<form name="form" action="ok.php" method="post">
<input type="text" name="name[]"><input type="text" name="hit[]"><br>
<input type="text" name="name[]"><input type="text" name="hit[]"><br>
<input type="text" name="name[]"><input type="text" name="hit[]"><br>
<input type="text" name="name[]"><input type="text" name="hit[]"><br>
<input type="text" name="name[]"><input type="text" name="hit[]"><br>
<input type="submit" value=" OK?! ">
</form>
</body>
</html>
==================================================
== ok.php ===========================================
<?
/***********************************
* 배열로 넘어온 데이터의 총 수 계산
* (null 이나 빈값으로 넘어온 데이터 제외)
************************************/
function count_real($arg){
if ($arg){
// $arg 가 배열이 아닌경우 1 리턴
if(!is_array($arg))
return 1;
// $arg 가 배열인 경우 null 을 제외한 count 리턴
foreach($arg as $key => $val)
$count += count_real($val);
return $count;
}
}
$total = count_real($name); // 배열로 넘어온 $name[] 수 카운트
for($i=0;$i<$total;$i++){ // $name 갯수만큼 루프
echo"이름 : $name[$i] 안타 : $hit[$i]<br>";
}
?>
==================================================
그냥 count($name) 해도 $name 배열의 수를 리턴해주지만 이 경우에는
null 이나 빈값으로 넘어오는 것도 카운트를 합니다. 따라서 입력폼에서 데이터를
다 입력안해도 무조건 $total 은 5가 되서 루프가 5번 돌게되죠.
그럴 경우 루프문 안에서 쿼리를 실행시키면 데이터가 제대로 안들어가겠죠.
그래서 위에 null 이나 빈값을 제외시키고 카운트하는 count_real($arg) 이라는
함수를 만들었습니다. ^^;; (저도 필요할 것 같아서... 헤헤))
디비에 인서트할 꺼니까
echo"이름 : $name[$i] 타율 : $rbi[$i]<br>";
대신 그 위치에 쿼리문을 적고 인서트하면 되겠네요.
>즉, DB에 동시에 여러가지를 입력하는 방법이 가능한지가 궁금합니다.
Insert,Update,Delete 는 여러번 가능합니다.
물론 트랜잭션을 고려하고 하는것이 좋지만 관리자가 입력하는 거라면
그리 개의치 않아도 될 듯..