Avatar billede BTEngineer Novice
06. februar 2006 - 13:04 Der er 12 kommentarer og
1 løsning

Ret profil

Hej Eksperter.

Jeg har lavet et community.
Jeg har lavet det sådan at når man er logget ind, har man valg- mulighederne øverst.

Det er lavet således:

<a href="logget_ind.php?valg=statistik">statistik</a> -
<a href="logget_ind.php?valg=retprofil">ret profil</a>
<a href="logget_ind.php?valg=blandet">blandet</a>

<?
if($_GET[valg] == "statistik") {
include("statistik.php");
}

if($_GET[valg] == "retprofil") {
include("ret_profil.php");
}

if($_GET[valg] == "blandet") {
include("blandet.php");
}
?>

Problemmet er, at når man vælger ret profil, og redigere f.eks. sit navn, til jakob, hvor det før var hans, og så man har glemt at indtaste sin email, som er et krav, så står der lige pludselig hansjakob i navnfeltet.

Det skyldes jo at man har lavet menuen på denne måde.
Og at den ikke opdatere vil jeg tro.

Er der nogen der kan hjælpe?

Bare spørg hvis der er noget i ikke spørger ved spørgsmålet.
Jeg giver også gerne karma hvis nogen kal hjælpe!
Avatar billede BTEngineer Novice
06. februar 2006 - 13:06 #1
Bare spørg hvis der er noget i ikke forstår ved spørgsmålet.
Jeg giver også gerne karma hvis nogen kan hjælpe!
Avatar billede jaw Nybegynder
06. februar 2006 - 13:26 #2
Du skal nok nærmere paste dit indhold af ret_profil.php, da det nok er der mysteriet ligger og ikke i måden du inkluderer det på.
Avatar billede BTEngineer Novice
06. februar 2006 - 14:36 #3
Hvad mener du?
Avatar billede jaw Nybegynder
06. februar 2006 - 14:39 #4
Jeg mener, at hvis jeg skal hjælpe dig med hvorfor der står hansjakob i feltet, så må jeg se din kode til ret_profil.php.
Avatar billede BTEngineer Novice
06. februar 2006 - 15:04 #5
Her:

<?
session_start();

include("../inc/cfg.php");

?>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">

<title>Ret profil</title>

</head>

<body>

<?

if($_POST[rediger]) {

if($_POST[email] == "") {
$fejl[] = "E-mailen mangler.";
}

if(substr_count($_POST[email],'@')==0 || substr_count($_POST[email],'.')==0) {
$fejl[] = "E-mailen er ugyldig.";
}

if($fejl) {
    echo("<font color='red'><b>Brugeren blev ikke opdateret:</b></font><br>");
for($i=0;
sizeof($fejl) > $i;
$i++) {
    echo("- <font color='red'>$fejl[$i]</font><br>");
}
} else {

$navn = htmlspecialchars($navn);
$efternavn = htmlspecialchars($efternavn);
$email = htmlspecialchars($email);
$hjemmeside = htmlspecialchars($hjemmeside);
$fritekst = htmlspecialchars($fritekst);

mysql_query("UPDATE community SET navn = '$navn', efternavn = '$efternavn', email = '$email', hjemmeside = '$hjemmeside', fritekst = '$fritekst' WHERE brugernavn = '$_SESSION[brugernavn]'");
echo("Din profil er nu opdateret.");
echo mysql_error();
}
}

