2017-05-28 3 views
0

Ich habe ein Problem mit meinem PHP. In meinem Code zeigt es, dass der Text <?php if (!empty()) { echo ; } ?> im Wert des Textfelds angezeigt wird, wenn ich das Skript ausführe. Ich möchte den Text in dem Wert nicht entfernen, da ich sie beim Öffnen des Popups verwenden muss, um die Liste der Zeichenfolgen aus der Variablen $email_str einzugeben, damit ich die Liste der Zeichenfolgen in der Textbox ausgeben kann. HierWie blende ich den Text im Textboxwert aus?

ist der Code:

<?php 

include('config.php'); 

if($_GET['id'] != '') 
{ 
    $id = $_GET['id']; 
    $readDateTime = date("Y-m-d h:i:s"); 
    mysql_query("update tracker set isRead='1', readDateTime='$readDateTime' where id='$id'"); 
    header('Location: http://robsite.com/phpmailer/examples/blank.jpg'); 
    exit; 
} 
else 
{ 


    echo "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'> 
<html xmlns='http://www.w3.org/1999/xhtml'> 
    <head> 
     <meta http-equiv='Content-Type' content='text/html; charset=utf-8' /> 
    <title>Send Email</title> 
    <link type='text/css' rel='stylesheet' href='style.css' /> 
    <script src='jquery-1.12.0.js'></script> 
    <script> 
     $(document).ready(function(){ 
      $('#popup').click(function(event) { 
       event.preventDefault(); 

       var popup = window.open('add_address.php', '_blank', 'toolbar=yes, scrollbars=yes, resizable=yes, top=100, left=500, width=400, height=400'); 
       if (popup != null && !popup.closed) { 
       var element = popup.document.getElementById('thePopupField'); 
       var text = $('#theField').val(); 
       if(text != ''){ 
        var count = (text.match(/,/g) || []).length; 
        popup.my_count = count+1; 
        popup.my_special_setting = text.replace(/,/g, '\n'); 
       } 
       } 

      }); 
     }); 
    </script> 
    </head> 
    <body> 
    <!----> 
    <form action='pr_send.php' method='POST' id='theForm'> 
    <table> 
     <!-- <tr> 
      <td>From:</td> 
      <td><input type='text' name='from'></td> 
     </tr> --> 
     <tr> 
      <td><input type='button' name='to' value='' style='height:24px; width:24px; background: url(\"addressbook.png\"); border:none;' id='popup' > To:</td> <!--onClick='Popup()'--> 
      <td><input type='text' id='theField' name='to' value='<?php if (!empty($email_str)) { echo $email_str; } ?>' style='height:15px; width:650px'>&nbsp;(<span id='noOfEmails'>0</span>)</td> 
     </tr> 
     <tr> 
      <td>Subject:</td> 
      <td><input type='text' name='subject' style='height:15px; width:650px'></td> 
     </tr> 
     <tr> 
      <td>Message:</td> 
      <td><textarea name='message' cols='90' rows='20'></textarea></td> 
     </tr> 
     <tr> 
      <td colspan='2' align='left'> 
       <input type='submit' name='send' value='' style='height:35px; width:100px; background: url(\"send.png\"); border:none'> 
      </td> 
     </tr> 

    </table> 
    </form> 
    </body> 
<!--<script type='text/javascript'> 
var popup = null; 
function Popup() 
{ 
    window.open('add_address.php', '_blank', 'toolbar=yes, scrollbars=yes, resizable=yes, top=100, left=500, width=400, height=400'); 
} 
function closePopUp() 
{ 
    if (popup) 
    { 
    popup.close(); 
    } 
} 

</script>--> 

</html>"; 
} 

    if (!empty($_POST['message'])) 
    { 
    $emails = explode("\n", $_POST['message']); // explode textarea on a line break into an array 
    $email_str = implode(", ", $emails); // take each of the emails and implode together with the , 

    echo '<script> closePopUp(); </script>'; //call javascript function 
    } 
?> 

Wenn ich den Code in HTML lief, es funktioniert gut, wie der Text nicht in der Textbox zeigte.

Wie kann ich den Text in den Wert ausblenden, wenn ich den HTML-Code in PHP ausführen?

+0

konnte man u se input type hidden – rtfm

+0

@rtfm Es tut mir leid, aber ich kann nicht den Eingabe-Typ ausgeblendet, weil ich die Texteingabe verwende, wie ich die Textbox sehen möchte, wenn ich das Skript ausführen. –

Antwort

0

Das Problem ist, dass Sie Ihr PHP-Tag innerhalb der Zeichenfolge haben, die Sie mit Ihrer echo drucken. Mit dem vorgeschlagenen Fix führen Sie den PHP-Code aus und verknüpfen ihn mit der HTML-Zeichenfolge, die Sie drucken möchten.

<?php 

include('config.php'); 

if($_GET['id'] != '') 
{ 
    $id = $_GET['id']; 
    $readDateTime = date("Y-m-d h:i:s"); 
    mysql_query("update tracker set isRead='1', readDateTime='$readDateTime' where id='$id'"); 
    header('Location: http://robsite.com/phpmailer/examples/blank.jpg'); 
    exit; 
} 
else 
{ 

    $email = !empty($email_str) ? $email_str : ""; 
    $html = "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'> 
<html xmlns='http://www.w3.org/1999/xhtml'> 
    <head> 
     <meta http-equiv='Content-Type' content='text/html; charset=utf-8' /> 
    <title>Send Email</title> 
    <link type='text/css' rel='stylesheet' href='style.css' /> 
    <script src='jquery-1.12.0.js'></script> 
    <script> 
     $(document).ready(function(){ 
      $('#popup').click(function(event) { 
       event.preventDefault(); 

       var popup = window.open('add_address.php', '_blank', 'toolbar=yes, scrollbars=yes, resizable=yes, top=100, left=500, width=400, height=400'); 
       if (popup != null && !popup.closed) { 
       var element = popup.document.getElementById('thePopupField'); 
       var text = $('#theField').val(); 
       if(text != ''){ 
        var count = (text.match(/,/g) || []).length; 
        popup.my_count = count+1; 
        popup.my_special_setting = text.replace(/,/g, '\n'); 
       } 
       } 

      }); 
     }); 
    </script> 
    </head> 
    <body> 
    <!----> 
    <form action='pr_send.php' method='POST' id='theForm'> 
    <table> 
     <!-- <tr> 
      <td>From:</td> 
      <td><input type='text' name='from'></td> 
     </tr> --> 
     <tr> 
      <td><input type='button' name='to' value='' style='height:24px; width:24px; background: url(\"addressbook.png\"); border:none;' id='popup' > To:</td> <!--onClick='Popup()'--> 
      <td><input type='text' id='theField' name='to' value='".$email."' style='height:15px; width:650px'>&nbsp;(<span id='noOfEmails'>0</span>)</td> 
     </tr> 
     <tr> 
      <td>Subject:</td> 
      <td><input type='text' name='subject' style='height:15px; width:650px'></td> 
     </tr> 
     <tr> 
      <td>Message:</td> 
      <td><textarea name='message' cols='90' rows='20'></textarea></td> 
     </tr> 
     <tr> 
      <td colspan='2' align='left'> 
       <input type='submit' name='send' value='' style='height:35px; width:100px; background: url(\"send.png\"); border:none'> 
      </td> 
     </tr> 

    </table> 
    </form> 
    </body> 
<!--<script type='text/javascript'> 
var popup = null; 
function Popup() 
{ 
    window.open('add_address.php', '_blank', 'toolbar=yes, scrollbars=yes, resizable=yes, top=100, left=500, width=400, height=400'); 
} 
function closePopUp() 
{ 
    if (popup) 
    { 
    popup.close(); 
    } 
} 

</script>--> 

</html>"; 

echo $html; 
} 

    if (!empty($_POST['message'])) 
    { 
    $emails = explode("\n", $_POST['message']); // explode textarea on a line break into an array 
    $email_str = implode(", ", $emails); // take each of the emails and implode together with the , 

    echo '<script> closePopUp(); </script>'; //call javascript function 
    } 
?> 
+0

vielen Dank dafür, aber es gibt einen Fehler: "unerwartete T_IF". Hast du eine Idee, warum ich das bekomme? –

+0

Weil Sie innerhalb eines Echos keine if-Anweisung ausführen können. Tun Sie dies: 'value = ''. (! Empty ($ email_str)? $ Email_str: ''.) ''' Das heißt, einen ternären Operator für die if-Anweisung zu verwenden, und wenn die Variable leer ist, Es wird nur einen leeren Wert haben. – junkfoodjunkie

+0

@junkfoodjunkie danke, aber ich bekomme dies in der Textbox jetzt. (! Empty()?: 'Jede Idee ?? –

0

Sie erstellen eine HTML-Seite als PHP-Zeichenfolge, versuchen jedoch, PHP-Code in diese PHP-Zeichenfolge einzuschließen.

PHP läuft auf der Serverseite, nicht auf dem Client. Wenn Sie PHP-Code als Text an den Client senden, wird dieser ignoriert.

Sie geben auch $ email_str keinen Wert, bis Sie es bereits verwendet haben.

Verschieben Sie den Code, um $ email_str festzulegen, bevor Sie ihn verwenden, und geben Sie auch den Standardwert "" an, wenn die POST-Daten nicht vorhanden sind.

Dann gilt für Ihr Echo, spaltete es in 3 Teile:

  • ersten Teil des Seitenstrings bis zu value =‘
  • echo $ email_str (die Sie jetzt auf "", wenn kein POST)
  • Rest Seite

Code

echo "<!DOCTYPE html PUBLIC '-//W3 ... <input type='text' id='theField' name='to' value='"; 
echo $email_str 
echo "' style='height:15px; width:65 ... </html>"; 
+0

Vielen Dank für Ihren Rat. Ich bin mir nicht wirklich sicher Was erwartest du von mir? Kannst du mir ein Beispiel zeigen, wie ich sehen möchte, was ich richtig machen muss? Danke! –

+0

bearbeitet, siehe Code hinzugefügt.oder wie @junkfoodjunkie sagt, dass Sie einfach $ email_str in den gigantischen String einfügen können und PHP den Wert ersetzen lassen (das heißt, die Bits loswerden). Das ist in Ordnung, wenn Sie $ email_str einen Standardwert von "" geben –

Verwandte Themen