Gå til innhold

Slette/endre funksjon i kundedatabase(PHP, MySQL)


Anbefalte innlegg

Heisann!

 

 

Jeg har akkurat satt opp en kundedatabase via PHP og MySQL ved å følge denne guiden: Linky

 

Har gjort det som står i guiden, og tilpasset det selv, slik at det passer til mine behov. Knallbra guide forresten, og denne anbefales virkelig. Den viste til akkurat det jeg trengte.

 

Siden jeg jobber med ligger her: Linky

 

 

Det jeg ønsker å få til, er en enkel endre funksjon som man enkelt bare kan trykke på "endre" på en tabell, og det kommer opp en form hvor man kan endre de ulike kriteriene.

 

Er også ute etter en slette funksjon, hvor man bare kan trykke på "slett" på en tabell, og man kan slette den ved en "ja/nei" godkjenning.

 

 

Noen som veit hvordan jeg kan få til dette? :)

 

Setter stor pris på hjelp!

Endret av AnaXyd
Lenke til kommentar
Videoannonse
Annonse
Heisann!

 

 

Jeg har akkurat satt opp en kundedatabase via PHP og MySQL ved å følge denne guiden: Linky

 

Har gjort det som står i guiden, og tilpasset det selv, slik at det passer til mine behov. Knallbra guide forresten, og denne anbefales virkelig. Den viste til akkurat det jeg trengte.

 

Siden jeg jobber med ligger her: Linky

 

 

Det jeg ønsker å få til, er en enkel endre funksjon som man enkelt bare kan trykke på "endre" på en tabell, og det kommer opp en form hvor man kan endre de ulike kriteriene.

 

Er også ute etter en slette funksjon, hvor man bare kan trykke på "slett" på en tabell, og man kan slette den ved en "ja/nei" godkjenning.

 

 

Noen som veit hvordan jeg kan få til dette? :)

 

Setter stor pris på hjelp!

 

For å slette kan du vel bruke:

 

$sql="DELETE FROM $tbl_name WHERE id = '$id'";

 

Og Endre kan du bruke:

 

$sql=("UPDATE $tbl_name SET name = '$name', mail = '$mail' WHERE id = '$id'");

 

eller noe? :) - på update legger du til navnene osv du skan endre..

 

Trenger du ett 'bedre' eksempel?

Lenke til kommentar

Jeg bruker dette, sikkert rom for forbedringer både her og der

 

