【问题标题】:How to put if in an variable in HTML/PHP如何将 if 放入 HTML/PHP 中的变量中
【发布时间】:2019-08-01 13:26:43
【问题描述】:

我刚开始接触 PHP,并没有很多知识。但我想通过按一个按钮生成邮件。到目前为止有效。但现在我有例如 Row Anrede: ".$row["anrede"]."%0D%0A。这是与 Herr、Frau 和 Other 的 ENUM。但是我也用其他语言(FR,IT)得到了它,我想为 Herr 输出 Monsineur,为 Frau 输出 Madamme,为 Other 输出 autres。

我试过了

 "if ($row['anrede'] == 'Herr' ){
              echo "Monsieur";
          }
          if ($row['anrede'] == 'Frau') {
              echo "Madame"; 
          }       
          if ($row['anrede'] == 'other') {
              echo "autres"; 
          }"

这里是完整的代码

<!DOCTYPE html>
<html>
    <head>
    <meta charset="utf-8">
    </head>
    <body>


    <?php
    $host = "";
    $username = "";
    $password = "";
    $dbname = "";
    $port = "";
    $socket = "";

    // initiate new mysqli object
    $mysqli = new mysqli($host, $username, $password, $dbname, $port, $socket);

    if(mysqli_connect_errno())
    {
      printf("Verbindungsfehler:  %s\n". mysqli_connect_error());
      exit();
    }

    $queryString = "SELECT anrede, vorname, nachname, strasse , plz, ort , strasser, plzr, ortr, firma, funktion, email, sektion, anfahrt, uebernachtung, status, ksprache, usprache, aktiv FROM tab_teilnehmer WHERE aktiv = 1";
    $queryResult = $mysqli->query($queryString);



    while ($row = mysqli_fetch_assoc($queryResult)) {

      echo "<tr>";
      echo "<td><a href='mailto:" . $row["email"] . "?subject=Test&amp;body=      
------------------DE------------------    
%0D%0AVielen Dank für Ihre Anmeldung Frau/Herr " . $row["nachname"] ."
%0D%0AHier Ihre Anmeldedaten:%0D%0A%0D%0A
Anrede:: ".$row["anrede"]."%0D%0A
Vorname: ".$row["vorname"]."%0D%0A
Nachname: ".$row["nachname"]."%0D%0A
Strasse: ".$row["strasse"]."%0D%0A
PLZ/Ort: ".$row["plz"].", ".$row["ort"]."%0D%0A
Strasse(Rechn.): ".$row["strasser"]."%0D%0A
PLZ/Ort(Rechn.): ".$row["plzr"].", ".$row["ortr"]."%0D%0A
Firma: ".$row["firma"]."%0D%0A
Funktion: ".$row["funktion"]."%0D%0A
E-Mail: ".$row["email"]."%0D%0A
Anfahrt: ".$row["anfahrt"]."%0D%0A
Übernachtungsart: ".$row["uebernachtung"]."%0D%0A
Sektion: ".$row["sektion"]."%0D%0A
Status: ".$row["status"]."%0D%0A
Korrespondenz-/Übersetzungssprache: ".$row["ksprache"].", ".$row["usprache"]."%0D%0A%0D%0A
------------------FR------------------
%0D%0AMerci beaucoup pour votre inscription madame/monsineur " . $row["nachname"] ."
%0D%0AVoici vos identifiants de connexion:%0D%0A%0D%0A
Anrede: ".$row["anrede"]."%0D%0A
Vorname: ".$row["vorname"]."%0D%0A
Nachname: ".$row["nachname"]."%0D%0A
Strasse: ".$row["strasse"]."%0D%0A
PLZ/Ort: ".$row["plz"].", ".$row["ort"]."%0D%0A
Strasse(Rechn.): ".$row["strasser"]."%0D%0A
PLZ/Ort(Rechn.): ".$row["plzr"].", ".$row["ortr"]."%0D%0A
Firma: ".$row["firma"]."%0D%0A
Funktion: ".$row["funktion"]."%0D%0A
E-Mail: ".$row["email"]."%0D%0A
Anfahrt: ".$row["anfahrt"]."%0D%0A
Übernachtungsart: ".$row["uebernachtung"]."%0D%0A
Sektion: ".$row["sektion"]."%0D%0A
Status: ".$row["status"]."%0D%0A
Korrespondenz-/Übersetzungssprache: ".$row["ksprache"].", ".$row["usprache"]."%0D%0A%0D%0A
------------------IT------------------
%0D%0AGrazie mille per la vostra registrazione signora/signore " . $row["nachname"] ."
%0D%0AEcco i tuoi dati di accesso:%0D%0A%0D%0A
Anrede: ".$row["anrede"]."%0D%0A
Vorname: ".$row["vorname"]."%0D%0A
Nachname: ".$row["nachname"]."%0D%0A
Strasse: ".$row["strasse"]."%0D%0A
PLZ/Ort: ".$row["plz"].", ".$row["ort"]."%0D%0A
Strasse(Rechn.): ".$row["strasser"]."%0D%0A
PLZ/Ort(Rechn.): ".$row["plzr"].", ".$row["ortr"]."%0D%0A
Firma: ".$row["firma"]."%0D%0A
Funktion: ".$row["funktion"]."%0D%0A
E-Mail: ".$row["email"]."%0D%0A
Anfahrt: ".$row["anfahrt"]."%0D%0A
Übernachtungsart: ".$row["uebernachtung"]."%0D%0A
Sektion: ".$row["sektion"]."%0D%0A
Status: ".$row["status"]."%0D%0A
Korrespondenz-/Übersetzungssprache: ".$row["ksprache"].", ".$row["usprache"]."
      '>Mail</a></td>"; 
        echo "</tr>";
    } 

    ?>  

    </body>
