2012-01-10 3 views
1

は、私は単純にそうように別の変数からのデータを渡すことによって、この作業を持っていた:最初の場合は()文の内部ループを使用する必要がなくMySQL DBに書式設定された変数を格納していますか?

$CalcsSets = $DisplayCalcs; 

、それは引用符なしでデータを挿入しますが、すべての突然のは、それが動作を停止していますし、(それが唯一の最後の整数を示し始め)なぜ私はわからないので、私は、より複雑なコードは、以下に示すように、それが再び動作するように取得しようとして行きました。

は、ここに私が働いている複雑なコードです:

行うことになっているもの
for($i=1; $i<=$CalcSets; $i++){ 


$calculations = PerformCalc($min, $highest, $OperatorType); 

echo 'Calculations performed for '.$SetText[$i]; 

    foreach ($calculations as $key => $DisplayCalcs) { 
     echo $SetCalc[] = $DisplayCalcs.', '; //stores calculations with ',' in 
              //array. 
} 

if($CalcSets == 1){ 

    for($i=0;$i<$CalcSets;$i++){ 
     $SetResults = $SetCalc[$i]; 
     echo '<strong>'.(string)$SetResults.'</strong>';    
    } 
     DB_Insert($SetResults); 
} 

は、データベースに次の形式で挿入値(1,2,3,4,5)でありますVARCHAR行ですが、現在表示されているのはカンマのない最後の整数です。私はもともと整数だけではなくカンマを保存したかったが、先に述べたように、各整数はので、私はこのルートを行った後、私はそれをカンマでページに表示することができませんでした。

私はおそらくこれについて間違った道を進んだ実現、しかし、あなたがたのうち、私が欲しいものを行うには、はるかに簡単、そして短い方法を知っていれば、私は助けを非常に感謝するだろう。結果ページに、それは前述した形式で表示する必要があるので、私はそれをこのようにやっている

理由は、あります。

FYI、私は、DBの行を確認したし、それはまだ現時点で10の長さVARCHARに設定されています。

の意図をより明確にするために

UPDATE [OK]を、私は振り出しに戻って行くと、できるだけ私の意図は明らかなようにしようとするつもりです。私はカウントする気にして私の脳は、すべての霧笑よりも多くの時間をスニペットこのコードを書き換えてきました。私はそれで達成しようとしてんだよ

array1 = array(1, 2, 3, 4, 5, 6); 

foreach(array1 as $key => $data){ 
    echo $data.','; 

// will display 1,2,3,4,5,6, in browser. 
} 

if(is_true == 1){ 

INSERT ALL $data values into DB here. 

} 

は、最も単純な形ですが、私はちょうど非常に困難私の目標を達成することがありますよ。

セカンドアップデート - トピックは、DBフィールドがvarchar型ではなく、テキストに設定する必要がありました、どうやら

を解決しました。私たちは毎日何か新しいことを学ぶと思う。

ここでも、あなたの助けのすべてのためのみんなありがとう。大変感謝しています!

+0

より良いデザインの観点からの示唆。 TEXTデータ型には65536文字を受け入れる制限があります。あなたのデータがそれほど長くなるとは思わないなら、おそらくVARCHAR(300) – Abhay

答えて

2

すみませんが、私は元のコードからあまり意味がありませでしたが、最後のIFと含むLOOPに焦点を当て、私は問題は代入文であると思います:

$SetResults = $SetCalc[$i]; 

代わりに。=を使用して連結する必要があります。表示方法は次のとおりです。

if($CalcSets == 1){ 
    for($i=0;$i<$CalcSets;$i++){ 
     $SetResults .= $SetCalc[$i]; 
     echo '<strong>'.(string)$SetResults.'</strong>';    
    } 
    DB_Insert($SetResults); 
} 

希望しています!

私はimplode()メソッドを使用するための@KemalFadillahの解決法に完全に同意します。あなたのコードスニペットから、私は$計算が主な値、すなわちArray(1,2,3,4,5)を格納する配列であることを理解しています。そうすることができます:

$calculations = PerformCalc($min, $highest, $OperatorType); 
$s = implode (', ', $calculations); 
DB_Insert($s); 

私はそれが意味があることを望みますか?

2

あなただけ$calcSets == 1場合ループの最後を実行し、$i<$calcSets条件この

$SetCalc = ""; 
foreach ($calculations as $key => $DisplayCalcs) { 
     echo $SetCalc .= $DisplayCalcs.', '; 
} 
DB_Insert("(".$SetCalc.")"); 
+0

を使うと考えるかもしれません。これは、次の条件がif $ CalcSets> = 2で、1つの$ CalcSetだけが選択されていれば1回だけ実行したいからです。 – Cryotech

+0

それで、一回だけ実行できるのであれば、なぜforループを使うのですか? – Vultour

+0

私はもともと、前述のようにループしていませんでした。実際には、2番目のif()ステートメントには、ユーザーが「選択して保持する」ことができる特別な条件が含まれているため、2つのifステートメントが必要です。 – Cryotech

2

ようにそれをやってあなたはフォーマットするimplode()機能を探しているのはどのよう


を持っています数字。

$formatted = implode(',', $calculations); // Produce 1,2,3,4,etc... 

http://php.net/manual/en/function.implode.php

+0

ちょっとケマル、それはフォーマットにはたらいていますが、私はまだ最後の整数をDBに挿入して表示することしかできず、理由もわかりません。たとえば、$ CalcSetの結果が1,2,3,4,5の場合、DBに挿入されるのは5つだけです。ループに挿入コードを配置すると、すべてが追加されますが、一度に1つの行が追加され、その完全な文字列がDBに追加され、1,2,3,4,5として抽出および表示可能になります。 – Cryotech

関連する問題