Avatar billede nh92 Nybegynder
09. december 2008 - 16:59 Der er 22 kommentarer og
1 løsning

Rediger brugerprofil

Hej eksperter.

Jeg har lige et "simpelt" spørgsmål. Det lyder ikke så vanskeligt men jeg kan ikke lige helt hitte ud af det. Men jeg har en hjemmeside, med et loginsytem og en session. Men jeg vil gerne have at folk kan ændre sine profil dataer. Men så skal det være sådan, at jeg har opstillet nogle bokse ligesom i opret funktionen. Men her skal den så udskrive de forskellige brugerdata fra mysql tabellerne. Så man kan ændre dem og opdaterer dem. Men jeg kan ikke få den til at vise dem. Ved i hvad jeg kan gøre?

Min session ser sådan ud:

<?php
session_start();
if ($_SESSION['loget_in']) {
print 'Hej ' . $_SESSION['Brugernavn'] . '. Du er nu logget ind:';
?>
<br><br>
<a href="rediger.php">Redigér min profil</a> <br>
<a href="logud.php">Log ud</a>
<?
} else {
print ''; ?>
<br><br>
<?
}
?>
Avatar billede jakobdo Ekspert
09. december 2008 - 17:17 #1
Jeg kan give dig et hint.

Du kan lave rediger.php siden ala:

<?php
if ($_SESSION['loget_in']) {
//Husk at forbind til db
$query = mysql_query("SELECT * FROM brugere WHERE brugernavn = '".$_SESSION['brugernavn']."' LIMIT 1");
$row = mysql_fetch_assoc($query);
echo '<form action="rediger.php" method="post">';
echo 'Brugernavn: <input type="text" name="brugernavn" value="'.$row['brugernavn'].'" /><br />';
echo '<input type="submit" name="edit" value="Rediger" />';
echo '</form>';
}else{
echo 'Siden kræver login';
}
?>
Avatar billede nh92 Nybegynder
18. december 2008 - 16:59 #2
Ja det var en idé, men jeg skal også bruge dem inde i et adminsystem, hvor jeg vil gøre sådan, at man kan redigere sine tekster, som fremkommer på siderne. Men hvor teksten fra databasen bliver udskrevet i ens redigerfelter, så man er fri for at skrive hele teksten igen, plus det man nu skal have tilføjet.
Avatar billede jakobdo Ekspert
18. december 2008 - 19:12 #3
Det er mere eller mindre samme metode.
Avatar billede nh92 Nybegynder
05. januar 2009 - 17:49 #4
Den siger fejl på den her linje: $row = mysql_fetch_assoc($query);

"Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in W:\www\dreamy\rediger.php on line 73"
Avatar billede jakobdo Ekspert
05. januar 2009 - 20:33 #5
Så tilføj lige:

$query = mysql_query("SELECT * FROM brugere WHERE brugernavn = '".$_SESSION['brugernavn']."' LIMIT 1") or die(mysql_error());
Avatar billede nh92 Nybegynder
06. januar 2009 - 16:58 #6
Den udskriver stadig ikke noget brugernavn i mit tekstfelt?
Avatar billede nh92 Nybegynder
06. januar 2009 - 17:00 #7
<?php
if ($_SESSION['loget_in']) {
//Husk at forbind til db
$query = mysql_query("SELECT * FROM bruger WHERE brugernavn = '".$_SESSION['brugernavn']."' LIMIT 1") or die(mysql_error());
$row = mysql_fetch_assoc($query);
echo '<form action="rediger-ok.php" method="post">';
echo 'Brugernavn: <input type="text" name="brugernavn" value="'.$row['brugernavn'].'" /><br />';
echo '<input type="submit" name="edit" value="Rediger" />';
echo '</form>';
}else{
echo 'Siden kræver login';
}
?>

Koden skal bare se sådan ud skal den ikke?

Den viser fint siden, men ingen ting i tekstfeltet.
Avatar billede jakobdo Ekspert
06. januar 2009 - 20:23 #8
Og du har forbundet til databasen ?
Har du et link til din side ?
Avatar billede nh92 Nybegynder
07. januar 2009 - 18:00 #9
Ja, har includet en mysql.php i toppen af hver side. Nej, desværre ikke da den ligger på localhost men hele min rediger.php ser sådan ud:

<?

include ("mysql.php");
include ("config.php");

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title><?=$sidetitel?></title>
<link rel="stylesheet" href="style.css" type="text/css" media="screen" />
</head>

<body>

