Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 206
  • Last Modified:

formatting php output in to a variable

Hi,

I have been trying unsuccessfully to get the output from the code below into a single variable. I need to be able to pass the output from the  info shown here in an email receipt. I have been trying to get the output into a hidden form field which I could then pass along. Would this be a good way to do it? If so how?
<?php
  for($i=0; $i<=4; $i++)
    if($_REQUEST['L_QTY'.$i]>=1)
    {
      ?>
      <tr>
        <td align="left" valign="top"><?=$_REQUEST['L_QTY'.$i]?></td>
        <td align="left" valign="top"> </td>
        <td align="left" valign="top"><?=$_REQUEST['L_NAME'.$i]?></td>
        <td align="left" valign="top"> </td>
        <td align="left" valign="top"><?=$_REQUEST['L_DESC'.$i]?></td>
      </tr>
      <?php
    }
  ?>

Open in new window

0
jackie777
Asked:
jackie777
  • 6
  • 4
  • 3
1 Solution
 
Michel PlungjanIT ExpertCommented:
You mean

<?php
  $htmlString = "<table>";
  for($i=0; $i<=4; $i++) {
    if($_REQUEST['L_QTY'.$i]>=1)
    {
      $htmlString .= '<tr>';
      $htmlString .= '<td align="left" valign="top">'.$_REQUEST['L_QTY'.$i].'</td>';
      $htmlString .= '<td align="left" valign="top"> </td>';
      $htmlString .= '<td align="left" valign="top">'.$_REQUEST['L_NAME'.$i].'</td>';
      $htmlString .= '<td align="left" valign="top"> </td>';
      $htmlString .= '<td align="left" valign="top">'.$_REQUEST['L_DESC'.$i].'</td>';
      $htmlString .= '</tr>';
    }
  }
  $htmlString.='</table>';
  echo $htmlString;
?>

Open in new window

0
 
Michel PlungjanIT ExpertCommented:
or even

<?php
  $htmlString = "<table>";
  for($i=0; $i<=4; $i++) {
    if($_REQUEST['L_QTY'.$i]>=1)
    {
      $htmlString .= '<tr valign="top">';
      $htmlString .= '<td>'.$_REQUEST['L_QTY'.$i].'</td>';
      $htmlString .= '<td>&nbsp;</td>';
      $htmlString .= '<td>'.$_REQUEST['L_NAME'.$i].'</td>';
      $htmlString .= '<td>&nbsp;</td>';
      $htmlString .= '<td>'.$_REQUEST['L_DESC'.$i].'</td>';
      $htmlString .= '</tr>';
    }
  }
  $htmlString.='</table>';
  echo $htmlString;
?>

Open in new window

0
 
jackie777Author Commented:
Thanks mplungjan

I think that might be the right idea, but I still cannot seem to get the value for $htmlString to pass to the next page. Here is how I formatted my hidden input.




<input type="hidden" name="products" value="<? $htmlString ?>" />

Open in new window

0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 
jackie777Author Commented:
I don't need to pass along the entire <table>, only the values of ['L_QTY'.$i] ['L_NAME'.$i] ['L_DESC'.$i]
0
 
Michel PlungjanIT ExpertCommented:
how about



<?php
  for($i=0; $i<=4; $i++) {
    if($_REQUEST['L_QTY'.$i]>=1)
    { ?>
      <input type="hidden" name="L_QTY[]" value="<? echo $_REQUEST['L_QTY'.$i]; ?>">
      <input type="hidden" name="L_NAME[]" value="<? echo $_REQUEST['L_NAME'.$i]; ?>">
      <input type="hidden" name="L_DESC[]" value="<? echo $_REQUEST['L_DESC'.$i]; ?>">
    <? } 
  }?>

Open in new window

0
 
jackie777Author Commented:
No, that didn't work either, I did manage to figure out how to pass along all the variables, however I am now having trouble writing an if statement to only pass along the variables that have a L_QTY value that is greater than 0
<input type="hidden" name="L_QTY0" value="<? echo $_REQUEST['L_QTY0']; ?>" />
<input type="hidden" name="L_NAME0" value="<? echo $_REQUEST['L_NAME0']; ?>" />
<input type="hidden" name="L_DESC0" value="<? echo $_REQUEST['L_DESC0']; ?>" />
<input type="hidden" name="L_QTY1" value="<? echo $_REQUEST['L_QTY1']; ?>" />
<input type="hidden" name="L_NAME1" value="<? echo $_REQUEST['L_NAME1']; ?>" />
<input type="hidden" name="L_DESC1" value="<? echo $_REQUEST['L_DESC1']; ?>" />
<input type="hidden" name="L_QTY2" value="<? echo $_REQUEST['L_QTY2']; ?>" />
<input type="hidden" name="L_NAME2" value="<? echo $_REQUEST['L_NAME2']; ?>" />
<input type="hidden" name="L_DESC2" value="<? echo $_REQUEST['L_DESC2']; ?>" />
<input type="hidden" name="L_QTY3" value="<? echo $_REQUEST['L_QTY3']; ?>" />
<input type="hidden" name="L_NAME3" value="<? echo $_REQUEST['L_NAME3']; ?>" />
<input type="hidden" name="L_DESC3" value="<? echo $_REQUEST['L_DESC3']; ?>" />
<input type="hidden" name="L_QTY4" value="<? echo $_REQUEST['L_QTY4']; ?>" />
<input type="hidden" name="L_NAME4" value="<? echo $_REQUEST['L_NAME4']; ?>" />
<input type="hidden" name="L_DESC4" value="<? echo $_REQUEST['L_DESC4']; ?>" />

