webForumDet fria alternativet

Får inte med $id vid submit

PHPur PHP

71 svar · 3 202 visningar · startad av maweer

Medlem sedan juli 2012123 inlägg
Frågan#1

Jag borde egentligen kanske inte startat en ny tråd, då jag redan har berört detta i en tidigare. Ber om ursäkt i så fall!
Men, då felet egentligen inte har med den andra tråden att göra, så valde jag att jag göra så här. (dock är det samma kod) :)

Nu till min fråga: Hur får jag med värdet från id i en submit?
Jag får nämligen inte det nu när jag submitar mitt formulär

Ber nu om ursäkt för mycket kod!!!!

<?php 
include "conn.php"; 

if(isset($_POST['Spara'])) { // om knappens namn är Spara 
$namn1 = isset($_POST['namn1']) ? 1 : 0; 
$namn2 = isset($_POST['namn2']) ? 1 : 0; 
$namn3 = isset($_POST['namn3']) ? 1 : 0; 
$namn4 = isset($_POST['namn4']) ? 1 : 0; 
$namn5 = isset($_POST['namn5']) ? 1 : 0; 

$insert = "INSERT INTO ".eva_spelningar." (namn1, namn2, namn3, namn4, namn5) 
          VALUES ('$namn1', '$namn2', '$namn3', '$namn4', '$namn5') WHERE id = '{$_POST['id']}'"; 

       mysql_query($insert); 
    
    header("Location: form.php?id=".$_POST['id']);
    exit;

}
 
?> 
 
<html> 
<head> 
<title>Eva Evenemang</title> 
</head> 
<body> 

<div align="left">Skriv in evenemanget<br>
 
<div align="left">
 
<form action="write.php" method="post" enctype="multipart/form-data" class="padding">
<input type="hidden" name="MAX_FILE_SIZE" value="3000">

<div align="left">
  
<b><FONT FACE="Arial" SIZE=1 COLOR="#003366">Tid <font color="#FF0000">(ex. 13:00)</font>:</b><br>
 
<input type="text" name="tid" style="width: 160px;"><br>
 
<b><FONT FACE="Arial" SIZE=1>Datum <font color="#FF0000">(Y-M-D)</font>:</b><br>
 
<input type="text" name="datum" style="width: 160px;"><br>
 
<b><FONT FACE="Arial" SIZE=1>Var:</b><br>
 
<input type="text" name="plats" style="width: 160px;"><br>
 
<b><FONT FACE="Arial" SIZE=1>Detaljerad beskrivning:</b><br>
<textarea name="beskrivning" cols="35" rows="6"></textarea><br>
 
 
<br>
<input type="file" name="karta">&nbsp;<input type="submit" name="klar" value="Skicka">
</form>

</div> 
</form></div>
<font face=Georgia size=2><b>Alla evenemang<P>
</font>
<div>
<?php 

$sql = mysql_query("SELECT * FROM eva_spelningar ORDER BY id DESC"); 

if (mysql_num_rows($sql) == 0)  {
   echo "</b><font face=Georgia size=2 color=black>För tillfället finns inga evenemang";
}

while ($rad = mysql_fetch_array($sql))

 { 

   $id = $rad['id'];
   $tid = $rad['tid']; 
   $datum = $rad['datum'];
   $plats = $rad['plats']; 

   
   echo("<div align=\left\><div id=\form\>");
   echo("<table border=0 cellpadding=1 cellspacing=1 bordercolor=000000>"); 
   echo(" <td witdh=300><tr>");
   echo("<tr  width=150 class=listrow onMouseOver=this.style.backgroundColor='#cccccc' onMouseOut=this.style.backgroundColor='#ffffff'>");
   echo("<td width=90><font face=Georgia size=2><b>Datum</td>
<td><font face=Georgia size=2><b>Tid</td>
<td width=400><b><font face=Georgia size=2>Plats</td>
<td width=100><font face=Georgia size=2><b>namn1</td>
<td width=100><font face=Georgia size=2><b>namn2</td>
<td width=100><font face=Georgia size=2><b>namn3</td>
<td width=100><font face=Georgia size=2><b>namn4</td>
<td width=100><font face=Georgia size=2><b>namn5</td>
<td><a href=\"delete.php?id={$rad['id']}\" onclick=\"javascript:return confirm('Säkert att du vill radera ?');\"><IMG SRC=delete.gif border=0></a></td><td>&nbsp;</td><td><a href=\"beskrivning.php?id={$rad['id']}\">Läs mer!</a></td><tr>");

?>
<html> 
<head> 
</head> 
 
<body> 

<form action="form.php" method="post">
<input type="hidden" name="id" value="<?php $id ?>">
 
<?php

   echo("<td><font face=Georgia size=2>");
   echo($rad["datum"]); 
   echo("</td>");
   echo("&nbsp<td><font face=Georgia size=2>"); 
   echo($rad["tid"]);
   echo("&nbsp<td><font face=Georgia size=2>"); 
   echo($rad["plats"]); 
   echo("<td><font face=Georgia size=2>"); 
   echo'<input type="checkbox" name="namn1" value="namn1">';
   echo("<td><font face=Georgia size=2>"); 
   echo'<input type="checkbox" name="namn2" value="namn2">';
   echo("<td><font face=Georgia size=2>"); 
   echo'<input type="checkbox" name="namn3" value="namn3">';
   echo("<td><font face=Georgia size=2>"); 
   echo'<input type="checkbox" name="namn4" value="namn4">';
   echo("<td><font face=Georgia size=2>"); 
   echo'<input type="checkbox" name="namn5" value="namn5">';
   echo("<td>");
   echo '<input type="submit" value="Spara" name="Spara">';
   echo("</table>");
} 
 
