Hejsa, jeg er ny både her på siden og temmelig ny inden for webprogrammering, så jeg tror og håber I kan hjælpe mig.
Jeg er ved at lave en side hvor der blandt andet skal være mulighed for at til- og framelde sig et nyhedsbrev. Efter at have kigget mig lidt rundt har jeg skrevet følgende:
<?php //Tilmeld nyhedsbrev function tilmeld_nyhed() { include('common.inc.php'); $email = $_POST['email']; $result = mysqli_query("select * from tblbrev where email ='$email'"); $row = mysqli_fetch_array($result);
if (mysqli_num_rows($result) == 1) { echo "<div id='slet_email'>"; echo "<strong>E-Mailen $email findes allerede</strong><br />Hvis du har fået ny E-Mail indtast venligst denne her<br /> E-Mail <strong>$email</strong> i slet feltet og tryk slet fra denne liste"; echo "</div>"; } else { mysqli_query("insert into tblbrev (email) values('$email')") or die(mysqli_error()); echo "<div id='slet_email'>"; echo "Du er nu oprettet i listen med <strong>$email</strong><br /> Tryk på slet din email fra listen for at framelde dig"; echo "</div>"; } } if ($_GET['function'] == "tilmeld_nyhed") { tilmeld_nyhed(); } ?>
<?PHP //Frameld nyhedsbrev function frameld_nyhed() { include('common.inc.php'); $slet_email = $_POST['slet_email']; $result = mysqli_query("select * from tblbrev where email ='$slet_email'"); $row = mysqli_fetch_array($result);
if (mysqli_num_rows($result) == 0) { echo "<div id='slet_email'>"; echo "Den email <strong>$slet_email</strong> du prøver at slette eksisterer ikke<br />Prøv venligst igen"; echo "</div>"; } else { mysqli_query("delete from tblbrev where email = '$slet_email'") or die(mysqli_error()); echo "<div id='slet_email'>"; echo "E-Mailen <strong>$slet_email</strong> er slettet nu"; echo "</div>"; } } if($_GET['function'] == "frameld_nyhed") { frameld_nyhed(); } ?>
<div id="brevform"> <h4>Tilmeld dig nyheder</h4> <form action="brev.php?function=tilmeld_nyhed" method="post"> E-Mail <input type="text" name="email"value=" Din E-Mail"<br /> <input type="submit" value="Tilføj din mail til listen" name="submit"> </form> <br /> <h4>Frameld dig nyheder</h4> <form action="brev.php?function=frameld_nyhed" method="post"> E-Mail <input type="text" name="slet_email"value=" Din E-Mail"<br /> <input type="submit" value="Slet din mail fra listen" name="submit"> </form> </div>
Mit problem er at jeg allerede ved at vise siden i browseren (firefox) får følgende fejl:
Notice: Undefined index: function in /Applications/MAMP/htdocs/vb/brev.php on line 34
Notice: Undefined index: function in /Applications/MAMP/htdocs/vb/brev.php on line 63
Går jeg videre og udfylder "tilmeld nyhed" får jeg denne fejl:
Warning: mysqli_query() expects at least 2 parameters, 1 given in /Applications/MAMP/htdocs/vb/brev.php on line 16
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, null given in /Applications/MAMP/htdocs/vb/brev.php on line 17
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, null given in /Applications/MAMP/htdocs/vb/brev.php on line 19
Warning: mysqli_query() expects at least 2 parameters, 1 given in /Applications/MAMP/htdocs/vb/brev.php on line 28
Warning: mysqli_error() expects exactly 1 parameter, 0 given in /Applications/MAMP/htdocs/vb/brev.php on line 28
<?php //Tilmeld nyhedsbrev function tilmeld_nyhed() { include('common.inc.php'); $email = $_POST['email']; $result = mysql_query("select * from tblbrev where email ='$email'"); $row = mysql_fetch_array($result);
if (mysql_num_rows($result) == 1) { echo "<div id='slet_email'>"; echo "<strong>E-Mailen $email findes allerede</strong><br />Hvis du har fået ny E-Mail indtast venligst denne her<br /> E-Mail <strong>$email</strong> i slet feltet og tryk slet fra denne liste"; echo "</div>"; } else { mysql_query("insert into tblbrev (email) values('$email')") or die(mysql_error()); echo "<div id='slet_email'>"; echo "Du er nu oprettet i listen med <strong>$email</strong><br /> Tryk på slet din email fra listen for at framelde dig"; echo "</div>"; } } if ($_GET['function'] == "tilmeld_nyhed") { tilmeld_nyhed(); } ?>
<?PHP //Frameld nyhedsbrev function frameld_nyhed() { include('common.inc.php'); $slet_email = $_POST['slet_email']; $result = mysql_query("select * from tblbrev where email ='$slet_email'"); $row = mysql_fetch_array($result);
if (mysql_num_rows($result) == 0) { echo "<div id='slet_email'>"; echo "Den email <strong>$slet_email</strong> du prøver at slette eksisterer ikke<br />Prøv venligst igen"; echo "</div>"; } else { mysql_query("delete from tblbrev where email = '$slet_email'") or die(mysql_error()); echo "<div id='slet_email'>"; echo "E-Mailen <strong>$slet_email</strong> er slettet nu"; echo "</div>"; } } if($_GET['function'] == "frameld_nyhed") { frameld_nyhed(); } ?>
<div id="brevform"> <h4>Tilmeld dig nyheder</h4> <form action="brev.php?function=tilmeld_nyhed" method="post"> E-Mail <input type="text" name="email"value=" Din E-Mail"><br /> <input type="submit" value="Tilføj din mail til listen" name="submit"> </form> <br /> <h4>Frameld dig nyheder</h4> <form action="brev.php?function=frameld_nyhed" method="post"> E-Mail <input type="text" name="slet_email"value=" Din E-Mail"><br /> <input type="submit" value="Slet din mail fra listen" name="submit"> </form> </div>
Dine to første fejl skyldes at når du første gang loader siden, så tjekker du $_GET['function'] for en værdi. Men dette index i variablen $_GET er ikke sat endnu, derfor kommer den med en besked. Du kan ændre det ved at ret til: if (isset($_GET['function']) && $_GET['function'] == "tilmeld_nyhed") { tilmeld_nyhed(); }
Og
if(isset($_GET['function']) && $_GET['function'] == "frameld_nyhed") { frameld_nyhed(); } Således tjekker php først om indexet er sat, hvis ikke springer den videre i kode.
Ang din fejl på mysqli, så mangler du en parameter på din mysqli_query() og din mysqli_fetch_array(). mysqli_query skal som første paramter have din mysqli forbindelse variabel, dvs noget ala: $result = mysqli_query($connection, "select * from tblbrev where email ='$email'");
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.