if (isset($_GET['d']) AND $_GET['d']==1)
	{ // bekreft slett
	  echo "Sure you want to delete this ?<br /><br />\n";
	  echo "<form action=\"oppdat_profil.php\" method=\"post\">\n";
	  echo "No <input type=\"radio\" name=\"slett\" value=\"0\" checked=\"checked\" />  Yes <input type=\"radio\" name=\"slett\" value=\"1\" /><br /><br />\n";
	  echo "<input type=\"submit\" value=\"Ok\"  />\n";
	  echo "<input type=\"hidden\" value=\"Ok\" name=\"slettnyh\" />\n";
	  echo "<input type=\"hidden\" value=\"nyheter\" name=\"skjema\" />\n";
	  echo "<input type=\"hidden\" value=\"".$_GET['i']."\" name=\"i\" />\n";
	  echo "</form>\n";
	}
	else
	{
	  //javascript for bilde bytte
	  echo "<script language=\"javascript\" type=\"text/javascript\">
	  function bytt_bilde(menuform,id)
	  {
		var baseurl = \"./images/avatar/\";
		selecteditem = menuform.nyhbilde.selectedIndex;
		x = menuform.nyhbilde.options[ selecteditem ].value;
		document.getElementById(id).src=baseurl + x;
	  }		
	  </script>\n";

	  // legg til/edit
	  echo "<form action=\"oppdat_profil.php\" method=\"post\">\n";
	  echo "<table>\n";
	  echo "<tr>\n";

	  if (isset($_GET['ed']) AND isset($_GET['i']) AND $_GET['ed']==1) 
	  {
		$query="SELECT body,header,url,id,image FROM NHAP_news WHERE id=".mysql_real_escape_string($_GET['i']);
		$row=mysql_fetch_row(mysql_query($query));
	  }

	  echo "<td>Heading:</td><td><input type=\"text\" size=\"".$size."\" name=\"overskrift\" ";

	  if (isset($_GET['ed']) AND isset($_GET['i']) AND $_GET['ed']==1) 
	  {
		echo "value=\"".$row[1]."\"";
	  }		

	  echo " /></td>\n";
	  echo "</tr>\n";

	  echo "<tr>\n<td>Url: http://</td><td><input type=\"text\" size=\"".$size."\" name=\"url\" ";

	  if (isset($_GET['ed']) AND isset($_GET['i']) AND $_GET['ed']==1) 
	  {
		echo "value=\"".$row[2]."\"";
	  }		

	  echo " /> (optional)</td>\n";
	  echo "</tr>\n";
	  // bilde - valg		
	  echo "<tr><td>Image:</td><td><select name=\"nyhbilde\" onchange=\"bytt_bilde(this.form,'nbilde')\">\n<option value\"\">No image</option>";
	  $bilder=glob("./images/avatar/*.jpg");
	  foreach ($bilder as $key)
	  {
		echo $key."<br />";
		$key=substr($key,strrpos($key,"/")+1);
		echo "<option value=\"".$key."\"";
		if (isset($row[4]) AND $row[4]==$key) echo " selected=\"selected\"";
		echo ">".$key."</option>\n";
	  }
	  echo "</select>\n   ( <a href=\"thumbs.php\" target=\"_blank\">Gallery</a> )</td></tr>\n";		
	  // vis bilde
	  echo "<tr><td> </td><td><img id=\"nbilde\" src=\"";
	  if (strlen($row[4])>0) echo "./images/avatar/".$row[4];
	  echo "\" alt=\"\" border=\"0\" />\n";
	  echo "</td></tr>\n";

	  //tekst - innhold
	  echo "<tr>\n";
	  echo "<td valign=\"top\">Text:</td><td>\n";
	  echo "<textarea rows=\"20\" cols=\"50\" name=\"tekst\">\n";
	  if (isset($_GET['ed']) AND isset($_GET['i']) AND $_GET['ed']==1 AND is_numeric($_GET['i'])) 
	  {
		echo $row[0];
	  }
	  echo "</textarea>\n";
	  echo "</td>\n";
	  echo "</tr>\n";

	  echo "<tr>\n";
	  echo "<td colspan=\"2\"><input type=\"submit\" ";

	  if (isset($_GET['ed']) AND isset($_GET['i']) AND $_GET['ed']==1)
		echo "value=\"Ok\" ";
	  else
		echo "value=\"Publish\" ";

	  echo "/></td>\n";
	  echo "</tr>\n";	
	  echo "</table>\n";

	  if (isset($_GET['ed']) AND isset($_GET['i']) AND $_GET['ed']==1)
	  {
		echo "<input type=\"hidden\" name=\"form\" value=\"edit\" />\n";
		echo "<input type=\"hidden\" name=\"delutd\" value=\"".$row[3]."\" />\n";
	  }
	  else
		echo "<input type=\"hidden\" name=\"form\" value=\"regny\" />\n";

	  echo "<input type=\"hidden\" name=\"skjema\" value=\"nyheter\" />\n";
	  echo "</form>\n";
	}

	// slett osv
	if (!isset($_GET['ed']) AND !isset($_GET['i']) AND !isset($_GET['d']))
	{
	  echo "<table class=\"ptab\" cellspacing=\"0\">\n"; 
	  echo "<tr>\n<th colspan=\"4\">Previous news:</th>\n</tr>\n";
	  echo "<tr style=\"font-size: 12px;\">\n";
	  echo "<td> </td><td>Heading</td><td>Date</td><td> </td>\n";
	  echo "</tr>\n";
	  $query="SELECT header,id,DATE_FORMAT(date,'%d.%m.%Y') dato FROM NHAP_news
			  WHERE user='".$_SESSION['user']."' 
			  ORDER BY DATE_FORMAT(date,'%Y.%m.%d') desc";

	  $result=mysql_query($query,$link);
	  $i=1;
	  while ($row=mysql_fetch_assoc($result))
	  {
		if ($i&1)
		  $class='col2';
		else 
		  $class='col1';

		echo "<tr class=\"".$class."\">\n";
		echo "<td><a href=\"index.php?p=pro&pp=7&ed=1&i=".$row['id']."\"><i>Edit</i></a></td>\n";
		echo "<td>".$row['header']."</td>\n";
		echo "<td>\n";
		echo $row['dato']."\n";
		echo "</td>\n";
		echo "<td><a href=\"index.php?p=pro&pp=7&d=1&i=".$row['id']."\"><i>Delete</i></td>\n";
		echo "</tr>\n";
		$i++;
	  }
	  echo "</table>\n";
	  if (isset($result)) mysql_free_result($result);
	}

 

 

og

 

if (isset($_POST['slettnyh']) AND $_POST['slettnyh']=='Ok' AND isset($_POST['slett']) AND $_POST['slett']==1)
   {
	 $sql=sprintf("DELETE FROM NHAP_news WHERE NHAP_news.id=%d AND user='%s' LIMIT 1",mysql_real_escape_string(strip_tags($_POST['i'])), $_SESSION['user']);
   }
   elseif (isset($_POST['form']) AND $_POST['form']=='edit')
  {
	  $oversk=mysql_real_escape_string(stegn(strip_tags($_POST['overskrift'])));
	  $url=mysql_real_escape_string(strip_tags($_POST['url']));
	  $tekst=mysql_real_escape_string(stegn(strip_tags($_POST['tekst'])));

	  $sql=sprintf("UPDATE NHAP_news
					SET header='%s',
					  url='%s',
					  body='%s',
					  image='%s'
					WHERE user='%s' AND id=%d",
					$oversk,
					$url,
					$tekst,
					mysql_real_escape_string(strip_tags($_POST['nyhbilde'])),
					$_SESSION['user'],
					mysql_real_escape_string(strip_tags($_POST['delutd'])));
  }
  elseif (isset($_POST['form']) AND $_POST['form']=='regny')
  {
	   $sql=sprintf("INSERT INTO NHAP_news (header, url,body,date,user,image)
				  VALUES( '%s','%s','%s','%s','%s','%s')",
				  mysql_real_escape_string(stegn(strip_tags($_POST['overskrift']))),
				  mysql_real_escape_string(strip_tags($_POST['url'])),
				  mysql_real_escape_string(stegn(strip_tags($_POST['tekst']))),
				  date("Y-m-d"),
				  $_SESSION['user'],
				  mysql_real_escape_string(strip_tags($_POST['nyhbilde'])));
  }

  if (isset($sql))
	mysql_query($sql)||die("Feil (Nyheter): ".mysql_error());

  unset($_POST);
  mysql_close($link);
  //header('Location: index.php?opt=profil&p=7');	
  echo "<meta http-equiv=\"refresh\" content=\"0;url=index.php?p=pro&pp=7\" />";
  break;

 

 

I korte trekk så skrives det først ut ett tomt form/skjema hvis ikke parameter for sletting eller endring er satt, og i bunn å listes ut tidligere forekomster med en endre link og en slett link. Hvis sletting så vises slette skjema for å bekrefte sletting, eller skjemaet lastes på nytt med verdier fra databasen. Script nr 2 oppdatere basen etter gitte parameter for å finne ut av om det skal settes inn en ny rad, raden skal oppdateres eller slettes.

post-70961-1199821924_thumb.jpg

Endret av Crowly
Lenke til kommentar

En nedstrippet versjon av scriptet over, så det kanskje blir litt enklere å se hvordan jeg har løst "problemet"

 

