Permalänk
Medlem

Problem med Undefined Index

Hejsan!

Jag håller på och gör ett litet administrationssystem till en sida jag håller på med. Nu när jag har gjort allting, det fungerar att uppdaterar informationen i databasen med hjälp av administrationssystemet men hela tiden står det:

Notice: Undefined index: submit in B:\wamp\www\idl\admin\homepage.php on line 34

Koden på line 34 är:

if($_POST['submit']){
$sql = "UPDATE `content` SET `text`='".$_POST['content']."'";
$res = mysql_query($sql) or die(mysql_error());
}

Vad är problemet? :S Har även gjort så att det står <pre></pre> i textboxen man skriver in det nya innehållet i och varje gång jag klickar Spara ändringar så tillkommer det 1 eller 2 nya <pre></pre>. Vad gör jag för att få bort detta?

Permalänk
Medlem

Förmodligen för att du inte initierat eller använt $_POST['submit'] variabeln.

Visa signatur

Fractal Design Arc Svart | MSI Z68A-GD55 G3 REV B3 | Intel® Core i7 2600K, 3.4GHz, 8MB | Corsair 16GB (4x4096MB) CL9 1600Mhz VENGEANCE LP | MSI GeForce GTX 670 | Phanteks PH-TC14PE CPU Cooler (vit) | Corsair Power Supply 650W TX M, Modular, ATX, PS/2 | SSD (okänd tillverkare) + 2 äldre SATA2 diskar på 750 Gb, 350 gb. | OS: Microsoft Windows 10 home.

Permalänk
Medlem

$sql = "SELECT `text` FROM `content`"; $res = mysql_query($sql) or die(mysql_error()); while($row = mysql_fetch_assoc($res)){ echo "<form action=\"homepage.php\" method=\"post\">"; echo "<table colspan=\"0\" cellspacing=\"3\" cellpadding=\"3\">"; echo "<tr><td>Innehåll:</td><td><textarea name=\"content\"><pre>$row[text]</pre></textarea></td></tr>"; echo "<tr><td colspan=\"2\" align=\"right\"><input type=\"submit\" name=\"submit\" value=\"Spara Ändringar\">"; echo "</table></form>"; } if($_POST['submit']){ $sql = "UPDATE `content` SET `text`='".$_POST['content']."'"; $res = mysql_query($sql) or die(mysql_error()); }

Så ser koden ut. Vad är det som är fel? Har jag satt saker och ting på fel plats?

Permalänk
Medlem

Testa lägga till isset i if satsen.

Så att den ser ut såhär:

if(isset($_POST['submit'])){

Sen vet jag inte om du kommer lägga ut denna sida på internet men oavsett så bör du läsa på om SQL-injections.

Permalänk
Medlem

Först så behöver du inte en echo för varje rad utan kan skriva typ:

<code>
echo("

Strängar att eka ut.

");
</code>

Sedan är det lite vanskligt att låta koden triggas av SUBMIT.

Jag skulle nog använda ett:
<code>
<input type="hidden" name="do" value="save_form">
</code>

och sedan istället för:

<code>
if($_POST['submit']){
$sql = "UPDATE `content` SET `text`='".$_POST['content']."'";
$res = mysql_query($sql) or die(mysql_error());
}
</code>

göra så här istället:

<code>
if($_POST['do'] == 'save_form'){
$sql = "UPDATE `content` SET `text`='".$_POST['content']."'";
$res = mysql_query($sql) or die(mysql_error());
}
</code>

Visa signatur

Fractal Design Arc Svart | MSI Z68A-GD55 G3 REV B3 | Intel® Core i7 2600K, 3.4GHz, 8MB | Corsair 16GB (4x4096MB) CL9 1600Mhz VENGEANCE LP | MSI GeForce GTX 670 | Phanteks PH-TC14PE CPU Cooler (vit) | Corsair Power Supply 650W TX M, Modular, ATX, PS/2 | SSD (okänd tillverkare) + 2 äldre SATA2 diskar på 750 Gb, 350 gb. | OS: Microsoft Windows 10 home.

Permalänk
Medlem

Ang. <pre></pre>:

<textarea name=\"content\"><pre>$row[text]</pre></textarea>

Problemet uppstår då du lägger in <pre> inne i textarea-elementet. Detta görs varje gång och när du sparar kommer det att följa med in i databasen. När du sedan visar det igen kommer du ha det som kommer från databasen + den extra du lagt ut.

Permalänk
Medlem

Tror det är kopplat till isset som hamre säger. Sen skulle jag också lägga in en header redirect för att rensa ut sidan på post data etc.

Visa signatur

Ei bor i stockholm och tar inget ansvar för allt som han säger
i5 2500k, 16 gig ram, radeon 6950
Solna arbetscenter