<div id="wrapper">

    <div id="header">
        <h1><a href="index.php"><?=$overtitel?></a></h1>
    </div>

    <div id="menu">
        <ul>
            <li><a href="index.php"><?=$menu1?></a></li>
            <li><a href="ommig.php"><?=$menu2?></a></li>
            <li><a href="blog.php"><?=$menu3?></a></li>
            <li><a href="billeder.php"><?=$menu4?></a></li>
            <li><a href="sport.php"><?=$menu5?></a></li>
        </ul>
    </div>

    <div id="sidebar">
    <div id="feed">
  &nbsp;&nbsp;&nbsp;
  <br><br>

<?php

session_start();
if ($_SESSION['loget_in']) {
    print 'Hej ' . $_SESSION['Brugernavn'] . '. Du er nu logget ind:';
    ?>
    <br><br>
    <a href="rediger.php">Redigér min profil</a>    <br>
    <a href="logud.php">Log ud</a>
    <?
} else {
    print '';  ?>


<br><br>
<?

}

?>
    </div>
    </div>

    <div id="content">

       
        <div class="entry">

        <center><h2><?=$redigerprofil?></h2></center>
       
  <?php
if ($_SESSION['loget_in']) {
//Husk at forbind til db
$query = mysql_query("SELECT * FROM bruger WHERE brugernavn = '".$_SESSION['brugernavn']."' LIMIT 1") or die(mysql_error());
$row = mysql_fetch_assoc($query);
echo '<form action="rediger-ok.php" method="post">';
echo 'Brugernavn: <input type="text" name="brugernavn" value="'.$row['brugernavn'].'" /><br />';
echo '<input type="submit" name="edit" value="Rediger" />';
echo '</form>';
}else{
echo 'Siden kræver login';
}
?>

<form action="rediger-ok.php" method="post">
<label>Brugernavn:*<br>
<input type='text' name='user_location' value='' maxlength='50' class='textbox' style='width:200px;'>
</label>    <br>
<label>Password:*  <br>
<input type="password" name="password">
</label>      <br>
<label>E-mail:*<br>
<input type="text" name="mail" />
</label>    <br>
<label>Din mening om siden:<br>
<textarea rows="2" cols="20" name="siden"></textarea>
</label>    <br><br>
<input type="submit" name="opret" value="Opret" />
</form>  <br>
<p><i>Dem markeret med * SKAL udfyldes</i></p>
        </div>
    </div>

    <div id="footer">
        <div id="footer-valid">
            <?=$copyright?>  / <a href="http://www.ginger-ninja.net/">Producter</a>
    <br>    <?=$kontakt?>
        </div>
    </div>

</div>

</body>
</html>

Kan problemet ligge et andet sted end i din kode?
Avatar billede jakobdo Ekspert
07. januar 2009 - 21:25 #10
Måske, men det er jo altid svært at sige.
Du får ingen php fejl ?
Avatar billede nh92 Nybegynder
08. januar 2009 - 14:11 #11
Nej der kommer ingen fejl overhovedet. Den viser siden uden problemer.
Avatar billede jakobdo Ekspert
08. januar 2009 - 14:21 #12
Og den viser også din rediger formular ?
Avatar billede nh92 Nybegynder
08. januar 2009 - 15:09 #13
Ja, men den teskt der skulle have været udskrevet i den, bliver ikke udskrevet. Der står ikke noget i formularen.
Avatar billede jakobdo Ekspert
08. januar 2009 - 15:19 #14
Inden du kalder mysql_query over din formular, prøv så lige at lav:

echo 'DEBUG : ' . "SELECT * FROM bruger WHERE brugernavn = '".$_SESSION['brugernavn']."' LIMIT 1" . '<br />';
Avatar billede nh92 Nybegynder
08. januar 2009 - 15:27 #15
Så skriver den bare "DEBUG : SELECT * FROM bruger WHERE brugernavn = '' LIMIT 1"
Avatar billede jakobdo Ekspert
08. januar 2009 - 15:30 #16
Så er der jo netop noget galt med: $_SESSION['brugernavn']
Du skal jo have et eller andet i din login, som gemmer en værdi på din bruger.
F.eks. ID fra din bruger tabel.
Avatar billede nh92 Nybegynder
08. januar 2009 - 15:32 #17
Ja, det har du nok ret i. Hvordan skal det laves?
  <?php

session_start();
if ($_SESSION['loget_in']) {
    print 'Hej ' . $_SESSION['Brugernavn'] . '. Du er nu logget ind:';
    ?>
    <br><br>
    <a href="rediger.php">Redigér min profil</a>    <br>
    <a href="logud.php">Log ud</a>
    <?
} else {
    print '';  ?>

<h3>  Login: </h3>

    <form name="Login" method="POST" action="login-ok.php">
Brugernavn: <input type="text" name="Brugernavn"><br>
Password:  <input type="password" name="Password"><br>
<input type="submit" name="Submit" value="Login">
</form>

Registér dig som bruger <a href="opret.php">HER</a>
<?
}
?>