Skjema:

 

 if (isset($_GET['d']) AND $_GET['d']==1)
	{ // bekreft slett
	  // Hvis d parameter er satt så skal slett skjema vises, for å få en bekreftelse 
	  // fra bruker om at man virkelig ønsker å slette forekomsten
	}
	else
	{
	  // legg til/edit

	  // Sjekk om endre funksjonen er valgt, ed parameter, og at hvilken forekomst som skal hentes
	  if (isset($_GET['ed']) AND isset($_GET['i']) AND $_GET['ed']==1) 
	  {
		 // Hent inn forekomsten fra databasen for å fylle inn verdier i skjemaet under
	  }

	  // skriv ut skjema her, og fyll inn verdier hvis nødvendig

	  if (isset($_GET['ed']) AND isset($_GET['i']) AND $_GET['ed']==1)
	  {
		// skulte felter som forteller hva som skal skje i behandlingsscriptet som oppdatere databasen 
		// ved endring av forekomster
	  }
	  else
		// skjult felt som forteller at det er en ny forekomst som skal inn
	}

	// slett osv
	if (!isset($_GET['ed']) AND !isset($_GET['i']) AND !isset($_GET['d']))
	{
	  // List ut forekomstene fra databasen, med linker for endring og sletting.
	  // Sett ed parameter i endre linken, og d i slett linken. 
	  // Slett og endre trenger begge en verdi for å finne forekomsten som skal behandles
	}

 

 

Behandling

 

// verifisering og andre nødvendig ting

   if (isset($_POST['slettnyh']) AND $_POST['slettnyh']=='Ok' 
		AND isset($_POST['slett']) AND $_POST['slett']==1)
   {
	  // slett forekomst fra databasen, bygger kun opp sql settningen
   }
   elseif (isset($_POST['form']) AND $_POST['form']=='edit')
   {
	 // Oppdater databasen med endret informasjon, bygger kun opp sql settningen
   }
   elseif (isset($_POST['form']) AND $_POST['form']=='regny')
   {
	   // Sett inn ny forekomst, bygger kun opp sql settningen
   }

  // utfører sql settningen 
  if (isset($sql))
	mysql_query($sql)||die("Feil (Nyheter): ".mysql_error());

  // rydd opp og gå tilbake til skjema siden	 
  unset($_POST);
  mysql_close($link);
  echo "<meta http-equiv=\"refresh\" content=\"0;url=index.php\" />";

 

 

Håper dette gjorde det litt enklere å forstå, hvis ikke så spør i vei ;)

Lenke til kommentar

Burde kanskje nevnes at jeg har meget begrenset kompetanse innenfor PHP, så ting må inn med teskje.. :roll:

Er kanskje litt for heavy for en nybegynner som meg, men jeg prøver alikevel.. :)

 

 

Hvordan skal jeg sette opp skriptene slik at de fungerer? Er det bare å slenge begge inn i samme php fil, eller skal de være hver for seg?

 

 

Og hvordan skal jeg gjøre det med "slett" og "endre" knappen? Skal disse være linket til en annen .php side som gjør jobben? Hvordan skal hver "slett" og "endre" være koblet til riktig tabell?

 

Jeg hadde sett for meg noe slikt:

post-91181-1199986486_thumb.jpg

 

 

 

 

Kildekoden til visning av tabellen er her:

 

<?php
	include "konfigurasjon.php";
	include "kobletil.php";
	// hämtar information från den angivna tabellen
	$result = mysql_query("SELECT * FROM kundedatabase") or die(mysql_error());
	?>
	<table>
		<thead>
			<tr class="odd">
				<th scope="col">Kundenr</th>
				<th scope="col">Fornavn</th>
				<th scope="col">Etternavn</th>
				<th scope="col">Postnr/sted</th>
				<th scope="col">Tlf</th>
				<th scope="col">Mail</th>
				<th scope="col">Ant. rosa</th>
				<th scope="col">Ant. svarte</th>
				<th scope="col">Ant. blå</th>
				<th scope="col">Total sum</th>
				<th scope="col">Sig.</th>
				<th scope="col">Betalt?</th>
				<th scope="col">Ringt?</th>
			</tr>
		</thead>
	<?php while($row = mysql_fetch_array( $result )) { ?>
			<tr>
				<td><?php echo $row['kundenr']; ?></td>
				<td><?php echo $row['fname']; ?></td>
				<td><?php echo $row['ename']; ?></td>
				<td><?php echo $row['postnr_sted']; ?></td>
				<td><?php echo $row['tlf']; ?></td>
				<td><?php echo $row['mail']; ?></td>
				<td><?php echo $row['antall_rosa']; ?></td>
				<td><?php echo $row['antall_svart']; ?></td>
				<td><?php echo $row['antall_blaa']; ?></td>
				<td><?php echo $row['pris_sum']; ?></td>
				<td><?php echo $row['signatur']; ?></td>
				<td><?php echo $row['betalt']; ?></td>
				<td><?php echo $row['ringt']; ?></td>
			</tr>
	<?php } ?>
	</table>
	<?php
	// stänger databasen
	mysql_close($opendb);
	?>

 

 

