Avatar billede JJ77 Juniormester
10. december 2006 - 14:01 Der er 50 kommentarer og
1 løsning

send et brugernavn til brugeren ud fra hans emailadresse

Er der nogle som ved hvordan man kan automatisk kan få et userName tilsendt ud fra at man indtaster sin email i et felt og trykker send.

Nedenstående er nogenludnde hvordan sqllen skal se ud, men kan ikke lige finde ud af hvordan jeg laver den rigtigt. Kunne være fedt hvis du har et helt script hvor sqllen bare kan sættes ind.

SELECT
hent userName
fra users
hvor
userEmail i tabellen userProfile = inputmail i feltet
og hvor userId er det samme i begge tabeller
Avatar billede thesurfer Nybegynder
10. december 2006 - 14:11 #1
Prøv med:

"select username from users where userProfil.userEmail = '" . $POST['brugernavn'] . "' and users.userID = userProfile.userId"

Det kan godt være, at denne del er forkert:  userProfil.userEmail = '" . $POST['brugernavn'] . "'

Dvs, PHP-aflæs-input-feltet-delen.. :-)
Avatar billede thesurfer Nybegynder
10. december 2006 - 14:12 #2
PS: I $POST['brugernavn'] skal "brugernavn" erstattes af navnet på email-feltet i din form.. :-)
Avatar billede JJ77 Juniormester
10. december 2006 - 14:34 #3
forstår ikke lige userProfil = brugernavn.. den skulle jo gerne sende userName til den email som bliver indtastet.. altså den skal søge efter den indtastede email i databasen og så sende userName til netop denne email hvis den eksisterer..
Avatar billede thesurfer Nybegynder
10. december 2006 - 14:36 #4
Rettelsen er i 10/12-2006 14:12:00 :-)

Det plejer at være brugernavn, så det var det jeg skrev..

Men så kom jeg i tanke om, at det var emailen der skulle sammenlignes, og derfor skrev jeg 10/12-2006 14:12:00..
Avatar billede JJ77 Juniormester
10. december 2006 - 14:37 #5
ved ikke om nedenstående kan hjælpe med at vise hvor jeg vil hen. men sqllen er garanteret ikke helt rigtig.

select userName from users
Where
userEmail.userProfile = $inputfelt_E-mail
And
userProfile.userId = users.userId
Avatar billede JJ77 Juniormester
10. december 2006 - 14:38 #6
nååå..
Avatar billede JJ77 Juniormester
10. december 2006 - 14:39 #7
men så langt så godt... så mangler der jo bare selve scriptet som sender en email med brugernavnet til den indtastede e-mail.. hvis den altså eksisterer..
Avatar billede thesurfer Nybegynder
10. december 2006 - 14:46 #8
Det er et ganske almindeligt mail script..

Eksempel: http://email.about.com/cs/phpemailtips/qt/et031202.htm

Du er velkommen til at skrive, hvis du ikke helt kan hitte ud af det.. :-)

- Jeg smider lige et svar, da jeg har lidt travlt, og har gang i et par spørgsmål.. Men skriv alligevel!!
Avatar billede JJ77 Juniormester
10. december 2006 - 14:48 #9
Jeg må sq indrømme at jeg har lidt mere brug for hjælp :-)

Jeg havde tænkt mig at sriptet og formen hvor man kan indtaste sin email skulle være på samme side..
Avatar billede thesurfer Nybegynder
10. december 2006 - 14:57 #10
Så skal siden bare reloades, og koden være på samme side..

Eksempel:

if (isset($_POST['navnet-på-email-feltet'])) {

// koden der skal afvikles, når man submitter formen..
sql-delen-der-siger "select ..."

$to = "email-adressen-indsættes-her";
$subject = "Her er dit brugernavn";
$body = "Hejsa. Du havde vist glemt dit brugernavn. Her er det: " . $brugernavn;

if (mail($to, $subject, $body)) {
  echo("<p>Dit brugernavn er nu sendt til din email adresse!</p>");
} else {
  echo("<p>Der opstod en fejl, og mailen blev ikke sendt.. skriv til administratoren ang dette problem.</p>");
}


}

Husk at "$brugernavn" hentes fra databasen..
Avatar billede JJ77 Juniormester
10. december 2006 - 15:15 #11
Nu er jeg kommet frem til nedenstående.. men der mangler nok lidt / en del...
Forresten: skal der ikke altid være en afsender e-mail på? eller er det lige meget...

