if (isset($_POST['submit']) && $_POST['submit'] == 'Submit') {
- Apostrofer runt strängdata i SQL.
$query = "UPDATE besk
SET namn = '$as_namn',
besk = '$as_besk
WHERE namn = '$namn'";
6 svar · 300 visningar · startad av tanten
Försöker lära mig olika sorters formulär och vill gärna att denna ska fungera.
Den ska hämta raden besk i tabellen hest så man kan ändra i den.
Eftersom travhästnamn är unika tänkte jag man skulle hämta besk direkt på namnet i stället för ett id. Men det fungerar inte. Dessutom får jag två Undefined index: som jag markerat i koden med rad 15 och 37.
Någon som har lust att hjälpa mig? Får en känsla av att jag tänkt lite fel eller mycket... exemplet är taget ut php5 and mysql bible
if ($_POST['submit'] == 'Submit') { <---rad 15
//formatera data
$namn =$_POST['namn'];
$as_namn = addslshes($namn);
$besk = $_POST['besk'];
$as_besk = addslashes($_POST['besk']);
//uppdatera beskrivningen
$query = "UPDATE besk
SET namn = '$as_namn',
besk = '$as_besk
WHERE namn = $namn";
$result = mysql_query($query);
if (mysql_affected_rows() == 1) {
$success_msg = '<p> Beskrivningen har blivit uppdaterad!</p>';
}else{
error_log(mysql_error());
$success_msg = '<p>Något blev fel</p>';
}
}else{
// Hämta namn och besk
$namn = $_GET['namn']; <---rad37
$query ="SELECT besk
FROM `hest`
WHERE `namn` = '$namn'";
$result = mysql_query($query);
$besk_arr = mysql_fetch_array($result);
$namn = stripslashes($besk_arr[0]);
$besk = stripslashes ($besk_arr[1]);
}
$thispage = $_SERVER['PHP_SELF'];
$form_page = <<< EOFORMPAGE
<style type="text/css">
<!--
body, p { color:#000; font-family: verdana; font-size: 11px; }
h1{ font-size: 13px; }
-->
</style>
<body>
<table>
<tr>
<td></td><td><h1> Ändra Hästfundering</h1>
<form method="post" action="$thispage">
<input type="text" name="namn" value="$namn" /><br /><br />
<textarea name="besk">$besk</textarea>
<br /><br />
<input type="submit" name="submit" value="Submit" /></form>
</td></tr></table></body>
</body>
</html>
EOFORMPAGE;
echo $form_page;
?> {
if (isset($_POST['submit']) && $_POST['submit'] == 'Submit') {
$query = "UPDATE besk
SET namn = '$as_namn',
besk = '$as_besk
WHERE namn = '$namn'";
Nu försvann index-felet på rad 15, men 37:an är kvar.
Jag blir lite konfunderad på hur det ska hämta besk, när då? Inte förrän efter man fyllt i namnet väl.
Är det meningen man ska submitta två gånger?
Det framgår inte i bokexemplet...
Nu försvann index-felet på rad 15, men 37:an är kvar.
Du får göra en isset()-kontroll där också.
if (isset(....))
$namn = .....
Jag blir lite konfunderad på hur det ska hämta besk, när då? Inte förrän efter man fyllt i namnet väl.
Det spelar väl ingen roll i vilken ordning den hämtar fälten från det postade formuläret?
Är det meningen man ska submitta två gånger?
Nej, det kan jag inte tänka mig.
- - - - -
Det vore också najsigt om du indenterade koden ordentligt, så man ser hur koden hänger ihop. Lättare att felsöka, lättare att koda vidare.
- - - - -
Du borde också få ett felmeddelande här:
$namn = stripslashes($besk_arr[0]);
... eftersom du i SQL-frågan endast hämtar beskrivningsfältet. Lägg till namn först i SELECT-delen i SQL-frågan så du kan få ut det i resultatsetet. Hämta alla fält du behöver för uppdateringen på samma gång, och uppdatera allt en gång.
@nders skrev:
Det spelar väl ingen roll i vilken ordning den hämtar fälten från det postade formuläret?
Är det meningen man ska submitta två gånger?
Nej, det kan jag inte tänka mig.
Jag gissar att jag missat något väsentligt innan man kommer fram till formuläret eftersom det ser ut så här nu http://gotlandssidor.se/comment_edit.php
- - - - -
@nders skrev:
Det vore också najsigt om du indenterade koden ordentligt, så man ser hur koden hänger ihop. Lättare att felsöka, lättare att koda vidare.
:r Är något jag också försöker lära mig, men glömde det när jag skrev som det såg ut i boken...
- - - - -
@nders skrev:
Du borde också få ett felmeddelande här:
$namn = stripslashes($besk_arr[0]);... eftersom du i SQL-frågan endast hämtar beskrivningsfältet. Lägg till namn först i SELECT-delen i SQL-frågan så du kan få ut det i resultatsetet. Hämta alla fält du behöver för uppdateringen på samma gång, och uppdatera allt en gång.
Har jag gjort nu men eftersom jag inte kommit dit att formuläret visar någonting alls så... vet jag inte om felet försvunnit.
if (isset(....))
$namn = .....
Har försökt skriva ut det, men fixar det inte tydligen, för indexfelet blir kvar. Kan du visa hur det ska se ut?
Jag gissar att jag missat något väsentligt ...
En sak kan väl vara att du ska skicka ett giltigt hästnamn till sidan med querystring?
Kan du visa hur det ska se ut?
Nej, jag kan egentligen inte PHP. Jag är programmerare, och kan programmering, men språket php kan jag inte. Så, visa koden som den ser ut nu (gärna indenterad), så kanske jag eller någon annan kan peka med hela handen om det är något uppenbart . :)
mvh
OK... har bara plötsligt fått ett annat problem mitt i alltihop. Har fått en glappkontakt i datorn, som gör att den plötsligt dör, så det blir ständiga omstarter. Typiskt en lördag... Får se hur mycket jag lyckas göra... så kommer jag inte tillbaka så har den dött på riktigt...