EDIT: Fant forresten en fiffig PHP modul som kan gjøre akkurat det jeg er ute etter. Men jeg får den ikke til å fungere. Den fungerer ihvertfall ikke "right out of the box".

 

Felmld:

Warning: require_once(Pager/Sliding.php) [function.require-once]: failed to open stream: No such file or directory in /home/tendoub/public_html/anaxyd/database/TableEditor.php on line 43

 

Fatal error: require_once() [function.require]: Failed opening required 'Pager/Sliding.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/tendoub/public_html/anaxyd/database/TableEditor.php on line 43

 

 

Link: http://www.phpguru.org/static/TableEditor.html

Endret av AnaXyd
Lenke til kommentar
Hvordan skal jeg sette opp skriptene slik at de fungerer? Er det bare å slenge begge inn i samme php fil, eller skal de være hver for seg?

Hver for seg. Selve skjemaet ligger i mitt tilfelle i profil.php og alle skjermaer som trenger å oppdatere databasen (insert, update og delete) ligger i oppdat_profil.php. oppdat_profil.php blir lagt inn i <form action="oppdat_profil.php" ...>

 

Og hvordan skal jeg gjøre det med "slett" og "endre" knappen? Skal disse være linket til en annen .php side som gjør jobben? Hvordan skal hver "slett" og "endre" være koblet til riktig tabell?

Slett linken peker til samme fil, med noen ekstra parameter. F.eks <a href="profil.php?valg=slett&postid=1">Slett</a>

 

Da i profil.php så sjekker jeg om valg parameteret er satt og at verdien er = slett. Da vet jeg at bruker ha valgt å slette en post.

if (isset($_GET['valg']) AND $_GET['valg']=='slett')

 

Skriver så ut ett nytt skjema hvor bruker må bekrefte at posten skal slettes

 echo "Sure you want to delete this ?<br /><br />\n";
	  echo "<form action=\"oppdat_profil.php\" method=\"post\">\n";
	  echo "No <input type=\"radio\" name=\"slett\" value=\"0\" checked=\"checked\" />  Yes <input type=\"radio\" name=\"slett\" value=\"1\" /><br /><br />\n";
	  echo "<input type=\"submit\" value=\"Ok\"  />\n";
	  echo "<input type=\"hidden\" value=\"Ok\" name=\"slettnyh\" />\n";
	  echo "<input type=\"hidden\" value=\"tabell\" name=\"skjema\" />\n";
	  echo "<input type=\"hidden\" value=\"".$_GET['i']."\" name=\"slettid\" />\n";
	  echo "</form>\n";

 

Jeg skriver ut id nummer på posten som skal slettes i ett skjult felt, slik at jeg kan fange opp det i oppdat_profil.php fila, sammen med en del andre felt som jeg kan sjekke i mot for å forsikre meg om at det er slette rutine som skal utføres.

 

Se om du kan få slette funksjonen til å fungere, så kan du begi deg ut på editerings muligheten etterpå.

Endret av Crowly
Lenke til kommentar

Jeg skal prøve å gi deg et enkelt eksempel på hvordan det kan gjøres:

 

tabellen min ser slik ut

 

CREATE TABLE tabellenmin (id INT(11) PRIMARY KEY AUTO_INCREMENT NOT NULL, brukernavn VARCHAR(25) NOT NULL, passord VARCHAR(40) NOT NULL);

 

PRIMARY KEY betyr at dette feltet må være unikt per rad. alle tabeller må ha en key. en key kan være et felt eller en kombinasjon av flere felt. feltet eller kombinasjonen må da være unik for hver rad.

 

NOT NULL betyr at en rad kun kan legges inn dersom det finnes data i disse feltene.

 

AUTO_INCREMENT betyr at mysql fyller ut feltet for deg med heltall fra 1 og oppover. sammen med not null betyr dette at dersom du legger inn null i feltet vil det automatisk få en verdi fra AUTO_INCREMENT funksjonen. PRIMARY KEY vil automatisk kreve at feltet ikke er tomt med for ordens skyld er det greit å ha med NOT NULL syns jeg

 

feltene er altså id, brukernavn og passord

 

<html><body>
<?php


// quote_smart()
// en variant av en escape funksjon funnet her på forumet
// hindrer sql injection

function quote_smart($msg) {
 if ( !is_numeric($msg) ) {
// hvis $msg ikke er et nummer:

if ( get_magic_quotes_gpc() ) {
  // hvis magic quotes er aktivert (gjør så php legger til slashes automatisk på input)

  $msg = stripslashes( $msg ); // fjern slashes (ellers vil mysql_real_escape_string() dobbelslashe)
}

// legg til quote tegn og escape med mysql_real_escape_string()	
$msg = "'" . mysql_real_escape_string( $msg ) . "'";

 }

 // returner $msg uansett om det er nummer eller escapa tekst
 return $msg;

}

// databasetilkobling

mysql_connect( 'localhost', 'root', '******' ) or die( mysql_error() );
mysql_select_db( 'test' ) or die( mysql_error() );


// dersom post[submit_user] er satt (noen har lagt til en bruker), valider og skriv til database
// (settes av form submit):

if ( isset( $_POST['submit_user'] ) && !empty( $_POST['submit_user'] ) ) {

 // isset hindrer at du får en notice error dersom indexen ikke er satt
 // også sjekker jeg at den ikke er tom

 // nå forventer vi brukernavn og passord

 if ( !isset( $_POST['brukernavn'] ) || empty( $_POST['brukernavn'] ) ) die( 'Brukernavn ikke skrevet inn!' );
 if ( !isset( $_POST['passord'] ) || empty( $_POST['passord'] ) ) die( 'Passord ikke skrevet inn!' );


 // både passord og brukernavn er skrevet inn. nå kan vi legge inn i databasen
 mysql_query( 'INSERT INTO tabellenmin VALUES(null, ' . quote_smart( $_POST['brukernavn'] ) . ', ' . quote_smart( $_POST['passord'] ) . ');' ) or die( mysql_error() );
 echo 'Bruker '.$_POST['brukernavn'].' er lagt inn!';
}

// dersom post[submit_change_user] er satt (noen har lagret en endring)

if ( isset( $_POST['submit_change_user'] ) && !empty( $_POST['submit_change_user'] ) ) {


 // nå forventer vi id, brukernavn og passord.

 if ( !isset( $_POST['id'] ) || empty( $_POST['id'] ) ) die( 'Id er ikke satt!' );
 if ( !isset( $_POST['brukernavn'] ) || empty( $_POST['id'] ) ) die( 'Brukernavn er ikke skrevet inn!' );
 if ( !isset( $_POST['passord'] ) || empty( $_POST['passord'] ) ) die( 'Passord er ikke skrevet inn!' );


 // all forventet data er skrevet inn. utføre endringer i tabell

 mysql_query( 'UPDATE tabellenmin SET brukernavn = ' . quote_smart( $_POST['brukernavn'] ) . ', passord = ' . quote_smart( $_POST['passord'] ) . ' WHERE id = ' . (int)$_POST['id'] . ';' ) or die( mysql_error() );

}


// dersom post[submit_delete_user] er satt (noen sletter en bruker)

if ( isset( $_POST['submit_delete_user'] ) && !empty( $_POST['submit_delete_user'] ) ) {

 // forventer id
 if ( !isset( $_POST['id'] ) || empty( $_POST['id'] ) ) die( 'Id er ikke satt!' );

 // slett bruker
 mysql_query( 'DELETE FROM tabellenmin WHERE id = ' . (int)$_POST['id'] . ';' ) or die( mysql_error() );

}