Open in new window

0
 
Michel PlungjanIT ExpertCommented:
If you add the [], php makes it into an array for you

If you need to check a string you might want to make it a number first - I do not have the php syntax to do that
0
 
webvogelCommented:
I don't know exaktly where the problem is. You have to make a hidden input field for every variable and not for the hole html code.

If you need this html code more than once, you can make a function.

But if it is only a display site, you can send your mail direktly or not?

Try this:
<?php
  for($i=0; $i<=4; $i++)
    if($_REQUEST['L_QTY'.$i]>=1)
    {
      ?>
      <input type="hidden" name="<?=$_REQUEST['L_QTY'.$i]?>" value="<?=$_REQUEST['L_QTY'.$i]?>" />
      <input type="hidden" name="<?=$_REQUEST['L_NAME'.$i]?>" value="<?=$_REQUEST['L_NAME'.$i]?>" />
      <input type="hidden" name="<?=$_REQUEST['L_DESC'.$i]?>" value="<?=$_REQUEST['L_DESC'.$i]?>" />
      <?php
    }
  ?>

Open in new window

0
 
Michel PlungjanIT ExpertCommented:
That does not make sense. To pass the value as name.
0
 
webvogelCommented:
Sorry, I'am tired
<?php
  for($i=0; $i<=4; $i++)
    if($_REQUEST['L_QTY'.$i]>=1)
    {
      ?>
      <input type="hidden" name="<?='L_QTY'.$i?>" value="<?=$_REQUEST['L_QTY'.$i]?>" />
      <input type="hidden" name="<?='L_NAME'.$i?>" value="<?=$_REQUEST['L_NAME'.$i]?>" />
      <input type="hidden" name="<?='L_DESC'.$i?>" value="<?=$_REQUEST['L_DESC'.$i]?>" />
      <?php
    }
  ?>

Open in new window

0
 
Michel PlungjanIT ExpertCommented:
But that is what I did, I just used the smarter [] notation which creates PHP arrays

Try this - convert the quantity to an integer using intval:



<?php
  for($i=0; $i<=4; $i++) {
    if(intval($_REQUEST['L_QTY'.$i])>=1)
    { ?>
      <input type="hidden" name="L_QTY[]" value="<? echo $_REQUEST['L_QTY'.$i]; ?>">
      <input type="hidden" name="L_NAME[]" value="<? echo $_REQUEST['L_NAME'.$i]; ?>">
      <input type="hidden" name="L_DESC[]" value="<? echo $_REQUEST['L_DESC'.$i]; ?>">
    <? } 
  }?>
 
e.g.
 
<input type="hidden" name="L_QTY[]" value="First filled quantity">
<input type="hidden" name="L_NAME[]" value="First filled name">
<input type="hidden" name="L_DESC[]" value="First filled description">
<input type="hidden" name="L_QTY[]" value="Second filled quantity">
<input type="hidden" name="L_NAME[]" value="Second filled name">
<input type="hidden" name="L_DESC[]" value="Second filled description">

Open in new window

0
 
jackie777Author Commented:
That worked, Thanks!
0
 
webvogelCommented:
My english is not very good.

I like the [] notation too. But maybe he need the combination of the name (1,2,3,4) and the value.

<?php
  for($i=0; $i<=4; $i++) {
    if(intval($_REQUEST['L_QTY'.$i])>=1)
    { ?>
      <input type="hidden" name="L_QTY[<?=$i?>]" value="<? echo $_REQUEST['L_QTY'.$i]; ?>">
      <input type="hidden" name="L_NAME[<?=$i?>]" value="<? echo $_REQUEST['L_NAME'.$i]; ?>">
      <input type="hidden" name="L_DESC[<?=$i?>]" value="<? echo $_REQUEST['L_DESC'.$i]; ?>">
    <? } 
  }?>

Open in new window

0

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

  • 6
  • 4
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now