2012-09-17 6 views
0

업데이트 내가이 form.I에서 게시 된 데이터를 사용하여다차원 배열

$arr = array(
    'one' => array(
    'slidertitle' => 'lorem ipsum', 
    'sliderlocation' => 'http://localhost/images/1.jpg', 
    'sliderdescription' => 'this is a good lorem ipsum image', 
    'sliderposition' => 1 
    ), 
    'two' => array(
    'slidertitle' => 'second slider', 
    'sliderlocation' => 'http://localhost/images/2.jpg', 
    'sliderdescription' => 'this space was reserved for a link source code here', 
    'sliderposition' => 2 
    ), 
    'three' => array(
    'slidertitle' => 'third slider', 
    'sliderlocation' => 'http://localhost/images/3.jpg', 
    'sliderdescription' => 'this is a third slider by name only', 
    'sliderposition' => 3 
    ), 
    'four' => array(
    'slidertitle' => 'fourth slider', 
    'sliderlocation' => 'http://localhost/images/4.jpg', 
    'sliderdescription' => 'fourth slider has a description', 
    'sliderposition' => 4 
    ), 
    'five' => array(
    'slidertitle' => 'fifth slider', 
    'sliderlocation' => 'http://localhost/images/5.jpg', 
    'sliderdescription' => 'a slider on rails is really nice', 
    'sliderposition' => 5 
    ), 
    'six' => array(
    'slidertitle' => 'sixth slider', 
    'sliderlocation' => 'http://localhost/images/6.jpg', 
    'sliderdescription' => 'this is the sixth slider,like,really!', 
    'sliderposition' => 6 
    ) 
); 

가 그 단지 예부터 $ _POST 데이터로 소독하지 않은 업데이트하려고이 배열이있다.

$clickedButton = $_POST['clickedButton']; 
$sliderKey = $_POST['sliderKey']; 
$sliderTitle = $_POST['sliderTitle']; 
$sliderDescription = $_POST['sliderDescription']; 
$sliderLocation = $_POST['sliderLocation']; 
$sliderPosition = $_POST['sliderPosition']; 
$result = mysql_query("SELECT * FROM arr"); 
$row = mysql_fetch_array($result); 
$data = $row['encoded_array']; 
//echo $data.'<br/>'.'<br/>'; 
$unserialized = unserialize($data); 
$unserialized[$sliderKey]["slidertitle"] = $sliderTitle; 
$unserialized[$sliderKey]["sliderlocation"] = $sliderLocation; 
$unserialized[$sliderKey]["sliderdescription"] = $sliderDescription; 
$unserialized[$sliderKey]["sliderposition"] = $sliderPosition; 
//print_r($unserialized); 
$newSerialize = serialize($unserialized); 
mysql_query("UPDATE arr SET encoded_array = '$newSerialize'"); 

내가 print_r $unserialized, 난 그냥 게시 한 데이터가 있지만, 내가 잘못하고 있어요 뭔가가 serialize.Is 후 데이터베이스에 커밋되지?

편집 :

내 배열에 두 개의 레코드를 가지고이

a:2:{s:13:"5056d218631bc";a:4:{s:11:"slidertitle";s:5:"lorem";s:14:"sliderlocation";s:5:"ipsum";s:17:"sliderdescription";s:11:"hello world";s:14:"sliderposition";i:3;}s:13:"5056db269305c";a:4:{s:11:"slidertitle";s:1:"A";s:14:"sliderlocation";s:6:"RECORD";s:17:"sliderdescription";s:18:"WITH A DESCRIPTION";s:14:"sliderposition";s:1:"2";}} 

직렬화를 저장하기 전에 내가 무엇을 얻을 수 있습니다 :

Array 
(
    [5056d218631bc] => Array 
     (
      [slidertitle] => lorem 
      [sliderlocation] => ipsum 
      [sliderdescription] => hello world 
      [sliderposition] => 3 
     ) 

    [5056db269305c] => Array 
     (
      [slidertitle] => A 
      [sliderlocation] => RECORD 
      [sliderdescription] => WITH A DESCRIPTION 
      [sliderposition] => 2 
     ) 

) 
+0

DB 삽입 전에'var_dump ($ newSerialize);'를하면 어떻게 될까요? – JamesHalsall

+0

내가 게시 한 데이터가 있습니다. – Gandalf

+0

'mysql_ *'함수를 사용하지 마십시오. 사용되지 않습니다 ([* red box *] (http://php.net/manual/en/function.mysql-query.php) 참조). SQL injection에 취약합니다. . [* PDO *] (http://php.net/manual/en/book.pdo.php) 또는 [* MySQLi *] (http://php.net/manual/en/book.mysqli.php) . – alfasin

답변

0

@alfasin @AdamGold @Poonam @ Jaitsu 정말이 책을 올리는 데 책망의 댓가를 치를만한 가치가 있지만 문제는 저축을 한 기능을 수행 한 후 휴식을 놓치고 있다는 것입니다.

이이 난 그게 내가 당신의 인내와 기여에 감사드립니다

$x = $_POST['clickedButton']; 
//echo $x; 
switch ($x) 
{ 
case 'newSave': 
    newSave(); 
    break; 
case 'editSave': 
    editSave(); 
    ; 
    break; 
case 'editDelete': 
    editDelete(); 
    ; 
    break; 
default: 
    echo "Some click"; 
} 

작동 지금 가지고있는 것입니다 내가

$x = $_POST['clickedButton']; 

switch ($x) 
{ 
case 'newSave': 
    newSave(); 
    break; 
case 'editSave': 
    editSave(); 
    ; 
case 'editDelete': 
    editDelete(); 
    ; 
    break; 
default: 
    echo "Some click"; 
} 

전의 것입니다.