webForumDet fria alternativet

Varför fungerar inte min update?

7 svar · 253 visningar · startad av kicki_an

kicki_anMedlem sedan jan. 200556 inlägg
#1

Hejsan!

Jag behöver hjälp... Har gjort ett formulär för inmating av olika länder och information om landet. Nu vill jag även kunna uppdatera informationen, men detta vill inte fungera. Jag har märkt att det är själva sql-update-fråge-raden som är den som gör att allting ballar ut, men kan inte se vad som är fel.

Tanken med det hela är att man matar in ett namn på ett land, trycker man på sök, ska infon om landet visas. Man ska sedan kunna ändra och sedan trycka på Uppdatera. I nuläget kan man mata in landets namn, och trycka på sök. Sedan blir sidan helt vit och tom.
Tar jag bort raden med update-frågan fungerar det. Men ändringen skrivs ju inte till databasen.

<?
if(isset($add))
{
	if($ocountry!="")
	{
		$check_existing = mysql_query("SELECT * FROM country_info WHERE country='$ocountry' AND status='1' ") OR die ("Error: " . mysql_error());
		$exist = mysql_num_rows($check_existing);
		if($exist==0)
		{
			$insert_new_row = mysql_query("INSERT into country_info(status,country,country_intro,country_text,date) VALUES('1','$ocountry','$ocountry_intro','$ocountry_text','$date')") OR die ("Error: " . mysql_error());
		}	
		else
		{
			echo "<p align='left'><font color='red'>Landet du försöker lägga till existerar redan!</font>";
			echo "<br><br>";
			echo "<a href='javascript:history.go(-1)'><--- Tillbaka</p>";
			exit;
		}
	}
	else
	{
		echo "<p align='left'><font color='red'>Du måste mata in ett land!</font>";
		echo "<br><br>";
		echo "<a href='javascript:history.go(-1)'><--- Tillbaka</p>";
		exit;
	}
}

if(isset($search))
{
	$get_countryinfo = mysql_query("SELECT * FROM country_info WHERE country='$ocountry' AND status=1 ") OR die ("Error: " . mysql_error());
	while($country_row = mysql_fetch_array($get_countryinfo)) 
	{	
		$ocountry_intro = $country_row['country_intro'];
		$ocountry_text = $country_row['country_text'];
		$ocountry = $country_row['country'];
	}
}

if(isset($update))
{
	if($ocountry!="")
	{
		$get_countryinfo = mysql_query("SELECT * FROM country_info WHERE country='$ocountry' AND status=1 ") OR die ("Error: " . mysql_error());
		$ocountry = "";
		while($country_row = mysql_fetch_array($get_countryinfo)) 
		{	
			$ocountry_id = $country_row['id'];
		}
		print $ocountry_id;
		if($ocountry_id!="")
		{
			print "Uppdaterar  ";
			$update_row = mysql_query("UPDATE country_info SET date='$date', country_intro='$ocountry_intro', country_text='$ocountry_text' WHERE id='$ocountry_id'"); OR die ("Error: " . mysql_error());
		}
		else
		{
			print "Lägger till ny  ";
			$insert_new_row = mysql_query("INSERT into country_info(status,country,country_intro,country_text,date) VALUES('1','$ocountry','$ocountry_intro','$ocountry_text','$date')") OR die ("Error: " . mysql_error());
		}	
//		else
//		{
			
//			while($country_rad = mysql_fetch_array($check_existing)) 
//			{
//				$ocountry_id=countr_rad['id'];				
//		}
/*
			$update_row = mysql_query("UPDATE country_info SET status='1', date='$date', country_intro='$ocountry_intro', country_text='$country_text' WHERE id='$ocountry_id'"); OR die ("Error: " . mysql_error());
			$alter_property = mysql_query("UPDATE properties SET date='$date',area='$area',country='$country',city='$city',name='$name',class='$class', address='$address',phone='$phone',fax='$fax',email='$email',underground='$underground',location='$location',desc_hotel='$desc_hotel',desc_room='$desc_room',elevator='$elevator',misc='$misc',notes='$notes',notes2='$notes2',link_text='$link_text',link_url='$link_url' WHERE id='$p_id'") OR die ("Error: " . mysql_error());
		}
		*/
	}
}

if(isset($reset))
{
	$ocountry="";
	$ocountry_intro="";
	$ocountry_text="";
}

?>
<form action="<? print $PHP_SELF?>" method="post" name="country" id="country">  
  <table width="400" border="0" align="center">
    <tr> 
      <td colspan="2"><h3>L&auml;gg till eller uppdatera land</h3></td>
    </tr>
    <tr> 
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr> 
      <td width="20%"><strong>Land:</strong></td>
      <td><input name="ocountry" value="<? echo $ocountry ?>" type="text" size="40"> </td>
	  <td><input name="search" type="Submit" value="Sök"></td> 
    </tr>
     <tr> 
      <td width="20%"><strong>Ingress:</strong></td>
      <td><textarea name="ocountry_intro" rows="6" cols="40"><? echo $ocountry_intro ?></textarea> </td>
    </tr>
     <tr> 
      <td width="20%"><strong>Information:</strong></td>
      <td><textarea name="ocountry_text" rows="6" cols="40"><? echo $ocountry_text ?></textarea> </td>
    </tr>
    <tr> 
      <td><input name="add" type="Submit" value="Lägg till"></td> 
      <td><input name="update" type="Submit" value="Uppdatera"></td> 
      <td><input name="reset" type="Submit" value="Rensa"></td> 
  </form>

Tack på förhand!!

/Kicki

QimenMedlem sedan juni 20015 009 inlägg
#2
$update_row = mysql_query("UPDATE country_info SET status = 1, date = '" . $date. "', 
country_intro = '" . $ocountry_intro . "', country_text = '" . $country_text . "' 
WHERE id = $ocountry_id") or die ("Error: " . mysql_error());

$alter_property = mysql_query("UPDATE properties SET date = '" . $date . "', area = '" . $area . "', 
country = '" . $country . "', city = '" . $city . "', name = '" . $name . "', class = '" . $class . "', 
address = '" . $address . "', phone = '" . $phone . "', fax = '" . $fax . "', email = '" . $email . "', 
underground = '" . $underground . "', location = '" . $location . "', desc_hotel='" . desc_hotel . "', 
desc_room = '" . $desc_room . "', elevator = '" . $elevator . "', misc = '" . $misc . "', 
notes = '" . $notes . "', notes2 = '" . $notes2 . "', link_text = '" . $link_text . "', 
link_url = '" . $link_url . "' WHERE id = $p_id") or die ("Error: " . mysql_error());

De värden som är numeriska ska inte ha några fnuttar runt sig så har du några sådana fält få du fixa de. Jag fixade det lite snabbbt så du får kolla igenom koden så att allt stämmer. :)

kicki_anMedlem sedan jan. 200556 inlägg
#3

Har gjort som du föreslagit och då får jag felmeddelande att det just fattas fnuttar på olika sql-frågor. Så de måste nog va kvar.
Måste vara något annat fel.

QimenMedlem sedan juni 20015 009 inlägg
#4

Byt:

id = $ocountry_id

mot:

id = " . $ocountry_id . "

och

id = $p_id

mot:

id = " . $p_id . "

Inte för att det ska göra någon skillnad men det gör koden snyggare. Kan du ge oss exakt felmeddelande? Lite svårt när du bara säger att något är fel och sen inte vad. Har du försökt lösa det själv ens? Att det saknas fnuttar innebär ju bara att du får kolla genom alla variablar. Se till så att de är i denna form:

tabellkolumn = " . $variabel . "

Om det inte är numeriska värden ska du även ha med ' runt om.

kicki_anMedlem sedan jan. 200556 inlägg
#5

Hejsan!

Självklart har jag gjort felkontroller. Har gjort testutskrifter i hela filen för att kontrollera variabler. Självklart kontaktar jag inte forumet förrän jag gjort att jag kan själv först. Tråkigt att du verkar tro att jag inte försökt det minsta själv...

Jag har kommit fram till att det är denna raden som gör att ingenting fungerar.

$update_row = mysql_query("UPDATE country_info SET date='$date', country_intro='$ocountry_intro', country_text='$ocountry_text', country='$occountry' WHERE id='$ocountry_id'"); OR die ("Error: " . mysql_error());

Övrig kod fungerar som jag vill att den ska göra. Och det är först när denna rad läggs till som programmet visar enbart en vit tom sida om man tex trycker på SÖK.
Om den är bortkommenterad fungerar övriga funktioner hur bra som helst.

Jag kan själv inte se vad problemet med den kodraden är.

Mvh
/Christine

GislavedMedlem sedan nov. 20041 740 inlägg
#6

Jag tror att du ska plocka bort semikolonet efter

WHERE id='$ocountry_id'")
$sql = "UPDATE 
country_info 
SET 
date='$date', 
country_intro='$ocountry_intro', 
country_text='$ocountry_text', 
country='$occountry' 
WHERE 
id='$ocountry_id'";
$update_row = mysql_query($sql) OR die ("Error: " . mysql_error());
QimenMedlem sedan juni 20015 009 inlägg
#7

kicki_an: Tydligen har du inte testat den bit kod jag gav dig, för där har jag åtgärdat ett antal fel du precis posta igen.

$sql = "UPDATE country_info 
SET date = '" . $date . "', 
country_intro = '" . $ocountry_intro ."', 
country_text = '" . $ocountry_text . "', 
country = '" . $occountry . "' 
WHERE id = " . $ocountry_id;
$update_row = mysql_query($sql) or die ("Error: " . mysql_error());

Inga fnuttar runt numeriska värden... :)

kicki_anMedlem sedan jan. 200556 inlägg
#8

Hejsan!

Måste tacka er båda som hjälp mig. Det var semikolonet som var problemet. Man blir verkligen hemmablind med sin kod...

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