<form action="glemtBrugernavn.php" method="post">
<table width="540" border="0" cellspacing="2" cellpadding="0">
    <tr>
    <td>
               
            </td>
    </tr>
   
   
    <tr>
        <td><input type="text" name="e-mail" size="24" border="0">  <input type="submit" name="submit" value="Send brugernavn" border="0"></td>
    </tr>
   
        </table>
            </form>
       
<?PHP
if (isset($_POST['navnet-på-email-feltet'])) {

// koden der skal afvikles, når man submitter formen..

$query = "select userName from users where userProfile.userEmail = '" . $POST['e-mail'] . "' and users.userId = userProfile.userId";

$to = "email-adressen-indsættes-her";
$subject = "Her er dit brugernavn";
$body = "Hejsa. Du havde vist glemt dit brugernavn. Her er det: " . $brugernavn;

if (mail($to, $subject, $body)) {
  echo("<p>Dit brugernavn er nu sendt til din email adresse!</p>");
} else {
  echo("<p>Der opstod en fejl, og mailen blev ikke sendt.. skriv til administratoren ang dette problem.</p>");
}


}



?>
Avatar billede thesurfer Nybegynder
10. december 2006 - 15:21 #12
Hvor meget ved du egentligt om brug af databaser?

Du skal jo afvikle/execute $query, så du får resultatet retur..

Eksempel: $brugernavn = mysql_query($query) OR die(mysql_error());
Avatar billede JJ77 Juniormester
10. december 2006 - 15:24 #13
er dette bedre? men jeg ville jo nok lave det ordentligt hvis jeg kunne..

<?PHP
if (isset($_POST['navnet-på-email-feltet'])) {

// koden der skal afvikles, når man submitter formen..

$brugernavn = mysql_query ("select userName from users where userProfile.userEmail = '" . $POST['e-mail'] . "' and users.userId = userProfile.userId");

$to = "email-adressen-indsættes-her";
$subject = "Her er dit brugernavn";
$body = "Hejsa. Du havde vist glemt dit brugernavn. Her er det: " . $brugernavn;

if (mail($to, $subject, $body)) {
  echo("<p>Dit brugernavn er nu sendt til din email adresse!</p>");
} else {
  echo("<p>Der opstod en fejl, og mailen blev ikke sendt.. skriv til administratoren ang dette problem.</p>");
}

}
?>
Avatar billede thesurfer Nybegynder
10. december 2006 - 15:29 #14
Gammel: if (isset($_POST['navnet-på-email-feltet'])) {
Ny: if (isset($_POST['e-mail'])) {

Gammel: $to = "email-adressen-indsættes-her";
Ny: $to = $_POST['e-mail'];

Se om det ikke virker nu..
Avatar billede JJ77 Juniormester
10. december 2006 - 15:44 #15
der kommer nu en e-mail.. så det er bare super.. der kommer bare intet brugernavn..
Avatar billede thesurfer Nybegynder
10. december 2006 - 15:49 #16
Tilføj "echo $brugernavn" efter din sql-afvikling, så det ser sådan ud:

$brugernavn = mysql_query ("select userName from users where userProfile.userEmail = '" . $POST['e-mail'] . "' and users.userId = userProfile.userId");

echo $brugernavn

Resten af koden er den samme..
Avatar billede thesurfer Nybegynder
10. december 2006 - 15:50 #17
Rettelse:

Tilføj "echo $brugernavn" efter din sql-afvikling, så det ser sådan ud:

$brugernavn = mysql_query ("select userName from users where userProfile.userEmail = '" . $POST['e-mail'] . "' and users.userId = userProfile.userId");

echo "Brugernavnet er: *" . $brugernavn . "*<br>"

Resten af koden er den samme..

Hvad skriver den så?
Avatar billede thesurfer Nybegynder
10. december 2006 - 15:52 #18
Endnu en rettelse... :-)


Tilføj "echo $brugernavn" efter din sql-afvikling, så det ser sådan ud:

$brugernavn = mysql_query ("select userName from users where userProfile.userEmail = '" . $POST['e-mail'] . "' and users.userId = userProfile.userId");

echo "Brugernavnet er: *" . $brugernavn . "*<br>";

Resten af koden er den samme..

Hvad skriver den så?
Avatar billede JJ77 Juniormester
10. december 2006 - 15:55 #19
Resource id #3
Avatar billede JJ77 Juniormester
10. december 2006 - 15:57 #20
men jeg har prøvet at køre den direkte i databasen hvor sqllen så således ud.. og der virkede det..

select userName from users, userProfile where userProfile.userEmail = 'min@email.dk' and users.userId = userProfile.userId
Avatar billede thesurfer Nybegynder
10. december 2006 - 15:57 #21
Hmmm.. det var et fuldstændigt uforventet svar.. :-)

