PHP MySQLi zickt bei PHP7


#1
Hallo zusammen
Ich habe folgenden Code:
PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
        "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <meta http-equiv="imagetoolbar" content="no">
 <meta http-equiv="Content-Script-Type" content="text/javascript">
 
  <link rel="stylesheet" href="./form.css" type="text/css">
  <title>Apartmentvermietung Buchungsformular V4.5</title>
  </head>
  <body>
    <?
  
  //include('db_connection.php');
  $link = mysqli_connect("localhost", "xy", "passwort", "datenbank", 3306);
  require_once('./functions.php');
 
error_reporting(-1);
 
  ?>
 
 
 
 
  <script type='text/javascript'>
var bn_who="";
function kalender(s)
{    document.getElementById('bn_frame').style.top=yPos + "px";
    document.getElementById('bn_frame').style.left=xPos + "px";
    document.getElementById('bn_frame').style.display='block';   
    bn_who=s;
}

init_mousemove();

var xPos="";
var yPos="";
var docEl = (   typeof document.compatMode != "undefined" &&
                 document.compatMode        != "BackCompat"
                )? "documentElement" : "body";

function init_mousemove()
{    if(document.layers) document.captureEvents(Event.MOUSEMOVE);
    document.onmousemove =    dpl_mouse_pos;
}

function dpl_mouse_pos(e)
{   xPos    =  e? e.pageX : window.event.x;
      yPos    =  e? e.pageY : window.event.y;

    
    if (document.all && !document.captureEvents && docEl)
    {   xPos    += document[docEl].scrollLeft;
        yPos    += document[docEl].scrollTop;
    }
    
    if (document.layers) routeEvent(e);
}
</script>
 
  <div id = "gesamt">
    <div id = "logo">
      <img src="./images/logo2.png">
    </div>
    <div id="info">
      Liebe Melanie, Liebe Karin, hiermit erhaltet Ihr ein kleines Tool zum Erstellen von Mietverträgen für eure <b>Ferienwohnungn</b> in Heiligenhafen.
      <br>
      Hier habt Ihr die Möglichkeit, die Daten des Kunden, Reisezeit (bitte im Format <b>tt.mm.jjjj</b> eingeben) sowie die Anzahl der Personen, die Mitreisen. Zusätzlich bestehen auch die Möglichkeiten, eine Reiserücktrittskostenversicherung, bzw Bettwäschepakete und Handtuchpakete zu bestellen.
      <p></p>
     <b>WICHTIG! <br>
      bei der Angabe der Personenanzahl die gesamt Anzahl eingeben. in den Feldern darunter wieviel Personen Kinder und Behinderte sind.
      
      <p font style="color:#ff0000;">
    
    Diese Angaben werden für die automatische Berechnung der Kurtaxe benötigt!!!!</p>
    <p font style="color:#ff0000;">
      Bei Zuschlägen oder Rabatten bitte ganze Werte eingeben. Zum Beispiel für Zuschläge: 10. Für Abzüge: -10!
    </b>
    
    </p>
    
    </div>
    
    
    
    <div id = "content">
  <center>
      <form action="mieten.php" method="POST" >
        <table width="95%">
        <tr>
          <td>
            Für welche Wohnung?
          </td>
          <td>
          <input type="radio" name="wohnung" value="G-8-10"> G-8-10
          <input type="radio" name="wohnung" value="F-5-7"> F-5-7
          <input type="radio" name="wohnung" value="H-10-3"> H-10-3
          </td>
          <?
           if($_GET['angebot']==''){
          ?>
          <td >
            |<input type="checkbox" name="sign" value="1" >
          </td>
          <td> Mit Unterschrift</td>
          <?}?>
        </tr>
          <tr>
              <td>
                  Anrede:
              </td>
              <td>
                  <select name ="anrede">
                      <option value="0">Bitte Auswählen</option>
                      <option value="Herrn">Herrn</option>
                      <option value="Frau">Frau</option>
                      <option value="Familie">Familie</option>
                </select>
              </td>
          </tr>       
          <tr>
            <td>
              Vorname:
            </td>
              
            <td>
              <input type="text" name="vname" class="login">
            </td>
            <td>
              Name:
            </td>
            <td>
              <input type="text" name="name" class="login">
            </td>
          </tr>
          <tr>
            <td>Straße/Nr.:</td>
            <td ><input type="text" name="anschrift" class="login"></td>
          
            <td>PlZ/Ort:</td>
            <td ><input type="text" name="ort" class="login"></td>
          </tr>
          
           <tr>
            <td>Telefonnummer:</td>
            <td ><input type="text" name="telefon" class="login"></td>
          
            <td>Email</td>
            <td ><input type="text" name="email" class="login"></td>
          </tr>
          
         <tr height="10">
            <td></td><td></td><td></td><td></td>
          </tr>
          <tr>
            <td>Reisebeginn:</td>
            <td ><input type='text' name='reisean' value='Anreisetermin' id='reisean'/> <img src='./bytecal/date_go.gif' alt='Klick to use Calendar input' onclick='kalender(document.getElementById("reisean"));'/>
            <!--<input type="text" name="reisean" class="login">-->
            </td>
            <td rowspan="10" colspan="2">
            <div id='bn_frame' style=' display:none; height:210px; width:205px; background-color:#ced7d6; overflow:hidden;'>
    <iframe src='./bytecal/bytecal.php'  style='width:208px; margin-left:-1px; border:0px; height:202px; background-color:#ced7d6; overflow:hidden;' border='0'></iframe>
