webForumDet fria alternativet
Logga in / Bli medlem

Undefined index

PHP

18 svar · 630 visningar · startad av tanten

Medlem sedan nov. 20051 596 inlägg
Trådstart#1

Ser inte vad som är fel, kan någon hjälpa mig?
Jag får Undefined index: submit in /home/...on line 95 och det är den första/enda if-satsen i denna kod som är rad 95:

<?php
if($_POST['submit'])
{
   $namn= $_POST['namn'];
   $besk = $_POST['besk'];
   $finnsi = $_POST['finnsi'];
      
   $result=mysql_query("INSERT INTO smultron (nr,namn,besk,finnsi)".
      "VALUES ('', '$namn', '$besk', '$finnsi')"); 

    //confirm
   echo "Query Finished"; 
}
else
{
// stänger php för att lägga in html-kod
?>
<h3>Lägg till en plats</h3>
 <form method="post" action="socknar.php">
 Namn<input type="text" name="namn" />
 Beskrivning <textarea name="besk"></textarea>
 <input type="hidden" name="finnsi" /><?php $r['ID']?>
 <input type="submit" value="submit" name="submit" /></form> 
 
 <?php
} //close the else statement
?>

Tabellen ser ut så här:

smultron (
  `nr` int(11) NOT NULL auto_increment,
  `namn` varchar(200) NOT NULL default '',
  `besk` text NOT NULL,
  `finnsi` int(11) NOT NULL default '',
  PRIMARY KEY  (`nr`),
  KEY `finnsi` (`finnsi`)

Eftersom jag är ny på detta får ni säga till om ni ser något annat tok också :)

Medlem sedan dec. 20025 483 inlägg
#2

Är det POST-metoden du använder för att skicka formuläret?

Annars kan du testa

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

Red./ Ser nu att det faktiskt är POST som används... :r

Medlem sedan juni 20006 031 inlägg
#3

ändra din sql sats till

$result=mysql_query("INSERT INTO smultron (namn,besk,finnsi)".
      "VALUES ('$namn', '$besk', '$finnsi')");

eftersom nr är autoincrement så ska du inte lägga in något där, det sköts ju automatiskt.

Medlem sedan nov. 20051 596 inlägg
#4

Peter S skrev:

Är det POST-metoden du använder för att skicka formuläret?

Annars kan du testa

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