// dersom noen ønsker å legge til data.
// strcmp() returnere 0 dersom strengene er like. derfor bruker jeg !strcmp() som betyr (not)strcmp(). altså true dersom strengene er like.

if ( isset( $_GET['action'] ) && !strcmp( $_GET['action'], 'adduser' ) ) {

 echo '
<form action="' . $_SERVER['PHP_SELF'] . '" method="post">
 Brukernavn: <input type="text" name="brukernavn" /><br />
 Passord: <input type="password" name="passord" /><br />
 <input type="submit" name="submit_user" value="Legg til bruker" />
</form>
';

}


// dersom noen vil endre data

if ( isset( $_GET['action'] ) && !strcmp( $_GET['action'], 'changeuser' ) ) {

 // sjekk om id er satt

 if ( !isset( $_GET['id'] ) || empty( $_GET['id'] ) ) die( 'Id er ikke satt!' );

 // hent data fra tabell
 // (int)$var vil "kaste" $var til en integer. selv om var er en string blir det en integer. hindrer sql injection. kan kun brukes om du forventer heltall.

 $res = mysql_query( 'SELECT brukernavn, passord FROM tabellenmin WHERE id = ' . (int)$_GET['id'] . ';' ) or die( mysql_error() );
 $row = mysql_fetch_row( $res );

 // $row er nå en array med dataene fra querien ($row[0] = brukernavn, $row[1] = passord)

 echo '
<form action="' . $_SERVER['PHP_SELF'] . '" method="post">
 <input type="hidden" name="id" value="' . (int)$_GET['id'] . '" />
 Brukernavn: <input type="text" name="brukernavn" value="' . $row[0] . '" /><br />
 Passord: <input type="password" name="passord" value="' . $row[1] . '" /><br />
 <input type="submit" name="submit_change_user" value="Lagre endring" />
 <input type="submit" name="submit_delete_user" value="Slett bruker" />
</form>
';

}


// skriv ut data og linker
// hent beskrivelse av tabell

$res = mysql_query( 'DESCRIBE tabellenmin;' ) or die( mysql_error() );
while ( $row = mysql_fetch_assoc( $res ) ) {
 $desc[] = $row['Field']; // Field er feltnavn i beskrivelsen av tabell
}

// nå er $desc et array med alle felt navnene i tabellen


// hent data fra tabell

$res = mysql_query( 'SELECT * FROM tabellenmin;' ) or die( mysql_error() );
while ( $row = mysql_fetch_row( $res ) ) {
 $data[] = $row;
}

// nå er $data et array med alle radene og alle feltene i tabellen


// presentere data

if ( isset( $data ) && isset( $desc ) ) {

echo '<table><tr>';
foreach ( $desc as $field ) {
  echo '<th>' . $field . '</th>';
}
echo '</tr>';

foreach ( $data as $row ) {
  echo '<tr onclick="location.href = \'' . $_SERVER['PHP_SELF'] . '?action=changeuser&id=' . $row[0] . '\';">';
  foreach ( $row as $field ) {
	echo '<td>' . $field . '</td>';
  }
  echo '</tr>';
}

echo '</table>';

}

echo '<a href="' . $_SERVER['PHP_SELF'] . '?action=adduser">Legg til bruker</a>';

?>
</body></html>

thats it

Endret av grimjoey
Lenke til kommentar

Se der ja.. :) Nå fungerer den ihvertfall bedre enn før..! :D Men hvordan får jeg slettet/endret noe nå da?

 

Slik ser det ut:

 

Bruker sugge er lagt inn!

id brukernavn passord

2 per ole

3 ost per

4 sugge ræv

Legg til bruker

 

Og ikkenoe mer...

 

EDIT: Aha! Når jeg klikker på de kommer det opp noe mer ja! Genialt! Nå får jeg se om jeg får implementert dette da...

Endret av AnaXyd
Lenke til kommentar

Jeg tenkte i første omgang en knapp på slutten av hver rad. Men siden jeg begynner å gå tom for plass på tabellen min, er det jo genialt om man bare trykker på hele raden.

 

 

Gleder meg til jeg begynner å implementere dette... Tar sikkert flere uker å få det til.. :p