</div>
            </td>
            
            
          </tr>
          <tr>
            <td>Reiseende:</td>
            <td ><input type='text' name='reiseab' value='Abreisetermin' id='reiseab'/> <img src='./bytecal/date_go.gif' alt='Klick to use Calendar input' onclick='kalender(document.getElementById("reiseab"));'/>
          </tr>
          
        
          <tr>
            <td colspan = "1">Personen:</td>
            <td colspan = "1" align="left"><input type="text" name="person" class="login"></td>
          </tr>
          <tr>
            <td colspan = "1">&nbsp;&nbsp;&nbsp;Davon Behind. > 80%</td>
            <td colspan = "1" align="left"><input type=text name="behind" value="0" onBlur="if(this.value=='') this.value='0'"; onFocus="if(this.value=='0') this.value=''"; class="login"></td>
          </tr>
          <tr>
            <td colspan = "1">&nbsp;&nbsp;&nbsp;Davon Kinder unter 18:</td>
            <td colspan = "1" align="left"><input type=text name="kind" value="0" onBlur="if(this.value=='') this.value='0'"; onFocus="if(this.value=='0') this.value=''"; class="login"></td>
          </tr>
           <tr> 
            <td colspan = "1">Rabatt/Zuschlagsgrund:</td>
            <td colspan = "1">
              <select name="rabatt_art">
              <?
              mysqli_set_charset($link,"utf8");
                $rabatt="SELECT * FROM zuschlag";
                echo $rabatt;
            $res_rabatt=mysqli_query($link, $rabatt);
            
            echo "<option>Bitte Rabatt/Zuschlag auswählen</option>\n";
            while ($row=mysqli_fetch_array($res_rabatt))
            {
              $id = $row['id'];
              $art = $row['art'];
              
              echo "<option value = \"$art\">$art</option>";
            }
              
              ?>
              </select>
            </td> 
          </tr> 
          <tr>
            <td colspan = "1">Wert des Zuschlags / Rabatt</td>
            <td colspan = "1" align="left"><input type=text name="rabatt" value="0" onBlur="if(this.value=='') this.value='0'"; onFocus="if(this.value=='0') this.value=''"; class="login"></td>
          </tr>
         <!-- <tr>
            <td colspan = "1">Kurtaxe:</td>

            <td colspan = "3" align="left"><input type="text" name="kurtaxe" class="login"></td>
          </tr>-->
          
          
