1

i am hitting my head here , how do i put a while loop inside a variable ?

$variable="
<table style='margin-bottom:30px;'>
                  <tr class='table_heads'>
                      <b><td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>S.No</td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>Ingredients</td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>Weight <small><i> - (In Grams)</i></small></td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>Fat</td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>Sweetness</td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>Solid 1</td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>Solid 2</td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>Anti-Freezing Power</td>
                  </tr>

 while(somethign here too){ // here is the problem even i try to concenite this it dosent work ..
   <tr class='table_headsnonw' style='font-size:12px;'>
                      <td>1</td>
                      <td>
                          3
                      </td>
                      <td>300</td>
                      <td>300</td>
                      <td>300</td>
                      <td>300</td>
                      <td>300</td>
                      <td>300</td>
                  </tr>
 }
 <tr class='table_heads'>
                      <b><td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>S.No</td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>Ingredients</td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>Weight <small><i> - (In Grams)</i></small></td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>0</td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>0</td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>0</td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>0</td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>0</td>
                  </tr>

 ";

i have added the code adove the problem is i have HTML inside php variable and then some html is produced by while loop from database and then all of them needs to be storede in a variable so that i can print it .

i cant find a way to solve this ..

6
  • End your $variable before the loop, in your while loop add to $variable. Commented Jan 23, 2018 at 10:54
  • I thinks your syntax is wrong. please check my answer Commented Jan 23, 2018 at 10:54
  • 3
    "how do i put a while loop inside a variable ?" -- a variable is just a place in memory that stores a value. A loop is code, it cannot stay "in a variable". What you probably mean is to use a loop to incrementally build a string. Read about strings concatenation. Commented Jan 23, 2018 at 10:54
  • A while loop is a programming structure. A variable stores a value. You cannot put a loop inside a variable so your question is unclear. Commented Jan 23, 2018 at 10:54
  • Kinda smells like an XY Problem to me... Commented Jan 23, 2018 at 10:55

5 Answers 5

9
<?php
 $variable="
<table style='margin-bottom:30px;'>
                  <tr class='table_heads'>
                      <b><td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>S.No</td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>Ingredients</td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>Weight <small><i> - (In Grams)</i></small></td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>Fat</td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>Sweetness</td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>Solid 1</td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>Solid 2</td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>Anti-Freezing Power</td>
                  </tr>";

 while(somethign here too){ // here is the problem even i try to concenite this it dosent work ..
   $variable .=" <tr class='table_headsnonw' style='font-size:12px;'>
                      <td>1</td>
                      <td>
                          3
                      </td>
                      <td>300</td>
                      <td>300</td>
                      <td>300</td>
                      <td>300</td>
                      <td>300</td>
                      <td>300</td>
                  </tr>";
 }
 $variable .="<tr class='table_heads'>
                      <b><td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>S.No</td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>Ingredients</td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>Weight <small><i> - (In Grams)</i></small></td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>0</td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>0</td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>0</td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>0</td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>0</td>
                  </tr>

 ";
?>
Sign up to request clarification or add additional context in comments.

Comments

3

You can just save whatever string you generate in the loop in a variable and then concatenate it.

$str_buffer = '';
$foo =  while(somethign here too){ 
   $str_buffer.= "<tr class='table_headsnonw' style='font-size:12px;'>
                      <td>1</td>
                      <td>
                          3
                      </td>
                      <td>300</td>
                      <td>300</td>
                      <td>300</td>
                      <td>300</td>
                      <td>300</td>
                      <td>300</td>
                  </tr>";
 }



$variable="stuff".$str_buffer." other static stuff";
echo $variable;

Comments

0

You should concat, e.g:

$variable="
<table style='margin-bottom:30px;'>
                  <tr class='table_heads'>
                      <b><td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>S.No</td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>Ingredients</td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>Weight <small><i> - (In Grams)</i></small></td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>Fat</td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>Sweetness</td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>Solid 1</td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>Solid 2</td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>Anti-Freezing Power</td>
                 </tr>";
 while(somethign here too){ // here is the problem even i try to concenite 
   $variable .= "<tr class='table_headsnonw' style='font-size:12px;'>
                      <td>1</td>
                      <td>
                          3
                      </td>
                      <td>300</td>
                      <td>300</td>
                      <td>300</td>
                      <td>300</td>
                      <td>300</td>
                      <td>300</td>
                  </tr>";
 }

Comments

0

This is maybe not a good approach to write code. You should echo php inside html and not the opposite. Anyway, to fix your issue:

$variable="
<table style='margin-bottom:30px;'>
                  <tr class='table_heads'>
                      <b><td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>S.No</td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>Ingredients</td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>Weight <small><i> - (In Grams)</i></small></td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>Fat</td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>Sweetness</td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>Solid 1</td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>Solid 2</td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>Anti-Freezing Power</td>
                  </tr>";


 while(somethign here too){ 
$variable .="       <tr class='table_headsnonw' style='font-size:12px;'>
                      <td>1</td>
                      <td>
                          3
                      </td>
                      <td>300</td>
                      <td>300</td>
                      <td>300</td>
                      <td>300</td>
                      <td>300</td>
                      <td>300</td>
                  </tr>";
 }


$variable .="<tr class='table_heads'>
    <b><td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>S.No</td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>Ingredients</td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>Weight <small><i> - (In Grams)</i></small></td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>0</td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>0</td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>0</td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>0</td>
                      <td style='border: 1px solid #d8d8d8;padding: 2px 7px 2px 7px;background: #ddd;font-weight: bold;font-size: 11px;'>0</td>
                  </tr>

 ";

Do you see that I used .= to append to the variable? This will add to your variable something from each iteration of the loop and then will add the last part after.

Comments

0

In a while loop, the basic code should be something like

$x=1
$var="<table>"; 
// here you can add a more "outside loop" rows
// like $var.="<tr><td>whatever content</td></tr>";

// then create content from the loop    
while($x <= 5) {
    $var.="<tr><td>$x</td></tr>";
    $x++;
}
// and close the table outside the loop
$var.="</table>";
echo $var;

Supposing you have to loop an array, the basic structure of your code should be something like:

$array=array("a", "b", "c");

$var="<table>"; 
// here you can add a more "outside loop" rows
// like $var.="<tr><td>whatever content</td></tr>";

// then create content from the loop
foreach ($array as $item) {
    $var.="<tr><td>$item</td></tr>";
}   
// close the table outside the loop
$var.="</table>";
echo $var;

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.