Med det försvann index-felet men ingenting matas in i databasen... så det måste finnas något mer fel, men får inget error... :(

Medlem sedan nov. 20051 596 inlägg
#5

Jag provade med din Pedda också, men fortfarande matas inget in i databasen...

Medlem sedan juni 20006 031 inlägg
#6

Inget felmeddelande?

lägg till die för att få ett felmeddelande om det är i sql satsen.
annars så verkar du ju inte komma in i if-satsen.

 $result=mysql_query("INSERT INTO smultron (namn,besk,finnsi)".
      "VALUES ('$namn', '$besk', '$finnsi')") or die(mysql_error()) ;

/red
skrivs "Query Finished" ut när du har postat?

Medlem sedan nov. 20051 596 inlägg
#7

Nej inget felmeddelande... Vid submit hoppar den tillbaka till sidan där man börjar så den verkar inte behålla något av nånting... i vare sig variabler eller arrays. Felet kanske finns någon annan stans. Orkar du se hela koden? Inte så lång

Medlem sedan juni 20006 031 inlägg
#8

Då kommer du ju inte in i if-satsen.
Testa med endast

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

Funkar inte det så visa mer kod.

Medlem sedan nov. 20051 596 inlägg
#9

Fungerade inte.

<?php
$query = "SELECT *
          FROM socknar";
          
$result = mysql_query($query);
echo "<ul>";
while ($r = mysql_fetch_array($result)) {
   echo("<li><a href=\"socknar.php?hid={$r['ID']}\">");
   echo($r['namn'] . "</a></li>\n");
}
echo "</ul>";

if (isSet($_GET['hid']) && isDigit($_GET['hid']) && checksocknar($_GET['hid'])) 
   $ID = $_GET['hid'];
else {
   echo "<p>Våra socknar, Välj någon</p>";
   exit(); 
}
 $query = "SELECT * FROM socknar WHERE ID = $ID";
$result = mysql_query($query);
if ($h = mysql_fetch_array($result)) {
   echo "<div id=\"container\" >  <h1>{$h['namn']}</h1>";
	}
$query = "SELECT *
FROM `smultron`
WHERE finnsi = $ID";
$result = mysql_query($query);
while ($om = mysql_fetch_array($result)) {
   echo "<h2>{$om['namn']} </h2>";
	echo "<p>{$om['besk']} </p>\n";
	} 
?>
 
<?php
if(isset($_POST['submit']))
{

och sedan det jag har skrivit in men med dina ändringar.

Medlem sedan juni 20006 031 inlägg
#10

Ok, ser nu att du inte skickar med idnummret rätt i ditt hiddenfält för "finnsi"

 <input type="hidden" name="finnsi" /><?php $r['ID']?>

ändrar du till

 <input type="hidden" name="finnsi" value="<?=$finnsi?>" />

Sen får vi se om det funkar.

/red
jag gjorde lite fel

Medlem sedan nov. 20051 596 inlägg
#11

Nej det fungerar fortfarande inte... men är din senastee ändring rätt, för jag får ingen färgmarkering i min texteditor?

Medlem sedan juni 20006 031 inlägg
#12

ja, <?=$finnsi?> är en förkortning av <?php echo $finnsi; ?>

Medlem sedan nov. 20051 596 inlägg
#13

Så ska den väl fånga socknarnas ID väl? Har suttit så länge med det här nu att jag börjar bli riktigt trött :-)

Medlem sedan juni 20006 031 inlägg
#14

Arghh, jag måste vara trött.
$finnsi är ju inte satt när du har formuläret uppe. Det ska ju vara

<input type="hidden" name="finnsi" value="<?=$_GET['hid']?>" />

Sen får vi se om det funkar, för du verkar ju ännu inte komma in i if-satsen.

Medlem sedan nov. 20051 596 inlägg
#15

Nej det vill sig inte. Ska nog sova på saken för nu rullar ögon i kors. Kanske ser man lite klarare efter lite vila... Tack så mycket så här långt :-)

Medlem sedan juni 20006 031 inlägg
#16

Nu har jag testat din kod och den funkar här hos mig iaf.

Medlem sedan nov. 20051 596 inlägg
#17

Jag blir sååå avundsjuk!...
Klipper jag ut formuläret och kör det ensamt med ett satt ID i det så får jag "Query Finished" men aldeles tomt i databasen.
Kör jag den som den ser ut här med hela koden kommer jag till "Våra socknar, Välj någon", så då fungerar ingenting.
Tar jag bort formuläret och matar in smultron manuellt så fungerar det perfekt... Suck!
Finns det något i formulär-koden som inte fungerar med php 4.1?

Medlem sedan juni 20006 031 inlägg
#18

Ok, funkade för att jag tog bort alla sql-satser och sånt när jag testade.
Du har koden:

if (isSet($_GET['hid']) && isDigit($_GET['hid']) && checksocknar($_GET['hid']))
   $ID = $_GET['hid'];
else {
   echo "<p>Våra socknar, Välj någon</p>";
   exit();
}

När du postar formuläret så har du ju inte hid i adressfältet vilket gör att du kommer in i din else-sats där du har exit() vilket gör att koden stoppas från vidare exekvering.

Lägg if-satsen där du kollar $_POST['submit'] i en egen fil som körs när formuläret postas istället.

Medlem sedan nov. 20051 596 inlägg
#19

Det fick bli en till fil... Tack så jättemycket Pedda för hjälpen.

249 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)