if($fejl || !$_POST[rediger]) {

$hent = mysql_query("SELECT * FROM community WHERE brugernavn = '$_SESSION[brugernavn]'");
$vis = mysql_fetch_array($hent);
echo mysql_error();
?>

<form action="ret_profil.php" method="POST">

<table border="0" width="100%">
    <tr>
        <td width="98"><b>Brugernavn:</b></td>
        <td width="877"><input type="text" size="30" name="brugernavn" disabled="yes" value="<? echo $vis[brugernavn]; ?>"></td>
    </tr>
    <tr>
        <td width="98"><b>Navn:</b></td>
        <td width="877"><input type="text" size="30" name="navn" value="<? echo $vis[navn]; echo $_POST[navn]; ?>"></td>
    </tr>
    <tr>
        <td width="98"><b>Efternavn:</b></td>
        <td width="877"><input type="text" size="30" name="efternavn" value="<? echo $vis[efternavn]; echo $_POST[efternavn]; ?>"></td>
    </tr>
    <tr>
        <td width="98"><b>E-mail:</b></td>
        <td width="877"><input type="text" size="30" name="email" value="<? echo $vis[email]; echo $_POST[email]; ?>"></td>
    </tr>
    <tr>
        <td width="98"><b>Hjemmeside:</b></td>
        <td width="877"><input type="text" size="30" name="hjemmeside" value="<? echo $vis[hjemmeside]; echo $_POST[hjemmeside]; ?>"></td>
    </tr>
    <tr>
        <td width="98" valign="top"><b>Fritekst:</b></td>
        <td width="877"><textarea name="fritekst" rows="9" cols="46"><? echo $vis[fritekst]; echo $_POST[fritekst]; ?></textarea></td>
    </tr>
    <tr>
        <td width="98" valign="top"><b>Rediger:</b></td>
        <td width="877"><input type="submit" name="rediger" value="Rediger"></td>
    </tr>
</table>

</form>

<?
}
?>

</body>

</html>
Avatar billede jaw Nybegynder
06. februar 2006 - 16:12 #6
Grunden til, at der står hansjakob er dette:
value="<? echo $vis[navn]; echo $_POST[navn]; ?>"
altså, at du putter både navnet fra databasen og navnet fra feltet ind. Du kan evt. ændre det til bare:
value="<? echo $vis[navn];?>"
Avatar billede BTEngineer Novice
06. februar 2006 - 16:15 #7
det er jeg godt klar over.
Men det skal være sådan at hvis de f.eks. har ændret en masse i deres fritekst, og så har glemt E-mailen og den siger fejl, så forbliver den fornyede fritekst i tekst areaen.
Avatar billede jaw Nybegynder
06. februar 2006 - 16:17 #8
Ok, men så lad os lave en if-else på det bare med friteksten:
<td width="877"><textarea name="fritekst" rows="9" cols="46"><? echo $vis[fritekst]; echo $_POST[fritekst]; ?></textarea></td>

til:
<td width="877"><textarea name="fritekst" rows="9" cols="46">
<?
if(isset($_POST['fritekst'])) {
  echo $_POST[fritekst];
} else {
  echo $vis[fritekst];
}
?></textarea></td>
Avatar billede jaw Nybegynder
06. februar 2006 - 16:20 #9
Eller måske lidt nemmere:
<td width="877"><textarea name="fritekst" rows="9" cols="46"><? echo (isset($_POST['fritekst'])) ? $_POST['fritekst'] : $vis['fritekst']; ?></textarea></td>
Avatar billede BTEngineer Novice
06. februar 2006 - 16:31 #10
Det virker. Tusinde tak.
Men har aldrig fattet funktionen isset.
Kan du ikke lige forklarer, ellers for jeg jo ikke specielt meget ud af det.
Avatar billede jaw Nybegynder
06. februar 2006 - 16:35 #11
Egentlig er if($test) og if(isset($test)) det samme - og så ikke helt alligevel. If($test) er en "sjusket" måde at skrive det på, og ikke helt syntaxmæssigt korrekt.

Isset er "is set" på engelsk, oversat "er sat". Altså, den tjekker om variablen er sat (eksisterer).

Svar nok? Og så vil jeg tillade mig at smide det som et svar :)

Selv tak !
Avatar billede BTEngineer Novice
06. februar 2006 - 16:42 #12
Det er forståeligt nok! :-)
Avatar billede jaw Nybegynder
06. februar 2006 - 16:43 #13
Godt, tak 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

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Solution Manager til Cyberdivisionen

Riskpoint A/S (Riskpoint Solutions Limited)

Senior Developer

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Teknologirådgiver inden for AI-området til Teknologiafdelingen