</html>

【问题讨论】:

  • 我不太确定为什么上面有这么多重复,但我可以说生成的 HTML 将无效,因为您没有 table 标签,只需开始使用 tr
  • 您能否将代码减少到您遇到的最小部分,并提供您解决问题的尝试?
  • 生成所有文本,加上换行符作为电子邮件正文的内联代码可能不是最好的方法——我觉得这很容易被打破
  • “但我也得到了其他语言(FR,IT)”你如何确定使用哪种语言?
  • 首先'Herr''必须是'Herr'

标签: php html email mailto


【解决方案1】:

可能是这样的

在循环中添加这个(你的while)

if ($row['anrede'] == 'Herr' ){
    $temp = "Monsieur";
}
if ($row['anrede'] == 'Frau') {
    $temp = "Madame";
}
if ($row['anrede'] == 'other') {
    $temp = "autres";
}

您需要根据anrede 值将值设置到变量中。 如果anrede 的值为Frau,则将$temp 的值设置为Madame。并在您想要的地方拨打$temp

【讨论】:

    【解决方案2】:

    您必须停止打印,然后添加 if 条件,然后继续打印。或者您可以考虑使用三元组,但我会坚持您的想法以提高可读性。

    像这样:

    echo "<td><a href='mailto:" . $row["email"] . "?subject=Test&amp;body=      
    ------------------DE------------------    
    %0D%0AVielen Dank für Ihre Anmeldung Frau/Herr " . $row["nachname"] ."
    %0D%0AHier Ihre Anmeldedaten:%0D%0A%0D%0A
    Anrede:: ";
    
    if ($row['anrede'] == 'Herr' ){
        echo "Monsieur";
    } else if ($row['anrede'] == 'Frau') {
        echo "Madame"; 
    } else if ($row['anrede'] == 'other') {
        echo "autres"; 
    }
    
    echo "%0D%0A
    Vorname: ".$row["vorname"]."%0D%0A
    ......";
    // continue echo
    

    【讨论】:

    • 错误是什么?编辑了我的答案,将'Herr'' 替换为'Herr'
    • 非常感谢!
    【解决方案3】:

    我会建议这个switch sn-p,它可以防止通知,当$row['anrede'] 不会被设置时,还有echo-ing 而不是使用$temp 变量。

    $anrede = isset($row['anrede']) ? $row['anrede'] : null;
    
    switch($anrede) {
     case 'Herr':
       echo 'Monsieur';
     break;
     case 'Frau':
       echo 'Madame';
     break;
     default:
       echo 'autres';
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-30
      • 1970-01-01
      • 2011-09-26
      • 2018-07-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多