?>    

</div>
<style type="text/css"> 
a {text-decoration: none} 
<style> 
 
</form>
</body> 
</html>

Om jag har förstått det rätt så, det ända sättet att få med värdet på $id i en submit är att göra en <input type="hidden=....>
Jag har testat både med
<input type="hidden" name="id" value="<?php echo $_GET['id'] ?>">
och den som ligger inne ovanstående kod och jag har testat att lägga dom på vid dom olika <form>elementen också

Vore jätte tacksam för er hjälp! :)

Medlem sedan juni 20019 519 inlägg
#2

$_GET är när du postar ett formulär med methoden GET (eller en länk är också ett GET anrop) du har lagrat värdet i variablen $id och echo skriver ut det till dokumentet, så det borde vara:

<?php echo $id ?>

antingen få du ha det i en hidden eller så få du ha det till sidan du postar den till:

<form action="sidan.php?id=<? echo $id?>">
...
</form>

Jag undra om du har rätt HTML markup i din kod... ser ut som du har stänger </form> fler gånger än vad du öppnar den sen öppnar du och stänger olika element.

Medlem sedan juli 2012123 inlägg
#3

Ja just det hade ju glömt echo :P
När jag gjorde så här

<form action="form.php" method="post">
<input type="hidden" name="id" value="<?php echo $id ?>">

Så såg min URL rätt ut
....../eva_spelningar/form.php?id=2, men det kvittade om jag kryssade i en annan post så var det ändå id=2 som skulle ha blivit id=200 som kom upp i urln. Inget värde lades heller till i min tabell.

Det andra alternativet

<form action="sidan.php?id=<? echo $id?>">

Såg min url ut så här
....../eva_spelningar/form.php?namn=namn&Spara=Spara och inget lades tyvärr in i min tabell här heller

Medlem sedan juni 20019 519 inlägg
#4

du måste ha metod post på den. då kommer sidan.php har $_POST (alla dina input fält) och $_GET kommer ha 'id'.

Ett tips är att indentera din kod och rensar upp den. Nu vet jag inte vad du vill köra med för doctype men en hel del av dina element är riktigt gamla och borde skrivas in som CSS för ändra utseendet på dom.

Medlem sedan juli 2012123 inlägg
#5

Jodå, jag hade method post på den. Det var bara jag som var lite lat här på formuet bara :)
identera? (nytt ord för mig :)) Menar du att gruppera koden för att få den lätt läst?

Hahaha, jo, det är nog så sant det du säger :)
Jag har egentligen en css som ligger i den första html taggen

<style type="text/css"> 
<!-- 
body { 
   font-family: Arial; 
   font-size: 11px; 
   background: #FFFFFF; 
} 
 
form { 
   width: 50%; 
   align: center; 
   background: #F5F5F5; 
   border: 1px solid #E4E4E4; 
} 
 
#form { 
   width: 50%; 
   align: center; 
   background: #F5F5F5; 
   border: 1px solid #E4E4E4; 
   padding: 5px; 
} 
 
.padding { 
   padding: 5px; 
} 
 
--> 
</style>

men jag plockade bort den här, för jag tyckte att det blev för mycket kod.
Eller det var inte det som du menade? :)

Medlem sedan juni 20019 519 inlägg
#6

du har jätta många element med med design bitar i (font exempelvis bör du inte ens använda dig av). Ditt <form> med ett id har du i en loop, vilket kommer innebära att du förmodligen ha fler formulär på sidan med exakt samma ID, vilket inte är tillåtet, du öppnar <p> innan du stänger en <b>... mycket av din HTML kod känns som du kan korta ner och lägga in CSS för de bitarna istället.

Medlem sedan juli 2012123 inlägg
#7

Jo, du har så jätte rätt faktiskt :)
Jag skall försöka städa lite i koden :)
Men, det skall väl egentligen vara samma id då jag egentligen bara uppdaterar tabellen då någon klickar i en checkbox (tanken var så i alla fall haha)

Medlem sedan juni 20019 519 inlägg
#8

det id jag pratar om är HTML idn... och HTML specifikationen har aldrig tillåtit flera element med samma IDn

Medlem sedan juli 2012123 inlägg
#9

Aha...
Hur gör man ett unikt HTML id?
Dvs om det nu går

Medlem sedan juni 20019 519 inlägg
#10

maweer skrev:

Aha...
Hur gör man ett unikt HTML id?
Dvs om det nu går

antingen använder du inte attributet id="xxx" på dina element (behövs egentligen bara när du kör med javascript) du kan använda CSS klasser för att sätta vilket utseende element skall ha.

Medlem sedan juli 2012123 inlägg
#11

Nu har jag rensat och städat i min kod iaf :)

<?php 
include "conn.php"; 

if(isset($_POST['Spara'])) { // om knappens namn är Spara 
$tony = isset($_POST['tony']) ? 1 : 0; 
$ulf = isset($_POST['ulf']) ? 1 : 0; 
$carina = isset($_POST['carina']) ? 1 : 0; 
$anders = isset($_POST['anders']) ? 1 : 0; 
$magnus = isset($_POST['magnus']) ? 1 : 0; 

$insert = "INSERT INTO ".eva_spelningar." (tony, ulf, carina, anders, magnus) 
          VALUES ('$tony', '$ulf', '$carina', '$anders', '$magnus') WHERE id = '{$_POST['id']}'"; 

       mysql_query($insert); 
    
    header("Location: form.php?id=".$_POST['id']);
    exit;

}
 
?> 
 
<html> 
<head> 

<title>Eva Evenemang</title> 

<style type="text/css"> 
<!-- 

tog inte med någon css

--> 
</style>

</head> 
<body> 

<div id="1" align="left">Skriv in evenemanget<br>
 
<form action="write.php" method="post" enctype="multipart/form-data" class="padding">
<input type="hidden" name="MAX_FILE_SIZE" value="3000">

Tid <font color=red>(ex. 13:00)</font><br>
 
<input type="text" name="tid" width: 160px;><br>
 
Datum <font color=red>(Y-M-D)</font>:<br>
 
<input type="text" name="datum" width: 160px;><br>
 
Var:<br>
 
<input type="text" name="plats" width: 160px;><br>
 
Detaljerad beskrivning:<br>
<textarea name="beskrivning" cols="35" rows="6"></textarea><br>
 
<br>
<input type="file" name="karta">&nbsp;<input type="submit" name="klar" value="Skicka">

</div> 
</form>

Alla evenemang

</body> 
</html> 

<div id="2">

<?php 

$sql = mysql_query("SELECT * FROM eva_spelningar ORDER BY id DESC"); 

if (mysql_num_rows($sql) == 0)  {
   echo "För tillfället finns inga evenemang";
}

while ($rad = mysql_fetch_array($sql))

 { 

   $id = $rad['id'];
   $tid = $rad['tid']; 
   $datum = $rad['datum'];
   $plats = $rad['plats']; 

   echo('<table class="gridtable">'); 
   echo("<td witdh=300></td>");
   echo("<tr  width=150>");
   echo("<th width=90>  Datum  </th>
         <th width=10>  Tid    </th>
         <th width=400> Plats  </th>
         <th width=100> Tony   </th>
         <th width=100> Ulf    </th>
         <th width=100> Carina </th>
         <th width=100> Anders </th>
         <th width=100> Magnus </th>
         <td><a href=\"delete.php?id={$rad['id']}\" onclick=\"javascript:return confirm('Säkert att du vill radera ?');\"><IMG SRC=delete.gif border=0></a></td><td>&nbsp;</td><td><a href=\"beskrivning.php?id={$rad['id']}\">Läs mer!</a></td>");
   echo("</tr>");   

?>

<html> 
 
<head> 
 
</head> 
 
<body> 

<form method="post" action="<?php echo $PHP_SELF;?>">
<input type="hidden" id="<?php echo $id; ?>" value="<?php echo $id; ?>">

<?php

   echo("<td>");
   echo($rad["datum"]); 
   echo("</td>");

   echo("<td>"); 
   echo($rad["tid"]);
   echo("</td>");

   echo("<td>"); 
   echo($rad["plats"]);
   echo("</td>");

   echo("<td> <input type='checkbox' name='tony' value='tony'> </td>");

   echo("<td> <input type='checkbox' name='ulf' value='ulf'> </td>");

   echo("<td> <input type='checkbox' name='carina' value='carina'> </td>");

   echo("<td> <input type='checkbox' name='anders' value='anders'> </td>");

   echo("<td> <input type='checkbox' name='magnus' value='magnus'> </td>");

   echo("<td> <input type='submit' value='Spara' name='Spara'> </td>");
   echo("</table>");

} 
 
