webForumDet fria alternativet

Undefined index

18 svar · 630 visningar · startad av tanten

tantenMedlem sedan nov. 20051 596 inlägg
#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å :)

Peter SMedlem 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

PeddaMedlem sedan juni 20006 032 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.

tantenMedlem 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... :(

tantenMedlem sedan nov. 20051 596 inlägg
#5

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

PeddaMedlem sedan juni 20006 032 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?

tantenMedlem 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

PeddaMedlem sedan juni 20006 032 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.

tantenMedlem 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.

PeddaMedlem sedan juni 20006 032 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

tantenMedlem 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?

PeddaMedlem sedan juni 20006 032 inlägg
#12

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

tantenMedlem 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 :-)

PeddaMedlem sedan juni 20006 032 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.

tantenMedlem 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 :-)

PeddaMedlem sedan juni 20006 032 inlägg
#16

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

tantenMedlem 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?

PeddaMedlem sedan juni 20006 032 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.

tantenMedlem sedan nov. 20051 596 inlägg
#19

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

146 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
144 ms — hämta tråd, inlägg och bilagor (db)