Sådan ser min session ud? Kan jeg ikke bare tilføje lidt for at den gemmer ID?
Avatar billede jakobdo Ekspert
08. januar 2009 - 15:53 #18
DU skal vise koden fra login-ok.php
Avatar billede nh92 Nybegynder
08. januar 2009 - 16:01 #19
<?

include ("mysql.php");
include ("config.php");

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title><?=$sidetitel?></title>
<link rel="stylesheet" href="style.css" type="text/css" media="screen" />
</head>

<body>

<div id="wrapper">

    <div id="header">
        <h1><a href="index.php"><?=$overtitel?></a></h1>
    </div>

    <div id="menu">
        <ul>
            <li><a href="index.php"><?=$menu1?></a></li>
            <li><a href="ommig.php"><?=$menu2?></a></li>
            <li><a href="blog.php"><?=$menu3?></a></li>
            <li><a href="billeder.php"><?=$menu4?></a></li>
            <li><a href="sport.php"><?=$menu5?></a></li>
        </ul>
    </div>

    <div id="sidebar">
    <div id="feed">
  &nbsp;&nbsp;&nbsp;
  <br><br>
<?php
include ("mysql.php");

session_start();

if(!isset($_POST['Submit'])) { //Tester om brugeren kom fra  index.html
    echo "Du skal komme fra index.php";
    }else{
        $postbruger = $_POST['Brugernavn'];
        $postpass = $_POST['Password'];
//For læservenligheden overføres post variablerne til normale variabler

        $resultat = mysql_query("SELECT id FROM `bruger` WHERE Brugernavn = '$postbruger' AND
Password = '$postpass'");//Spørger efter ID

        $number = mysql_num_rows($resultat);//Tæller antaller af resultater
        if($number == 1) { //Hvis der kun er et resultat, bliver brugeren logget in
        $_SESSION['loget_in'] = 1;
        $_SESSION['Brugernavn'] = $postbruger;
        $_SESSION['Password'] = $postpass; //Sætter session variablerne
        echo "Hej $postbruger. Du er nu logget ind:";
        ?>
        <br><br>
        <a href="rediger.php">Redigér min profil</a>    <br>
        <a href="logud.php">Log ud</a>
        <?

        }else echo"De indtastede oplysninger er ikke korrekte";
        }
?>


<br><br>


    </div>
    </div>

    <div id="content">

       
        <div class="entry">

        <center><h2><?=$velkomst?></h2></center>

  <?
$result = mysql_query("select * from velkomst order by ID DESC");
while($row = mysql_fetch_array($result)) {
?>

<!-- Tabel nyheder | Start -->

<table border="0" width="80%">
    <tr>
<td><p><?=$row[velkomst]?></p></td>
    </tr>
</table>

<!-- Tabel nyheder|Slut -->

<?
}
?>

      <?
$result = mysql_query("select * from nyheder order by ID DESC");
$row = mysql_fetch_array($result);
?>

<!-- Tabel nyheder | Start -->
  <center><h2><?=$nyheder?></h2></center>
<table border="0" width="80%">
    <tr>
        <td><h3><?=$row[overskrift]?></h3> <br>
<p><?=$row[tekst]?></p>
<p><i>Skrevet af: <?=$row[forfatter]?></i> </p>
</td>
    </tr>
</table>

<!-- Tabel nyheder|Slut -->
<h4>Flere nyheder:</h4>

<?
$news = mysql_query("select * from nyheder order by ID DESC");
while($rowNews = mysql_fetch_array($news)) {
?>

<h4><a href="news.php?id=<?=$rowNews[id]?>"><?=$rowNews[overskrift]?></a></h4>

<?
}
?>
        </div>
    </div>

    <div id="footer">
        <div id="footer-valid">
            <?=$copyright?>  / <a href="http://www.ginger-ninja.net/">Producter</a>
    <br>    <?=$kontakt?>
        </div>
    </div>

</div>

</body>
</html>
Avatar billede jakobdo Ekspert
08. januar 2009 - 16:52 #20
Det er fordi det skal være:
$_SESSION['Brugernavn']
og ikke:
$_SESSION['brugernavn']
Avatar billede nh92 Nybegynder
08. januar 2009 - 17:05 #21
Ja, du har fuldstændig ret! Tusinde tak skal du have ven! Bare smid et svar, det er fuldt fortjent!
Avatar billede jakobdo Ekspert
08. januar 2009 - 17:09 #22
Svar!
Avatar billede jakobdo Ekspert
08. januar 2009 - 20:11 #23
Takker for point.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester