Gå til innhold

[Løst} - Hvordan lese innhold fra et variabelt antall input-elementer i en form


Anbefalte innlegg

Først, hente ut koden:

 

	  <form action="" method="post">
	 <h3>Endre byer.</h3>
	 <hr />
	 <?php
	 $sqql_g = "SELECT * FROM byer ORDER BY id_by DESC";
	 $sqqql_g = mysql_query($sqql_g);
	 while ($stedf = mysql_fetch_array($sqqql_g)) {
	 session_start();
	 $_SESSION['o_d_b'] = $stedf['sted'] . "_" . $stedf['id_by'];
	 $_SESSION['o_d_b_2'] = $stedf['pris'] . "_" . $stedf['id_by'];
	   echo "<h4>" . $stedf['sted'] . "</h4>";
	   echo "<input type=\"text\" name=\"$_SESSION[o_d_b]\" value=\"$stedf[sted]\">
  ";
	   echo "<input type=\"text\" name=\"$_SESSION[o_d_b_2]\" value=\"$stedf[pris]\"> kr";

	   }
	   echo "

  <input type=\"submit\" name=\"_b_f\" value = \" Oppdater \">

  ";
	 ?>
	 </form>

 

 

Mening:

Hente ut alle byer, så gi hver input en "name" som dere ser. Så skal jeg kunne oppdatere de..

 

---

 

Men hvordan kan jeg gjøre det? Er litt usikker, kan jo evt. legge hver input i hver sin form, men det blir for tungvindt..

Forslag?

 

if(isset($_POST['_b_f'])) {
  $name_d = $_SESSION['o_d_b'] // name input
  $price_d = $_SESSION['o_d_b_2'] // pris input

  mysql_query("UPDATE byer");
 }

Endret av Rematusen
Lenke til kommentar
Videoannonse
Annonse

La meg se om jeg forstår hva som skal gjøres:

 

-Les ut alle byer fra en database med id, navn og pris.

-List ut navn og pris på alle byer i et form.

-Når formet postest tilbake skal endringer skrives inn i databasen på rett by.

 

Er dette et du prøver å få til?

--

 

Ellers er ikke emnetittelen på denne tråden god nok. En mer beskrivende tekst er "hvordan lese innhold fra et variabelt antall input-elementer i et form".

Lenke til kommentar
La meg se om jeg forstår hva som skal gjøres:

 

-Les ut alle byer fra en database med id, navn og pris.

-List ut navn og pris på alle byer i et form.

-Når formet postest tilbake skal endringer skrives inn i databasen på rett by.

 

Er dette et du prøver å få til?

--

 

Jepp. ;)

 

 

Ellers er ikke emnetittelen på denne tråden god nok. En mer beskrivende tekst er "hvordan lese innhold fra et variabelt antall input-elementer i et form".

 

Endret tittel nå;)

Lenke til kommentar

Det er nok et par uoptimale situasjoner som kan skje her, så du bør sikkert teste dataene litt før de smelles inn i databasen, men jeg tror dette skal virke. Det er skrevet i notepad uten webserver eller noe, så det er helt utestet.

 

<?php
$sql = "SELECT id, name, price FROM cities ORDER BY id ASC";
$cities = mysql_whatever( $sql );

?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
	<title>XHTML 1.0: The Extensible HyperText Markup Language (Second Edition)</title>
	<style type="text/css">
		/* Some stuff here just to make it non-IE compatible */
		label:after {
			content: ":";
		}
	</style>		
</head>
<body>
	<div>
		<form action="noe.php" method="post">
<?php
foreach( $cities as &$city ) {
?>				<p>
				<label>Name<input type="text" id="<?= $city['id'] ?>-name" name="<?= $city['id'] ?>-name" value="<?= $city['name'] ?>" /></label>
				<label>Price<input type="text" id="<?= $city['id'] ?>-price" name="<?= $city['id'] ?>-price" value="<?= $city['price'] ?>" /></label>
			</p>
<?php
}
?>				<input type="submit" value="save" />
		</form>
	</div>
</body>
</html>

 

<?php
$sql = "SELECT id, name, price FROM cities;";
$cities = mysql_whatever( $sql );

