Avatar billede sukos Juniormester
04. februar 2004 - 09:26 Der er 10 kommentarer og
1 løsning

To query's til en

Flg. to kommenterede query's vil jeg gerne ha' i en.
Men flg. kode siger
Unknown table 'brugernavn' in field list

Hvad er fejlen?

<?php
//$navne = mysql_query("SELECT `brugernavn`, `email` FROM `sh_brugere`") or die (mysql_error());
//$navne = mysql_query("SELECT `konnavn`, `email` FROM `konusers`") or die (mysql_error());


$navne = mysql_query("SELECT brugernavn.konnavn as user, email.email as mail FROM sh_brugere, konusers") or die (mysql_error());

while($tjek = mysql_fetch_object($navne)) {
echo $tjek->user ." - ". $tjek->mail ."<br>\n";
}

mysql_free_result($navne);

?>
Avatar billede tuctoh Nybegynder
04. februar 2004 - 09:30 #1
$navne = mysql_query("SELECT brugernavn.sh_brugere as user, email.konusers as mail FROM sh_brugere, konusers") or die (mysql_error());

tror du byttede rundt på kolonnenavnene
Avatar billede sukos Juniormester
04. februar 2004 - 09:36 #2
Får samme fejl besked.
Avatar billede sukos Juniormester
04. februar 2004 - 09:37 #3
iøvrigt, din query, ville den ikke kun hente brugernavn fra sh_brugere og email fra konusers?
Avatar billede limemedia Nybegynder
04. februar 2004 - 09:47 #4
$navne = mysql_query("SELECT sh_brugere.brugernavn, sh_brugere.konnavn as user, konusers.email as mail FROM sh_brugere, konusers") or die (mysql_error());

du angav forkerte tabelnavne foran feltnavne
Avatar billede sukos Juniormester
04. februar 2004 - 09:51 #5
Ja, nu prøvede jeg lige med denne:

$navne = mysql_query("SELECT konusers.konnavn, sh_brugere.brugernavn as user, sh_brugere.email, konusers.email as mail FROM sh_brugere, konusers") or die (mysql_error());


Men den henter kun brugernavne fra sh_brugere, ikke konnavn fra konusers
Og det er kun email fra konusers som bliver vist.
+ hvert brugernavn vises 4 gange, med konusers email (4 rows i konusers)
Avatar billede limemedia Nybegynder
04. februar 2004 - 09:57 #6
vi prøver igen, omformulerer/formaterer lidt for overblikkets skyld

$navne = mysql_query("
  SELECT b.brugernavn, b.email AS email1, k.konnavn, k.email AS email2
  FROM sh_brugere AS b, konusers AS k
  WHERE ...
") or die (mysql_error());

Du mangler en where clause, hvor du forklarer relationen mellem sh_brugere og konusers - dén kunne være fx b.id=k.id hvis id i de rækker der hører sammen, er ens

Hvis der ikke er sammenhæng mellem de to tabeller, udover du gerne vil udskrive værdierne, skal du som før anvende to queries
Avatar billede sukos Juniormester
04. februar 2004 - 09:59 #7
aha, vidste jeg ikke.
Prøver lige.
Skal bruges til at tjekke om et navn eller email er i brug.
Avatar billede sukos Juniormester
04. februar 2004 - 10:43 #8
nåh, nu er den der næsten. (er egentlig nemmere at bruge to query's)
Men der er en bøf i min where
Jeg vil jo gerne adskille navn og email.
Men flg. giver besked om at både navn og email er optaget, hvis blot den ene er det.

<?php
include($filepath ."konvars.php"); // Har functionen errors()

if(isset($_POST["ny"])) {

$navne = mysql_query("SELECT sh.brugernavn as shuser, sh.email as shmail, kon.konnavn as konn, kon.email konm FROM sh_brugere as sh, konusers as kon WHERE sh.brugernavn = '". $_POST["ny"] ."' OR kon.konnavn = '". $_POST["ny"] ."' OR sh.email = '". $_POST["mailadr"] ."' OR kon.email = '". $_POST["mailadr"] ."'") or die (mysql_error());

while($tjek = mysql_fetch_object($navne)) {
    if($tjek->shuser = $_POST["ny"] || $tjek->konn = $_POST["ny"]){
    $_SESSION["optaget"][] = "Navn optaget";
    }
    if($tjek->shmail = $_POST["mailadr"] || $tjek->konm = $_POST["mailadr"]){
    $_SESSION["optaget"][] = "Email optaget";
    }

    if(isset($_SESSION["optaget"])) {
    header("Location:". $_SERVER["PHP_SELF"] ."");
    exit();
    }
}


mysql_free_result($navne);
}
?>

<form action="to.php" method="post">
<input type="text" name="ny"> <input type="text" name="mailadr"> <input type="submit">
</form>
<?php
errors("optaget");
?>
Avatar billede sukos Juniormester
04. februar 2004 - 11:25 #9
Du får, lars-jensen, for at lære mig noget om query's
Vælger dog at bruge det jeg allerede havde lavet, med to query's
Avatar billede Slettet bruger
05. februar 2004 - 00:06 #10
Med en nyere MySQL (fra version 4) kan du lave noget i denne stil:

SELECT `brugernavn`, `email` FROM `sh_brugere`
UNION
SELECT `konnavn`, `email` FROM `konusers`

Resultatet vil så komme med kolonnenavne fra den første SELECT. Se http://www.mysql.com/doc/en/UNION.html for flere oplysninger.
Avatar billede sukos Juniormester
05. februar 2004 - 12:28 #11
Det vil jeg da lige prøve af når jeg kommer hjem!
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
Computerworld tilbyder specialiserede kurser i database-management

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