?>    

</div> 
</form>
</body> 
</html>

Har jag lyckats med att få till ett unikt HTML id, eller är jag fortfarande ute och cycklar :)

Det lustiga är nu att om jag visar källkoden i min webläsare så skriver den ut alla id och jag tror till och med att det ser rätt ut, och om jag använder mig av

<input type="hidden" name="id" value="<?php echo $id ?>">

så blir urln ....../eva_spelningar/form.php?id=2 och tyvärr blir det så på alla poster och inget skrivs in i tabellen.
Använder jag

<input type="hidden" id="<?php echo $id; ?>" value="<?php echo $id; ?>">

så blir urln ....../eva_spelningar/form.php?id= och inga poster skrivs in

Jag fattar verkligen inte vad jag gör fel :)

Medlem sedan juni 200032 967 inlägg
#12

Har jag lyckats med att få till ett unikt HTML id, eller är jag fortfarande ute och cycklar

HTML-koden ser riktigt hemsk ut.

  1. Du har flera <html>, <head> och <body> (till exempel)
  2. ID:n får inte börja på en siffra.

Angående ditt url-strul: du måste ha nog med name-attributet i ditt hidden-fält. Och eftersom du använder metoden POST så kommer inte id-attributet till url:en, utan då måste hämta in det med $_POST när du ska läsa värdena.

Dessutom; i dina input-element står det width: 160px;. Det måste du ha i style="" - som i ditt första inlägg.

Medlem sedan juni 200032 967 inlägg
#13

Ta också för vana att validera din html-kod hos w3c (http://validator.w3.org/). Förutom att man får bättringsförslag så lär man sig mycket genom validering.

mvh

Medlem sedan juni 200032 967 inlägg
#14

För tydlighetens skull:

HTML-koden ser riktigt hemsk ut.

Det är absolut inte meningen att du ska ta illa upp av det jag skrev - det var inte så jag menade. :)

Alla är nybörjare någon gång - och man måste göra fel för att sedan göra rätt om man ska lära sig någonting. :)

mvh

Medlem sedan juni 20019 519 inlägg
#15
  1. ID:n får inte börja på en siffra.

HTML5 tillåter detta dock nu... hela min värld har fallit ihop ;)

Angånde IDn på html element, undvik det om du kan.... du behöver egentligen bara det för att leta upp unika element med Javascript.

Medlem sedan juni 200032 967 inlägg
#16

voigtann1 skrev:

HTML5 tillåter detta dock nu... hela min värld har fallit ihop ;)

Amen SHIT alltså! Vad kommer härnäst? Jag är besviken!

Medlem sedan juli 2012123 inlägg
#17

Hahaha ojdå, är det så illa :)
Jag är tacksam för tips på vad som kan göras bättre i min HTML-kod!

  1. Hur menar du där? var har jag fler <html>, <head> och <body>
  2. ja just det, det stämmer ju

Men...hämtar jag inte in det med $_POST då?

Medlem sedan juli 2012123 inlägg
#18

voigtann1 skrev:

Angånde IDn på html element, undvik det om du kan.... du behöver egentligen bara det för att leta upp unika element med Javascript.

Då räcker det alltså bara med <div> och </div>

Medlem sedan juli 2012123 inlägg
#19

@nders skrev:

Ta också för vana att validera din html-kod hos w3c (http://validator.w3.org/). Förutom att man får bättringsförslag så lär man sig mycket genom validering.

mvh

Tack för tipset :)
Men, jisses...det blev en hel del fel kan jag ju säga....huuuu!!

Medlem sedan juli 2012123 inlägg
#20

Hmmm...måste säga att jag nog inte blev mycket klokare haha
Skall alla html-taggar avslutas med /> typ <br/> istället för <br>
eller vad menas med

Line 89, Column 53: end tag for "input" omitted, but OMITTAG NO was specified
<input type="text" name="tid" style="width: 160px;"><br/>
You may have neglected to close an element, or perhaps you meant to "self-close" an element, that is, ending it with "/>" instead of ">".

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