Jeg havde regnet med "Brugernavnet er: *hans*" hvis brugernavnet var "hans"..
Avatar billede thesurfer Nybegynder
10. december 2006 - 15:58 #22
Aha..
Så skal SQL sætningen bare rettes til:

$brugernavn = mysql_query ("select userName from users, userProfile where userProfile.userEmail = '" . $POST['e-mail'] . "' and users.userId = userProfile.userId");

Prøv igen..
Avatar billede JJ77 Juniormester
10. december 2006 - 16:03 #23
brugernavnet man få tilsendt er stadig: Resource id #3

Men skal der ikke være en afsendere-mail i scriptet som tilhører webhotellet? er der ikke noget med at det skal til for at sikre mod udsendelse af spammails?
Avatar billede JJ77 Juniormester
10. december 2006 - 16:04 #24
men så kunne man vel heller ingengang få den mail som jeg gør nu.. hmmm
Avatar billede thesurfer Nybegynder
10. december 2006 - 16:07 #25
Hvem står som afsender på den mail du har modtaget? Erstat evt "@et-eller-andet.dk" med "@***"..
Avatar billede thesurfer Nybegynder
10. december 2006 - 16:08 #26
Jeg kan ikke helt se hvorfor den ikke returnerer et brugernavn:

$brugernavn = mysql_query ("select userName from users, userProfile where userProfile.userEmail = '" . $POST['e-mail'] . "' and users.userId = userProfile.userId");

Måske mangler den forbindelsen?
Avatar billede thesurfer Nybegynder
10. december 2006 - 16:12 #27
Opretter du overhovedet forbindelsen? Det må du vel gøre..

Det ligner: http://www.phpfreaks.com/phpref/4.php
Avatar billede JJ77 Juniormester
10. december 2006 - 16:17 #28
den opretter forbindelse.. det er ikke der den er gal
Avatar billede JJ77 Juniormester
10. december 2006 - 16:19 #29
jeg har prøvet at fjerne det der som mailer så den kun eccorer.. og nu skriver den bare Ressource 4
Avatar billede thesurfer Nybegynder
10. december 2006 - 16:19 #30
Ahh...

Jeg tror at det skal være sådan:

$resultat = mysql_query ("select userName from users, userProfile where userProfile.userEmail = '" . $POST['e-mail'] . "' and users.userId = userProfile.userId");
$brugernavn = mysql_fetch_row($resultat);
Avatar billede thesurfer Nybegynder
10. december 2006 - 16:20 #31
Avatar billede JJ77 Juniormester
10. december 2006 - 16:30 #32
nu skriver den ikke de ressource haløj.. nu viser den bare ** uden brugernavnet imellem
Avatar billede JJ77 Juniormester
10. december 2006 - 16:34 #33
det ser således ud nu:

if (isset($_POST['e-mail'])) {

// koden der skal afvikles, når man submitter formen..

$resultat = mysql_query ("select userName from users, userProfile where userProfile.userEmail = '" . $POST['e-mail'] . "' and users.userId = userProfile.userId");

$brugernavn = mysql_fetch_row($resultat);

echo "Brugernavnet er: *" . $brugernavn . "*<br>";
Avatar billede thesurfer Nybegynder
10. december 2006 - 16:36 #34
Hmmm.. Så prøver vi lige mysql_fetch_assoc..

$resultat = mysql_query ("select userName from users, userProfile where userProfile.userEmail = '" . $POST['e-mail'] . "' and users.userId = userProfile.userId");

$rs = mysql_fetch_assoc($resultat);

$brugernavn = $rs['brugernavn'];

echo "Brugernavnet er: *" . $brugernavn . "*<br>";

Hvad skriver den så?
Avatar billede JJ77 Juniormester
10. december 2006 - 16:45 #35
stadig blank
Avatar billede thesurfer Nybegynder
10. december 2006 - 16:50 #36
Er du sikker på at du skriver en email adresse, som findes i databasen?
Hvis den ikke findes, vil $brugernavn jo være tom..

Dobbeltcheck lige email adressen i databasen..
Avatar billede JJ77 Juniormester
10. december 2006 - 16:54 #37
er sikker..
Avatar billede JJ77 Juniormester
10. december 2006 - 16:55 #38
har endda prøvet at skifte where userProfile.userEmail = 'min@mail.com' and users.use
Avatar billede thesurfer Nybegynder
10. december 2006 - 17:07 #39
Hmm.. Jeg har lige lavet tabellerne users og userProfile, med de rigtige kolonner og data..

Jeg har prøvet denne sql sætning:

select userName from users, userProfile where userProfile.userEmail = 'my@email.com' and users.userId = userProfile.userId

Og den virker fint i MySQL Query Browser.

Problemet ligger i PHP-koden, men jeg forstår det ikke helt..

Jeg har kopieret kode fra nettet, som folk siger virker, så det burde virke..
Avatar billede JJ77 Juniormester
10. december 2006 - 17:11 #40
ja det er lidt mystisk.. tror også det er i php´en den er gal..
Avatar billede JJ77 Juniormester
10. december 2006 - 17:17 #41
her er hele koden.. er det mons tro noget med overførslen af variablen fra tekstfeltet?

<html>
<form action="glemtBrugernavn.php" method="post">
<table width="540" border="0" cellspacing="2" cellpadding="0">
    <tr>
    <td>
                <h1>Glem brugernavn</h1>
                <br>
                </p>
            </td>
    </tr>
   
   
    <tr>
        <td><input type="text" name="e-mail" size="24" border="0">  <input type="submit" name="submit" value="Send brugernavn" border="0"></td>
    </tr>
   
        </table>
            </form>
       
<?PHP
require_once('common.php');

if (isset($_POST['e-mail'])) {

// koden der skal afvikles, når man submitter formen..

$query = mysql_query ("select userName from users, userProfile where userProfile.userEmail = '" . $POST['e-mail'] . "' and users.userId = userProfile.userId");

$brugernavn = $query;

echo "Brugernavnet er: *" . $brugernavn . "*<br>";

}
?>
</html>
Avatar billede thesurfer Nybegynder
10. december 2006 - 17:17 #42
Jeg har desværre ikke flere forslag lige nu.
Avatar billede thesurfer Nybegynder
10. december 2006 - 17:17 #43
Hvad mener du med "er det mons tro noget med overførslen af variablen fra tekstfeltet?"?
Avatar billede JJ77 Juniormester
10. december 2006 - 17:22 #44
man skriver jo sin email i et tekstfelt.. denne skulle jo gerne hentes af koden så den kan finde userName som passer til emailen..
Avatar billede JJ77 Juniormester
10. december 2006 - 17:22 #45
og det har vel ikke noget af gøre med at submin hedder submit.. vel?
Avatar billede thesurfer Nybegynder
10. december 2006 - 17:23 #46
Endnu en test.. denne returnerer antallet af poster den finder:

$query = mysql_query ("select userName from users, userProfile where userProfile.userEmail = '" . $POST['e-mail'] . "' and users.userId = userProfile.userId");

echo "antallet af poster: *" . mysql_num_rows($query) . "*<br>";
Avatar billede thesurfer Nybegynder
10. december 2006 - 17:24 #47
Det burde ikke have noget med submit knappe at gøre..

Prøv f.eks. det her:

$query = mysql_query ("select userName from users, userProfile where userProfile.userEmail = 'min@email.dk' and users.userId = userProfile.userId");

Jeg går ud fra, at "min@email.dk" er en du har i databasen..
Avatar billede thesurfer Nybegynder
10. december 2006 - 17:26 #48
Doh!

Det skal jo være "$_POST['e-mail']" og ikke "$POST['e-mail']"!!

Der mangler et "_" i mellem "$" og "POST"...! :-)
Avatar billede JJ77 Juniormester
10. december 2006 - 17:30 #49
hehe.. det er for griner... så virker det sku.. heheheheh.. hold da helt @@£$€$€£$ hvor kan et lille _ lave meget ravage... lol...

takker mange gange.. og nu skal du vist også ha dine point.. :-)
Avatar billede thesurfer Nybegynder
10. december 2006 - 17:31 #50
Damn.. det var da godt nok irriterende.. :-)
Den burde jo have vidst at der skulle "_" til.. :-)

Jeg takker for points.. held og lykke i fremtiden.. :-)
Avatar billede JJ77 Juniormester
10. december 2006 - 17:37 #51
takker.. :-) og i lige måde..
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