foreach( $cities as &$city ) {
	if ( isset( $_REQUEST[$city['id'] . '-name'] ) && isset( $_REQUEST[$city['id'] . '-price'] ) ) {
		$sql = 'UPDATE cities SET name = ' . clean( $_REQUEST[$city['id'] . '-name'] ) . ', price = ' . clean( $_REQUEST[$city['id'] . '-price'] ) . " WHERE id = {$city['id']};";
		mysql_whatever( $sql );
	}
}
?>

Lenke til kommentar
<?php
 $sql = "SELECT id, name, price FROM cities ORDER BY id ASC";
 $cities = mysql_whatever( $sql );

?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
 <head>
	 <title>XHTML 1.0: The Extensible HyperText Markup Language (Second Edition)</title>
	 <style type="text/css">
		 /* Some stuff here just to make it non-IE compatible */
		 label:after {
			 content: ":";
		 }
	 </style>		
 </head>
 <body>
	 <div>
		 <form action="noe.php" method="post">
<?php
 foreach( $cities as &$city ) {
?>				<p>
				 <label>Name<input type="text" id="<?= $city['id'] ?>-name" name="<?= $city['id'] ?>-name" value="<?= $city['name'] ?>" /></label>
				 <label>Price<input type="text" id="<?= $city['id'] ?>-price" name="<?= $city['id'] ?>-price" value="<?= $city['price'] ?>" /></label>
			 </p>
<?php
 }
?>				<input type="submit" value="save" />
		 </form>
	 </div>
 </body>
</html>

 

 

Ok, det fungerte ikke så bra! :p

Slik ser tabellen i databasen ut:

 

fd.jpg

 

Og slik printet koden ut:

 

fds-1.jpg

 

Med dette i php koden:

<?php
$sql = mysql_query("SELECT id_by, sted, pris FROM byer ORDER BY id_by ASC");
$cities = mysql_fetch_array($sql);
foreach( $cities as &$city ) {
?>				<p>
				<label>Name<input type="text" id="<?= $city['id_by'] ?>-name" name="<?= $city['id_by'] ?>-name" value="<?= $city['sted'] ?>" /></label>
				<label>Price<input type="text" id="<?= $city['id_by'] ?>-price" name="<?= $city['id_by'] ?>-price" value="<?= $city['pris'] ?>" /></label>
			</p>
<?php
}
?>

 

 

Hva er det som er feil ?? evt. andre måter?

Lenke til kommentar
Du bruker mysql_fetch_array og ikke mysql_fetch_assoc.

http://no.php.net/manual/en/function.mysql-fetch-assoc.php

 

Ta en:

echo '<pre>';
print_r( $cities );
die();

for å se forskjellen.

 

 

Vel, da har jeg gjort om på scriptene:

 

<?php
$sql = mysql_query("SELECT id_by, sted, pris FROM byer ORDER BY id_by ASC");
$cities = mysql_fetch_assoc($sql);

session_start();
$_SESSION['sess_1'] = $cities['id_by'] . "-name";
$_SESSION['sess_2'] = $cities['id_by'] . "-price";
$_SESSION['sess_3'] = $cities['id_by'];
?>				<p>
			  Name
<input type="text" name="<?= $_SESSION['sess_1']; ?>" value="<?= $cities['sted'] ?>" /><br />
			  Price
<input type="text" name="<?= $_SESSION['sess_2']; ?>" value="<?= $cities['pris'] ?>" />
				 <input type="submit" name="_b_f" value="save" />
		</form> 
<?php
echo '<pre>';
print_r( $cities );
die();
?>

 

 

Og for å utføre formen:

 

if(isset($_POST['_b_f'])) {
session_start();
$name_d = $_SESSION['sess_1']; // name input
$price_d = $_SESSION['sess_2']; // pris input
$id_d = $_SESSION['sess_3'];
$w2 = $_POST[$name_d];
$w3 = $_POST[$price_d];

mysql_query("UPDATE byer SET sted = '$w2' AND pris = '$w3' WHERE id_by = '$id_d'") or die (mysql_error());

unset($_SESSION['sess_1']);
unset($_SESSION['sess_2']);
unset($_SESSION['sess_3']);

echo "endret..";

}

 

 

Men et problem:

sted får "valuen" 0 i databasen, uansett hva jeg skriver i input'en :dontgetit:

Hva er det som gjør det?

 

Når jeg skriver ut query'en:

UPDATE byer SET sted = '0' AND pris = '1002' WHERE id_by = '4'
Endret av Rematusen
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...