Lenke til kommentar

du trenger kun å legge til rader i tabellen og input i formene så skal koden gjøre resten av jobben. du må vel legge til input validering selv også

 

red:

 

du kan også bytte ut echo 'noe'; til $variabel .= 'noe'; og senere echo $variabel der du ønsker å skrive ut data.

Endret av grimjoey
Lenke til kommentar

Først og fremst: Tusen takk for all hjelp så langt! :)

 

Så:

Jeg må vel omskrive hele greia om den skal passe til databasen min?

 

For jeg har jo en haug med kolonner:

 

 

Kundenr

Fornavn

Etternavn

Postnr/sted

Tlf

Mail

Ant. rosa

Ant. svarte

Ant. blå

Total sum

Signatur

Betalt?

Ringt?

 

 

 

 

En bit av koden som viser frem databasen som jeg bruker nå:

 

Klikk for å se/fjerne innholdet nedenfor
		<table>
		<thead>
			<tr class="odd">
				<th scope="col" abbr="Home">Kundenr</th>
				<th scope="col">Fornavn</th>
				<th scope="col">Etternavn</th>
				<th scope="col">Postnr/sted</th>
				<th scope="col">Tlf</th>
				<th scope="col">Mail</th>
				<th scope="col">Ant. rosa</th>
				<th scope="col">Ant. svarte</th>
				<th scope="col">Ant. blå</th>
				<th scope="col">Total sum</th>
				<th scope="col">Sig.</th>
				<th scope="col">Betalt?</th>
				<th scope="col">Ringt?</th>
			</tr>
		</thead>
	<?php while($row = mysql_fetch_array( $result )) { ?>
			<tr>
				<td><?php echo $row['kundenr']; ?></td>
				<td><?php echo $row['fname']; ?></td>
				<td><?php echo $row['ename']; ?></td>
				<td><?php echo $row['postnr_sted']; ?></td>
				<td><?php echo $row['tlf']; ?></td>
				<td><?php echo $row['mail']; ?></td>
				<td><?php echo $row['antall_rosa']; ?></td>
				<td><?php echo $row['antall_svart']; ?></td>
				<td><?php echo $row['antall_blaa']; ?></td>
				<td><?php echo $row['pris_sum']; ?></td>
				<td><?php echo $row['signatur']; ?></td>
				<td><?php echo $row['betalt']; ?></td>
				<td><?php echo $row['ringt']; ?></td>
			</tr>
	<?php } ?>
	</table>
	<?php

 

Blir helt svimmel av alt det her jeg.. :p Håper på hjelp! :)

Endret av AnaXyd
Lenke til kommentar

Okay! Ja den tok inn alt fra tabellen min automatisk.. :)

 

Men hva med f.eks:

 

  // nå forventer vi brukernavn og passord

 if ( !isset( $_POST['brukernavn'] ) || empty( $_POST['brukernavn'] ) ) die( 'Brukernavn ikke skrevet inn!' );
 if ( !isset( $_POST['passord'] ) || empty( $_POST['passord'] ) ) die( 'Passord ikke skrevet inn!' );

 

Og:

 

// nå forventer vi id, brukernavn og passord.

 if ( !isset( $_POST['id'] ) || empty( $_POST['id'] ) ) die( 'Id er ikke satt!' );
 if ( !isset( $_POST['brukernavn'] ) || empty( $_POST['id'] ) ) die( 'Brukernavn er ikke skrevet inn!' );
 if ( !isset( $_POST['passord'] ) || empty( $_POST['passord'] ) ) die( 'Passord er ikke skrevet inn!' );


 // all forventet data er skrevet inn. utføre endringer i tabell

 mysql_query( 'UPDATE tabellenmin SET brukernavn = ' . quote_smart( $_POST['brukernavn'] ) . ', passord = ' . quote_smart( $_POST['passord'] ) . ' WHERE id = ' . (int)$_POST['id'] . ';' ) or die( mysql_error() );

}

 

Skal dette stå slik som dette? For da får jeg vel ikke endret på alle verdiene i de forskjellige kolonnene, om det er satt slik?

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