</td>
          <tr height="10">
            <td></td><td></td><td></td><td></td>
          </tr>
          
          <tr>
            <td colspan = "1">Reiserücktrittsversicherung</td>
            <td colspan = "1"><input type="checkbox" name="rrv" value="1" class="check"></td>
          </tr>
           <tr>
            <td colspan = "1">Bettwäschepaket</td>
            <td colspan = "1"><input type="checkbox" name="bettw" value="1" class="check"></td>
          </tr>
           <tr>
            <td colspan = "1">Handtuchpaket</td>
            <td colspan = "1"><input type="checkbox" name="handt" value="1" class="check"></td>
          </tr>
          <tr>
            
             <table>
                  <tr>
                      <td>
                          Geburtstag des Antragstellers
                      </td>
                      <td>
                          <input type=text name="gebtag" value="Geburtstag Bucher" onBlur="if(this.value=='') this.value='Geburtstag Bucher'"; onFocus="if(this.value=='Geburtstag Bucher') this.value=''"; class="login">
                      </td>
                  <tr>
                      <td>
                          Mitreisender 1
                      </td>
                      <td>
                          <input type=text name="vnamemitr1" value="Vorname Mitreisender 1" onBlur="if(this.value=='') this.value='Vorname Mitreisender 1'"; onFocus="if(this.value=='Vorname Mitreisender 1') this.value=''"; class="login">
                      </td><td>
                          <input type=text name="namemitr1" value="Name Mitreisender 1" onBlur="if(this.value=='') this.value='Name Mitreisender 1'"; onFocus="if(this.value=='Name Mitreisender 1') this.value=''"; class="login">
                      </td><td>
                          <input type=text name="gebtag1" value="Geburtstag Mitreisender 1" onBlur="if(this.value=='') this.value='Geburtstag Mitreisender 1'"; onFocus="if(this.value=='Geburtstag Mitreisender 1') this.value=''"; class="login">
                      </td>                     
                  </tr>
                  <tr>
                      <td>
                          Mitreisender 2
                      </td>
                      <td>
                          <input type=text name="vnamemitr2" value="Vorname Mitreisender 2" onBlur="if(this.value=='') this.value='Vorname Mitreisender 2'"; onFocus="if(this.value=='Vorname Mitreisender 2') this.value=''"; class="login">
                      </td><td>
                          <input type=text name="namemitr2" value="Name Mitreisender 2" onBlur="if(this.value=='') this.value='Name Mitreisender 2'"; onFocus="if(this.value=='Name Mitreisender 2') this.value=''"; class="login">
                      </td><td>
                          <input type=text name="gebtag2" value="Geburtstag Mitreisender 2" onBlur="if(this.value=='') this.value='Geburtstag Mitreisender 2'"; onFocus="if(this.value=='Geburtstag Mitreisender 2') this.value=''"; class="login">
                      </td>                     
                  </tr>
                  
                  </table>
              </tr><tr>
            <td></td>
            <td>
            <?
              if ($_GET['angebot']=='ang'){
               echo "<input type=\"hidden\" name=\"typ\" value=\"angebot\">";
              }
              else{

            echo "<input type=\"hidden\" name=\"typ\" value=\"vertrag\">";
            }
                         ?>
            <input type="submit" name="erstellen" value="Senden" class="login"></td>
          </tr>
      
        </table>
      </form>
    </center>
    </div>
    
    <div id="copy">
      <center>&copy <? echo date('Y');?> - <a href = "http://www.geraldeggert.de" target = "neu">Gerald Eggert</a></center>
    
    
  </div>
 
  </body>
</html>
 <?
 mysqli_close($link);
 ?>
Folgendes Problem
Unter PHP 5.5.9 Ist alles tutti.
Unter PHP 7.3.5 Funktioniert die DB Abfrage nicht mehr und liefert keine Werte mehr. Auch werden die Hidden Inputs angezeigt. Als Beispiel habe ich die Printscreens angehängt.
Ich bin am verzweifeln und finde den Fehler nicht.
 

Anhänge

Sempervivum

Erfahrenes Mitglied
#2
Das fehlt das php bei dem öffnenden <?. Außerdem musst Du die GET-Variable auf Existenz prüfen. So funktioniert es:
Code:
            <?php
              if (isset($_GET['angebot']) && $_GET['angebot']=='ang'){
            echo "<input type=\"hidden\" name=\"typ\" value=\"angebot\">";
              }
              else{

            echo "<input type=\"hidden\" name=\"typ\" value=\"vertrag\">";
            }
                         ?>
Edit: Ich lese gerade, dass kurze öffnende Tag möglich sind, aber offensichtlich wird hier das > im String als Abschluss erkannt, obwohl es sich innerhalb eines Strings befindet.
 
Zuletzt bearbeitet:
#4
Hoi. Danke für die Rückmeldung. Hab in den Einstellungen das Short Tag erstmal wieder aktiviert. die Isset Anweisungen eingetragen. Jetzt funktioniert wieder alles.
Aber über werde das Tool jetzt php 7 fest machen. Ärgert mich, das ich einige Funktoinen komplett vergessen kann und mir Gedanken machen muss, wie ich die Umbaue. Oder ich stell meinen Server wieder auf 5.5.9 um.
Aber das ist auch nicht sinnvoll - wer Weis wann das dann auch verschwindet.
Danke euch erstmal.
 

Yaslaw

n/a
Moderator
#5
Du kommst nicht daran vorbei, ab und an dein Code auf die neuste Version anzuheben.
Bei mir auf der Arbeit (Java) macht das etwa 60% des Aufwandes aus.
 
#6
Tja ist leider bei mir Privatvergnügen ;-)
Früher konnte ich nebenbei von Arbeit noch was machen. Aber seit dem sie den FTP zugemacht haben... Und zu Hause fehlt mir die Zeit. Muss ich mir sie wohl nehmen.