/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Hente og opdatere data i med php i mysql d~
Fra : Michael Lynggaard


Dato : 02-09-09 17:38

Hjælp ønskes.

Jeg har en database med brugere som består af navn, alder og
email. hvor jeg henter en bruger som jeg kan rette data i.

<?php
//connect to database
$conn = mysql_connect("localhost", "root") or die(mysql_error());
mysql_select_db("brugere",$conn) or die(mysql_error());
?>

<?php

// Hent tabel-data
$getdata = mysql_query("SELECT * FROM brugere ORDER BY id ASC
LIMIT 50") or die(mysql_error());
if(mysql_num_rows($getdata) == 0)
{
print"Ingen rækker...";
}
else
{
print"<h2>Rækker</h2>";
while($row = mysql_fetch_array($getdata))
{
print"ID: ".$row['id']."<br />";
print"NAVN: ".$row['navn']."<br />";
print"ALDER: ".$row['alder']."<br />";
print"EMAIL: ".$row['email']."<br />";
print"RET BRUGER: <a
href=\"update_row.php?id=".$row['id']."\">klik her</a>";
print"<hr />";
}
}
print"<br /><br /><a href=\"insert_row.php\">Indsæt ny
række</a>";

?>

Ingen problemer i dette. Som i kan se er der link til siden
update_row.php og nu kommer problemet. Som nævnt kan jeg hente,
se og rette data, men kan ikke få rettelserne tilbage i
data-basen.

Her er koden til opdatering af databasen:
<?php
//connect to database
$conn = mysql_connect("localhost", "root") or die(mysql_error());
mysql_select_db("brugere",$conn) or die(mysql_error());
?>

<?php
if( isset( $_GET['id'] ) )
$id = $_GET['id'];
else
$id = null;

if( $id !== null ) {
// Hent først data ud
$resultat = mysql_query("select * FROM brugere WHERE id =
'$id'");

while ($num = mysql_fetch_array($resultat))
//while($num = mysql_query($svar))
{
$id=$num["id"];
$navn=$num["navn"];
$alder=$num["alder"];
$email=$num["email"];

echo "<input type=\"hidden\" name=\"post_id\" value=\"$id\" />";
echo "<input type=\"text\" name=\"navn\" value=\"$navn\" />";
echo "<input type=\"text\" name=\"alder\" value=\"$alder\" />";
echo "<input type=\"text\" name=\"email\" value=\"$email\" />";

}
}

mysql_query("UPDATE brugere SET `navn`='".$navn."',
`alder`='".$alder."', `email`='".$email."' WHERE id =
'$_POST[id]'") or die(mysql_error()); // Vi sætter alle brugerens
POSTER ind i databasen.
?>
<form action="se_brugere.php?id" method="POST">
<input type="submit" id="submit" value="Send">

Kan ikke finde problemet. Undskyld al koden, men håber i vil
hjælpe.

Hilsen Michael

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Birger Sørensen (02-09-2009)
Kommentar
Fra : Birger Sørensen


Dato : 02-09-09 19:34

Michael Lynggaard har bragt dette til verden:
> Hjælp ønskes.
>
> Jeg har en database med brugere som består af navn, alder og
> email. hvor jeg henter en bruger som jeg kan rette data i.
>
> <?php
> //connect to database
> $conn = mysql_connect("localhost", "root") or die(mysql_error());
> mysql_select_db("brugere",$conn) or die(mysql_error());
> ?>
>
> <?php
>
> // Hent tabel-data
> $getdata = mysql_query("SELECT * FROM brugere ORDER BY id ASC
> LIMIT 50") or die(mysql_error());
> if(mysql_num_rows($getdata) == 0)
> {
> print"Ingen rækker...";
> }
> else
> {
> print"<h2>Rækker</h2>";
> while($row = mysql_fetch_array($getdata))
> {
> print"ID: ".$row['id']."<br />";
> print"NAVN: ".$row['navn']."<br />";
> print"ALDER: ".$row['alder']."<br />";
> print"EMAIL: ".$row['email']."<br />";
> print"RET BRUGER: <a
> href=\"update_row.php?id=".$row['id']."\">klik her</a>";
> print"<hr />";
> }
> }
> print"<br /><br /><a href=\"insert_row.php\">Indsæt ny
> række</a>";
>
> ?>
>
> Ingen problemer i dette. Som i kan se er der link til siden
> update_row.php og nu kommer problemet. Som nævnt kan jeg hente,
> se og rette data, men kan ikke få rettelserne tilbage i
> data-basen.
>
> Her er koden til opdatering af databasen:
> <?php
> //connect to database
> $conn = mysql_connect("localhost", "root") or die(mysql_error());
> mysql_select_db("brugere",$conn) or die(mysql_error());
> ?>
>
> <?php
> if( isset( $_GET['id'] ) )
> $id = $_GET['id'];
> else
> $id = null;
>
> if( $id !== null ) {
> // Hent først data ud
> $resultat = mysql_query("select * FROM brugere WHERE id =
> '$id'");
>
> while ($num = mysql_fetch_array($resultat))
> //while($num = mysql_query($svar))
> {
> $id=$num["id"];
> $navn=$num["navn"];
> $alder=$num["alder"];
> $email=$num["email"];
>
> echo "<input type=\"hidden\" name=\"post_id\" value=\"$id\" />";
> echo "<input type=\"text\" name=\"navn\" value=\"$navn\" />";
> echo "<input type=\"text\" name=\"alder\" value=\"$alder\" />";
> echo "<input type=\"text\" name=\"email\" value=\"$email\" />";
>
> }
> }
>
> mysql_query("UPDATE brugere SET `navn`='".$navn."',
> `alder`='".$alder."', `email`='".$email."' WHERE id =
> '$_POST[id]'") or die(mysql_error()); // Vi sætter alle brugerens
> POSTER ind i databasen.
> ?>
> <form action="se_brugere.php?id" method="POST">
> <input type="submit" id="submit" value="Send">
>
> Kan ikke finde problemet. Undskyld al koden, men håber i vil
> hjælpe.
>
> Hilsen Michael

Så vidt jeg kan se, læser du rækkerne i databasen og putter dem tilbage
igen.
Hvor har du de nye data?
Du må jo skulle gette eller poste dem til update_row.php, fra den
første, somehow...

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Michael Lynggaard (02-09-2009)
Kommentar
Fra : Michael Lynggaard


Dato : 02-09-09 19:41

Birger Sørensen wrote in dk.edb.internet.webdesign.serverside.php:
> Michael Lynggaard har bragt dette til verden:
> > Hjælp ønskes.
> >
> > Jeg har en database med brugere som består af navn, alder og
> > email. hvor jeg henter en bruger som jeg kan rette data i.
> >
> > <?php
> > //connect to database
> > $conn = mysql_connect("localhost", "root") or die(mysql_error());
> > mysql_select_db("brugere",$conn) or die(mysql_error());
> > ?>
> >
> > <?php
> >
> > // Hent tabel-data
> > $getdata = mysql_query("SELECT * FROM brugere ORDER BY id ASC
> > LIMIT 50") or die(mysql_error());
> > if(mysql_num_rows($getdata) == 0)
> > {
> > print"Ingen rækker...";
> > }
> > else
> > {
> > print"<h2>Rækker</h2>";
> > while($row = mysql_fetch_array($getdata))
> > {
> > print"ID: ".$row['id']."<br />";
> > print"NAVN: ".$row['navn']."<br />";
> > print"ALDER: ".$row['alder']."<br />";
> > print"EMAIL: ".$row['email']."<br />";
> > print"RET BRUGER: <a
> > href=\"update_row.php?id=".$row['id']."\">klik her</a>";
> > print"<hr />";
> > }
> > }
> > print"<br /><br /><a href=\"insert_row.php\">Indsæt ny
> > række</a>";
> >
> > ?>
> >
> > Ingen problemer i dette. Som i kan se er der link til siden
> > update_row.php og nu kommer problemet. Som nævnt kan jeg hente,
> > se og rette data, men kan ikke få rettelserne tilbage i
> > data-basen.
> >
> > Her er koden til opdatering af databasen:
> > <?php
> > //connect to database
> > $conn = mysql_connect("localhost", "root") or die(mysql_error());
> > mysql_select_db("brugere",$conn) or die(mysql_error());
> > ?>
> >
> > <?php
> > if( isset( $_GET['id'] ) )
> > $id = $_GET['id'];
> > else
> > $id = null;
> >
> > if( $id !== null ) {
> > // Hent først data ud
> > $resultat = mysql_query("select * FROM brugere WHERE id =
> > '$id'");
> >
> > while ($num = mysql_fetch_array($resultat))
> > //while($num = mysql_query($svar))
> > {
> > $id=$num["id"];
> > $navn=$num["navn"];
> > $alder=$num["alder"];
> > $email=$num["email"];
> >
> > echo "<input type=\"hidden\" name=\"post_id\" value=\"$id\" />";
> > echo "<input type=\"text\" name=\"navn\" value=\"$navn\" />";
> > echo "<input type=\"text\" name=\"alder\" value=\"$alder\" />";
> > echo "<input type=\"text\" name=\"email\" value=\"$email\" />";
> >
> > }
> > }
> >
> > mysql_query("UPDATE brugere SET `navn`='".$navn."',
> > `alder`='".$alder."', `email`='".$email."' WHERE id =
> > '$_POST[id]'") or die(mysql_error()); // Vi sætter alle brugerens
> > POSTER ind i databasen.
> > ?>
> > <form action="se_brugere.php?id" method="POST">
> > <input type="submit" id="submit" value="Send">
> >
> > Kan ikke finde problemet. Undskyld al koden, men håber i vil
> > hjælpe.
> >
> > Hilsen Michael
>
> Så vidt jeg kan se, læser du rækkerne i databasen og putter dem tilbage
> igen.
> Hvor har du de nye data?
> Du må jo skulle gette eller poste dem til update_row.php, fra den
> første, somehow...
>
> Birger
>
> --
> http://varmeretter.dk - billig, sund og hurtig mad
> http://bbsorensen.dk
>
>
de nye data skulle være her

> > $id=$num["id"];
> > $navn=$num["navn"];
> > $alder=$num["alder"];
> > $email=$num["email"];

hvilket vil sige tror jeg. Når jeg henter data frem, kan jeg skrive nye
data i formularen, men ikke poste dem. Kan ikke rigtig finde ud af hvordan
man gør.

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Birger Sørensen (02-09-2009)
Kommentar
Fra : Birger Sørensen


Dato : 02-09-09 23:42

Michael Lynggaard forklarede:
> Birger Sørensen wrote in dk.edb.internet.webdesign.serverside.php:
>> Michael Lynggaard har bragt dette til verden:
>>> Hjælp ønskes.
>>>
>>> Jeg har en database med brugere som består af navn, alder og
>>> email. hvor jeg henter en bruger som jeg kan rette data i.
>>>
>>> <?php
>>> //connect to database
>>> $conn = mysql_connect("localhost", "root") or die(mysql_error());
>>> mysql_select_db("brugere",$conn) or die(mysql_error());
>>> ?>
>>>
>>> <?php
>>>
>>> // Hent tabel-data
>>> $getdata = mysql_query("SELECT * FROM brugere ORDER BY id ASC
>>> LIMIT 50") or die(mysql_error());
>>> if(mysql_num_rows($getdata) == 0)
>>> {
>>> print"Ingen rækker...";
>>> }
>>> else
>>> {
>>> print"<h2>Rækker</h2>";
>>> while($row = mysql_fetch_array($getdata))
>>> {
>>> print"ID: ".$row['id']."<br />";
>>> print"NAVN: ".$row['navn']."<br />";
>>> print"ALDER: ".$row['alder']."<br />";
>>> print"EMAIL: ".$row['email']."<br />";
>>> print"RET BRUGER: <a
>>> href=\"update_row.php?id=".$row['id']."\">klik her</a>";
>>> print"<hr />";
>>> }
>>> }
>>> print"<br /><br /><a href=\"insert_row.php\">Indsæt ny
>>> række</a>";
>>>
>>> ?>
>>>
>>> Ingen problemer i dette. Som i kan se er der link til siden
>>> update_row.php og nu kommer problemet. Som nævnt kan jeg hente,
>>> se og rette data, men kan ikke få rettelserne tilbage i
>>> data-basen.
>>>
>>> Her er koden til opdatering af databasen:
>>> <?php
>>> //connect to database
>>> $conn = mysql_connect("localhost", "root") or die(mysql_error());
>>> mysql_select_db("brugere",$conn) or die(mysql_error());
>>> ?>
>>>
>>> <?php
>>> if( isset( $_GET['id'] ) )
>>> $id = $_GET['id'];
>>> else
>>> $id = null;
>>>
>>> if( $id !== null ) {
>>> // Hent først data ud
>>> $resultat = mysql_query("select * FROM brugere WHERE id =
>>> '$id'");
>>>
>>> while ($num = mysql_fetch_array($resultat))
>>> //while($num = mysql_query($svar))
>>> {
>>> $id=$num["id"];
>>> $navn=$num["navn"];
>>> $alder=$num["alder"];
>>> $email=$num["email"];
>>>
>>> echo "<input type=\"hidden\" name=\"post_id\" value=\"$id\" />";
>>> echo "<input type=\"text\" name=\"navn\" value=\"$navn\" />";
>>> echo "<input type=\"text\" name=\"alder\" value=\"$alder\" />";
>>> echo "<input type=\"text\" name=\"email\" value=\"$email\" />";
>>>
>>> }
>>> }
>>>
>>> mysql_query("UPDATE brugere SET `navn`='".$navn."',
>>> `alder`='".$alder."', `email`='".$email."' WHERE id =
>>> '$_POST[id]'") or die(mysql_error()); // Vi sætter alle brugerens
>>> POSTER ind i databasen.
>>> ?>
>>> <form action="se_brugere.php?id" method="POST">
>>> <input type="submit" id="submit" value="Send">
>>>
>>> Kan ikke finde problemet. Undskyld al koden, men håber i vil
>>> hjælpe.
>>>
>>> Hilsen Michael
>>
>> Så vidt jeg kan se, læser du rækkerne i databasen og putter dem tilbage
>> igen.
>> Hvor har du de nye data?
>> Du må jo skulle gette eller poste dem til update_row.php, fra den
>> første, somehow...
>>
>> Birger
>>
>> --
>> http://varmeretter.dk - billig, sund og hurtig mad
>> http://bbsorensen.dk
>>
>>
> de nye data skulle være her
>
>>> $id=$num["id"];
>>> $navn=$num["navn"];
>>> $alder=$num["alder"];
>>> $email=$num["email"];
>
> hvilket vil sige tror jeg. Når jeg henter data frem, kan jeg skrive nye
> data i formularen, men ikke poste dem. Kan ikke rigtig finde ud af hvordan
> man gør.

$num = et eller andet du henter i databasen...
Som Bertel skriver, skal du hente nye værdier med $_POST - og så skal
du i øvrigt have dine <input...> inde i formen.
Og formen skal så i øvrigt kalde den fil der indsætter data, så der er
enten noget der mangler, eller et meget uheldigt design.
Prøv at dele det i tre filer i stedet - en der viser en der retter og
en der gemmer.

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Kim Emax (02-09-2009)
Kommentar
Fra : Kim Emax


Dato : 02-09-09 15:22

Hej

On Sep 2, 6:38 pm, Michael Lynggaard <m...@webspeed.dk> wrote:

Du får lige lidt tips med i købet

> Her er koden til opdatering af databasen:
> <?php
> //connect to database
> $conn = mysql_connect("localhost", "root") or die(mysql_error());
> mysql_select_db("brugere",$conn)  or die(mysql_error());
> ?>

Put dette i en seperat fil, kald den f.eks. connect.inc (eller
connect.php, hvis serveren vil vise connect.inc (det bør give access
denied, men ikke alle servere er sat sådan op)). Du inkluderer så
filen således:

include "connect.inc";

eller bedre:

require "connect.inc";

Forskellen er at require får scriptet til at fejle, hvis filen ikke
findes, med include forsætter scriptet.


> <?php
> if( isset( $_GET['id'] ) )
>   $id = $_GET['id'];
> else
>   $id = null;

// hvis id er sat, så laver du al efterfølgende arbejde, dvs. henter
data ud af tabellen,
if($_GET['id'])
// hvis der er trykket på submit, så tjekker du at værdierne er
korrekte inden indsættelse i database
elseif($_POST['submit'])
// ellers printer du en fejlmeddelse.
else
print 'Der skete en fejl, ingen id og ingen posting fra formen?';

> if( $id !== null ) {
>   // Hent først data ud
>   $resultat = mysql_query("select * FROM brugere WHERE id =
> '$id'");
>
> while ($num = mysql_fetch_array($resultat))
> //while($num = mysql_query($svar))
> {
> $id=$num["id"];
> $navn=$num["navn"];
> $alder=$num["alder"];
> $email=$num["email"];
>
> echo "<input type=\"hidden\" name=\"post_id\" value=\"$id\" />";

Her kalder du dit ID for "post_id", så er det det du skal tjekke
efter, når du submitter siden, så det er den ene fejl.

Du bør desuden nok starte din form inden du printer dine input felter.
Jeg ved ikke lige på stående fod om det får formularen til at fejle,
men jeg formoder det. Har altid brugt <form...> derefter input felter
og så </form>

> echo "<input type=\"text\" name=\"navn\" value=\"$navn\" />";
> echo "<input type=\"text\" name=\"alder\" value=\"$alder\" />";
> echo "<input type=\"text\" name=\"email\" value=\"$email\" />";
>
> }
> }
>
> mysql_query("UPDATE brugere SET `navn`='".$navn."',
> `alder`='".$alder."', `email`='".$email."' WHERE id =
> '$_POST[id]'") or die(mysql_error()); // Vi sætter alle brugerens
> POSTER ind i databasen.

Her tjekker du på feltet "id", men har kaldt det post_id i din hidden
værdi

Denne update smider du ind i elseif statementet som jeg skrev ovenfor
(hvis du vil følge mit råd)

> ?>
> <form action="se_brugere.php?id" method="POST">
> <input type="submit" id="submit" value="Send">

Her mangler du et name="submit" (medmindre du bruger AJAX)

> Kan ikke finde problemet. Undskyld al koden, men håber i vil
> hjælpe.

Fint med al koden, ellers er det svært at gennemskue fejlen Håber
det her hjalp dig videre...

--
mvh
Kim Emax

Dan Storm (02-09-2009)
Kommentar
Fra : Dan Storm


Dato : 02-09-09 22:30

Kim Emax skrev:
> [SNIP dårligt tip]

Der er ingen grund til at navngive en PHP fil med en anden extension.
Som du selv er inde på er der serveropsætninger ikke ens. På min server
vil en .inc fil blot vises som plain/text.

Navngiv filer med PHP koder med extension .php - fordi det giver mening
og fordi PHP ikke viser kildekoden.
Simple as that.


--
Dan Storm - storm at err0r dot dk / http://err0r.dk

People who claim they don't let little things bother
them have never slept in a room with a single mosquito.

Bertel Lund Hansen (02-09-2009)
Kommentar
Fra : Bertel Lund Hansen


Dato : 02-09-09 22:57

Dan Storm skrev:

> Der er ingen grund til at navngive en PHP fil med en anden extension.

Der er god grund til at bruge .inc.php som filendelse til
PHP-filer der skal inkluderes. Programmøren kan se på navnet at
det er en include-fil, og PHP-beskyttelsen får man på grund af
filtypen.

--
Bertel
http://bertel.lundhansen.dk/         FIDUSO: http://fiduso.dk/

Dan Storm (02-09-2009)
Kommentar
Fra : Dan Storm


Dato : 02-09-09 23:37

Bertel Lund Hansen skrev:
> Dan Storm skrev:
>
>> Der er ingen grund til at navngive en PHP fil med en anden extension.
>
> Der er god grund til at bruge .inc.php som filendelse til
> PHP-filer der skal inkluderes. Programmøren kan se på navnet at
> det er en include-fil, og PHP-beskyttelsen får man på grund af
> filtypen.
>

Filens extension er i dit scenarie dog stadig .php
Hvad man så bruger af forskellige metoder til navngivning af sine filer
er jo en smagssag.

Min måde at gøre det på er som følger.

Generelle includes:
   iFilnavn.inc.php

Applikations-klasser:
   aKlassenavn.obj.php

Generelle/Model Klasser:
   cKlassenavn.obj.php

Views:
   vViewnavn.php

Alt det som falder uden for kategorierne ovenfor navngives vist bare
tilfældigt.

--
Dan Storm - storm at err0r dot dk / http://err0r.dk

People who claim they don't let little things bother
them have never slept in a room with a single mosquito.

Bertel Lund Hansen (02-09-2009)
Kommentar
Fra : Bertel Lund Hansen


Dato : 02-09-09 23:03

Michael Lynggaard skrev:

> Jeg har en database med brugere som består af navn, alder og
> email. hvor jeg henter en bruger som jeg kan rette data i.

Dit problem er at du henter data og skriver dem tilbage igen med
det vuns. Din kode har slet ikke fat i nogen ændringer.

Hvis en bruger skal kunne lave input, skal der være en formular:

<form action='#' method='post'>
<p><input type='text' name='navn' value='<?php echo $_POST['navn']; ?>'></p>
<p><input type='submit' name='send' value='Ja tak, lav ændringerne nu'></p>
</form>

Inputtet i formularen får du fat i med $_POST['navn']. Så du skal have noget i stil med:

$id=$_POST['id'];
$navn=$_POST['navn'];
osv.

Så kan du skrive de nye værdier til databasen bagefter.

Men husk at tjekke brugerinput. Ellers laver du en ladeport til hackere.

--
Bertel
http://bertel.lundhansen.dk/         FIDUSO: http://fiduso.dk/

Michael Lynggaard (03-09-2009)
Kommentar
Fra : Michael Lynggaard


Dato : 03-09-09 06:40

Bertel Lund Hansen wrote in dk.edb.internet.webdesign.serverside.php:
> Michael Lynggaard skrev:
>
> > Jeg har en database med brugere som består af navn, alder og
> > email. hvor jeg henter en bruger som jeg kan rette data i.
>
> Dit problem er at du henter data og skriver dem tilbage igen med
> det vuns. Din kode har slet ikke fat i nogen ændringer.
>
> Hvis en bruger skal kunne lave input, skal der være en formular:
>
> <form action='#' method='post'>
> <p><input type='text' name='navn' value='<?php echo $_POST['navn']; ?>'></p>
> <p><input type='submit' name='send' value='Ja tak, lav ændringerne nu'></p>
> </form>
>
> Inputtet i formularen får du fat i med $_POST['navn']. Så du skal have noget i stil med:
>
> $id=$_POST['id'];
> $navn=$_POST['navn'];
> osv.
>
> Så kan du skrive de nye værdier til databasen bagefter.
>
> Men husk at tjekke brugerinput. Ellers laver du en ladeport til hackere.
>
> --
> Bertel
> http://bertel.lundhansen.dk/         FIDUSO: http://fiduso.dk/
Hej Bertel.

For at sige det lige ud fatter jeg ikke en brik

Jeg har en fil (se_brugere.php) hvor jeg kan se alle brugere. I denne fil er der en knap
der hedder ret. Når jeg trykker åbner update_row.php, hvor jeg får alle brugere op i en
formular, hvor jeg kan slette og indtaste de ny oplysninger. Jeg kan bare ikke få dem ned i
databasen.
Du kan se, hvordan her: http://www.msly.dk/test/se_brugere.php.



--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Dan Storm (03-09-2009)
Kommentar
Fra : Dan Storm


Dato : 03-09-09 07:53

Michael Lynggaard skrev:
> Jeg har en fil (se_brugere.php) hvor jeg kan se alle brugere. I denne fil er der en knap
> der hedder ret. Når jeg trykker åbner update_row.php, hvor jeg får alle brugere op i en
> formular, hvor jeg kan slette og indtaste de ny oplysninger. Jeg kan bare ikke få dem ned i
> databasen.

Som Bertel siger, så udfører du for mange ting samtidig - og forkert. Du
skal have lidt mere styr på din generelle brug af HTML og PHP.

Jeg antager at du kender forskellene og anvendelsen af $_GET og $_POST
(da det egentlig er et par af grundstenene i brugen af PHP).

Hvis man tager dit 'rette' script og deler det op i en logisk rækkefølge
sker der basalt set dette:

Hent data(1) fra database fra $_GET["id"]
   OG
vis data(1) i inputfelter
   OG
Opdater data(1) i databasen med data(2) og data(1)

Hvor data(1) er data fra din database og data(2) er din $_POST variabel
som faktisk er, men alligevel benytter.


Basalt set, skal der være mere opdeling, men det er nemmest at vise ved
hjælp af et flowchart istedet, men altså - jeg kunne ikke tegne en lige
streg på et stykke blank papir om jeg så havde en linial.. lineal.. you
know...

Lav noget mere opdeling af din kode.

Din rette process kan sagtens deles op i to filer:

Din update_row.php:
<?php

   //connect to database
   $conn = mysql_connect("localhost", "root") or die(mysql_error());
   mysql_select_db("brugere",$conn) or die(mysql_error());

   $id = (int)$_GET["id"];
   
   $sql = "SELECT * FROM brugere WHERE id = ".$id." LIMIT 1";
   $result = mysql_query($sql);

   if(mysql_num_rows() == 0)
   die("Der kunne ikke findes en bruger");

   $id = mysql_result($result, 0, "id");
   $navn = mysql_result($result, 0, "navn");
   $alder = mysql_result($result, 0, "alder");
   $email = mysql_result($result, 0, "email");
?>
<form action="submit_update.php" method="post">
<div>

   <input type="hidden" name="id" value="<?php echo $id; ?>" />
   <input type="text" name="navn" value="<?php echo $navn; ?>" />
   <input type="text" name="alder" value="<?php echo $alder; ?>" />
   <input type="text" name="email" value="<?php echo $email; ?>" />

   <input type="submit" id="submit" value="Send" />
</div>
</form>   
   
Og så en fil kaldet submit_update.php:
<?php

   //connect to database
   $conn = mysql_connect("localhost", "root") or die(mysql_error());
   mysql_select_db("brugere",$conn) or die(mysql_error());

   $id = (int)$_POST["id"];
   
   $navn = mysql_real_escape_string($_POST["navn"]);
   $alder = mysql_real_escape_string($_POST["alder"]);
   $email = mysql_real_escape_string($_POST["email"]);

   $sql = "UPDATE brugere SET navn='".$navn."', alder='".."',
email='".$email."' WHERE id=".$id;
   mysql_query($sql);

   header("Location: se_brugere.php");
   exit;

?>


To filer, som arbejder sammen - det vil lette dit arbejde med
vedligeholdelsen og du slipper for at have alt for meget kode i en fil.
Simpelt og elegant.


--
Dan Storm - storm at err0r dot dk / http://err0r.dk

People who claim they don't let little things bother
them have never slept in a room with a single mosquito.

Michael Lynggaard (03-09-2009)
Kommentar
Fra : Michael Lynggaard


Dato : 03-09-09 09:26

Dan Storm wrote in dk.edb.internet.webdesign.serverside.php:
> Michael Lynggaard skrev:
> > Jeg har en fil (se_brugere.php) hvor jeg kan se alle brugere. I denne fil er der en knap
> > der hedder ret. Når jeg trykker åbner update_row.php, hvor jeg får alle brugere op i en
> > formular, hvor jeg kan slette og indtaste de ny oplysninger. Jeg kan bare ikke få dem ned i
> > databasen.
>
> Som Bertel siger, så udfører du for mange ting samtidig - og forkert. Du
> skal have lidt mere styr på din generelle brug af HTML og PHP.
>
> Jeg antager at du kender forskellene og anvendelsen af $_GET og $_POST
> (da det egentlig er et par af grundstenene i brugen af PHP).
>
> Hvis man tager dit 'rette' script og deler det op i en logisk rækkefølge
> sker der basalt set dette:
>
> Hent data(1) fra database fra $_GET["id"]
>    OG
> vis data(1) i inputfelter
>    OG
> Opdater data(1) i databasen med data(2) og data(1)
>
> Hvor data(1) er data fra din database og data(2) er din $_POST variabel
> som faktisk er, men alligevel benytter.
>
>
> Basalt set, skal der være mere opdeling, men det er nemmest at vise ved
> hjælp af et flowchart istedet, men altså - jeg kunne ikke tegne en lige
> streg på et stykke blank papir om jeg så havde en linial.. lineal.. you
> know...
>
> Lav noget mere opdeling af din kode.
>
> Din rette process kan sagtens deles op i to filer:
>
> Din update_row.php:
> <?php
>
>    //connect to database
>    $conn = mysql_connect("localhost", "root") or die(mysql_error());
>    mysql_select_db("brugere",$conn) or die(mysql_error());
>
>    $id = (int)$_GET["id"];
>    
>    $sql = "SELECT * FROM brugere WHERE id = ".$id." LIMIT 1";
>    $result = mysql_query($sql);
>
>    if(mysql_num_rows() == 0)
>    die("Der kunne ikke findes en bruger");
>
>    $id = mysql_result($result, 0, "id");
>    $navn = mysql_result($result, 0, "navn");
>    $alder = mysql_result($result, 0, "alder");
>    $email = mysql_result($result, 0, "email");
> ?>
> <form action="submit_update.php" method="post">
> <div>
>
>    <input type="hidden" name="id" value="<?php echo $id; ?>" />
>    <input type="text" name="navn" value="<?php echo $navn; ?>" />
>    <input type="text" name="alder" value="<?php echo $alder; ?>" />
>    <input type="text" name="email" value="<?php echo $email; ?>" />
>
>    <input type="submit" id="submit" value="Send" />
> </div>
> </form>   
>    
> Og så en fil kaldet submit_update.php:
> <?php
>
>    //connect to database
>    $conn = mysql_connect("localhost", "root") or die(mysql_error());
>    mysql_select_db("brugere",$conn) or die(mysql_error());
>
>    $id = (int)$_POST["id"];
>    
>    $navn = mysql_real_escape_string($_POST["navn"]);
>    $alder = mysql_real_escape_string($_POST["alder"]);
>    $email = mysql_real_escape_string($_POST["email"]);
>
>    $sql = "UPDATE brugere SET navn='".$navn."', alder='".."',
> email='".$email."' WHERE id=".$id;
>    mysql_query($sql);
>
>    header("Location: se_brugere.php");
>    exit;
>
> ?>
>
>
> To filer, som arbejder sammen - det vil lette dit arbejde med
> vedligeholdelsen og du slipper for at have alt for meget kode i en fil.
> Simpelt og elegant.
>
>
> --
> Dan Storm - storm at err0r dot dk / http://err0r.dk
>
> People who claim they don't let little things bother
> them have never slept in a room with a single mosquito.

Hej Dan

Jeg har lavet de to filer du nævner men får denne fejl når jeg prøver at åbne update_row.php fra
se_brugere.php

Warning: Wrong parameter count for mysql_num_rows() in C:\wamp\www\test\update_row.php on line
14
Der kunne ikke findes en bruger

Har du en løsning

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Dan Storm (03-09-2009)
Kommentar
Fra : Dan Storm


Dato : 03-09-09 09:46

Michael Lynggaard skrev:
> Hej Dan
>
> Jeg har lavet de to filer du nævner men får denne fejl når jeg prøver at åbne update_row.php fra
> se_brugere.php
>
> Warning: Wrong parameter count for mysql_num_rows() in C:\wamp\www\test\update_row.php on line
> 14
> Der kunne ikke findes en bruger
>
> Har du en løsning
>

Ja, det har jeg.
udskift linien med:
if(mysql_num_rows($result) == 0)

Udover det, var det nok noget du kunne have fundet i manualen.

--
Dan Storm - storm at err0r dot dk / http://err0r.dk

People who claim they don't let little things bother
them have never slept in a room with a single mosquito.

Michael Lynggaard (03-09-2009)
Kommentar
Fra : Michael Lynggaard


Dato : 03-09-09 11:21

Dan Storm wrote in dk.edb.internet.webdesign.serverside.php:
> Michael Lynggaard skrev:
> > Hej Dan
> >
> > Jeg har lavet de to filer du nævner men får denne fejl når jeg prøver at åbne update_row.php fra
> > se_brugere.php
> >
> > Warning: Wrong parameter count for mysql_num_rows() in C:\wamp\www\test\update_row.php on line
> > 14
> > Der kunne ikke findes en bruger
> >
> > Har du en løsning
> >
>
> Ja, det har jeg.
> udskift linien med:
> if(mysql_num_rows($result) == 0)
>
> Udover det, var det nok noget du kunne have fundet i manualen.
>
> --
> Dan Storm - storm at err0r dot dk / http://err0r.dk
>
> People who claim they don't let little things bother
> them have never slept in a room with a single mosquito.

Hej Dan.

Takker mange gange for din hjælp, det virker som det skal.
Jeg er - som du nok kan regne ud - meget ny i dette såee...endnu en gang tak.

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Stig Johansen (03-09-2009)
Kommentar
Fra : Stig Johansen


Dato : 03-09-09 12:27

Dan Storm wrote:

> $navn = mysql_real_escape_string($_POST["navn"]);

Hvorfor bruger man ikke parameterized queries?
mysql_real_escape_string er ikke en beskyttelse mod SQL injection.

--
Med venlig hilsen
Stig Johansen

Dan Storm (03-09-2009)
Kommentar
Fra : Dan Storm


Dato : 03-09-09 13:10

Stig Johansen skrev:
>> $navn = mysql_real_escape_string($_POST["navn"]);
>
> Hvorfor bruger man ikke parameterized queries?

Af den simple årsag at jeg ikke gad at sætte brugeren ind i at benytte
mysqli (som er den eneste MySQL extension der tillader prepared
statements i php til MySQL) da det var ret åbenlyst at OP i forvejen
ikke havde den fjerneste idé om hvad denne lavede.

> mysql_real_escape_string er ikke en beskyttelse mod SQL injection.

Det er da en start :) samt et alternativ til et kursus i brugen af
prepared statements.



--
Dan Storm - storm at err0r dot dk / http://err0r.dk

People who claim they don't let little things bother
them have never slept in a room with a single mosquito.

Bertel Lund Hansen (03-09-2009)
Kommentar
Fra : Bertel Lund Hansen


Dato : 03-09-09 10:40

Michael Lynggaard skrev:

> For at sige det lige ud fatter jeg ikke en brik

Så vil jeg råde dig til at lægge projektet på is indtil du ved
mere om HTML og PHP.

Her er en øvelse du kan lave som træning.

1. Lav en helt ny og simpel formularside med navn og adresse.
2. Lav en ny side der modtager data fra den første og viser i en
pæn opstilling.
3. Sammenbyg de to sider så det er formularsiden selv der
modtager og opsætter de inputtede data fra sig selv.

Når du kan det, er du bedre rustet til at kaste dig i gang med
det lidt avancerede projekt du har gang i.

Man må kravle før man kan gå.

--
Bertel
http://bertel.lundhansen.dk/         FIDUSO: http://fiduso.dk/

Søg
Reklame
Statistik
Spørgsmål : 177580
Tips : 31968
Nyheder : 719565
Indlæg : 6409075
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste