PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : db_tabele1 db_table2



localhost
27-03-2003, 03:25
Ich hab in der db_news tabele den id wert.
Und in der db_news_kommen einen nid wert,
wie kann ich die anzahl die übereinstimenden anzeigen lassen also die anzal der übereinstimungen ?


$result = SELECT news.id, COUNT(*) AS anzahl FROM news INNER JOIN news_kommen ON news.id = news_kommen.nid GROUP BY news.id
$row = mysql_fetch_object($result);
echo $row->ID;


so irgendwie oder ??

mehlvogel
27-03-2003, 07:30
Ich hätte jetzt gesagt, das das so geht, hast du es schonmal ausprobiert?

Ich benutze anstatt INNER JOIN immer LEFT JOIN, aber ich glaub das spielt keine rolle.

elrond
27-03-2003, 08:57
$result = "SELECT news.id, COUNT(*) AS anzahl FROM news INNER JOIN news_kommen ON news.id = news_kommen.nid GROUP BY news.id";

so könnte es gehen... oder

$result = "SELECT news.id, COUNT(*) AS anzahl FROM news, news_kommen where news.id = news_kommen.nid GROUP BY news.id";

localhost
27-03-2003, 09:25
$result = "SELECT news.id, COUNT(*) AS anzahl FROM news, news_kommen where news.id = news_kommen.nid GROUP BY news.id";
$row = mysql_fetch_object($result);
echo $row->ID;


also jetzt sagt der es wer ein fehler in der weziet zeile also

$row = mysql_fetch_object($result);

also in den news db_ ist eine n_id
und bei den kommtaren eine id und eine giebt es eine id und eine nid ich muss wissen wie viel mit der nid bei den kommtaren da sind also die n_id ist 3 und wie viel jetzt bei den kommtaren nid 3 haben.

elrond
27-03-2003, 09:44
wie sieht der fehler aus ? kommt er von PHP oder der DB ?

localhost
27-03-2003, 09:49
Warning: Supplied argument is not a valid MySQL result resource in /temp/www/news.php on line 67

66 $result = "SELECT news.n_id, COUNT(*) AS anzahl FROM news, news_kommen where news.n_id = news_kommen.nid GROUP BY news.n_id";
67 $row = mysql_fetch_object($result);
68 echo $row->ID;

jwebworks
27-03-2003, 10:51
Ich glaube, ich habe schonmal was zum
Lesen von Anleitungen geschrieben.
Mensch kauf Dir doch ein Buch oder suche
im Internet. Sonst lernst Du nie was.

Bei google gesucht nach:


php datenbank abfrage

Das erste Ergebnis ist genau so, dass
Du etwas damit anfangen können solltest.

http://www.uni-giessen.de/~g004/php/mysqlfunktionen

Vergleiche mal.

cu, stop.h

localhost
27-03-2003, 14:05
aber nirgenswo steht wie ich aus zwei datenbanken zwei werte verkleichen kann und die anzal der ergebenisse dastellen kann?
Das muss doch jedemd wissen

Gaert
27-03-2003, 14:57
Hallo!

Mooment... erstmal Begriffsdefinition:

Willst du zwei Werte aus zwei Tabellen aus einer Datenbank vergleichen und die Anzahl der überinstimmenden ausgeben, dann ist der Ansatz aus dem ersten Post der richtige.
Wenn du zwei Tabellen aus zwei verschiedenen Datenbanken vergleichen, dann hast du Pech, das geht bei MySQL nämlich nicht!
Dann musst du auf beide Datenbanken nacheinander connecten auf die Tabellen einen Select machen und die Ergebnisse mit PHP Code vergleichen.

Wie immer, das alte Problem: niemand weiss genau was du eigentlich willst.

elrond
27-03-2003, 14:59
leider daneben:

select feld from db1.tab, db2.tab where db1.id=db2.id

funxt..... ;)

mehlvogel
27-03-2003, 15:01
Der Query ist genau richtig!

Das Problem ist ganz einfach das du ihn überhaupt nicht ausführst:



$query = "SELECT ... ";
$result = mysql_query($query);
$row = mysql_fetch_object($result);


So sollte es ohne weiteres Funktionieren. Natürlich musst du vorher ne Verbindung herstellen. Jwebworks ging es vielmehr um das Fehlen des Verständnisses zur Programmierung.

localhost
27-03-2003, 15:11
$result = "SELECT count(*) as count FROM news, news_kommen WHERE news.n_id = news_kommen.nid";
$result = mysql_query($query);
$row = print_r($row);
also so gehtz auch nicht
cih poste mal die ganze page


<?
include("config.inc.php");
$timestamp = time();
function getmicrotime(){
list($usec, $sec) = explode(" ",microtime());
return ((float)$usec + (float)$sec);
}
$time_start = getmicrotime();
for ($i=0; $i < 10; $i++){
}
?>
<HTML>
<HEAD>

<? include("head.inc.php"); ?>

</HEAD>
<body leftmargin=0 rightmargin=0 topmargin=0 bottommargin=0>

<a name="top"></a><br>

<? include("head.menu.inc.php"); ?>

<br>

<?

echo "<table width=750 border=0 align=center cellpadding=1 cellspacing=1 bgcolor=000000>";
echo "<tr>";
echo "<td bgcolor=FFFFFF colspan=2><B>Die letzen 10 News:</b></td>";
echo "</tr>";
echo "</table>";

echo "<br>";

$abfrage = "SELECT * FROM news ORDER BY n_id DESC LIMIT 10";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
nl2br($code);

echo "<table width=750 border=0 align=center cellpadding=1 cellspacing=1 bgcolor=000000>";


echo "<tr>";
echo "<td bgcolor=FFFFFF colspan=3>";
echo "<center><b>"; echo $row->titel;
echo "</td>";
echo "</tr>";


echo "<tr>";
echo "<td bgcolor=FFFFFF colspan=3>";
echo $row->blabla;
echo "</td>";
echo "</tr>";

echo "<tr>";
echo "<td bgcolor=FFFFFF width=30>";
echo "<font color=E46600> #$row->n_id </font>";
echo "</td>";

echo "<td bgcolor=FFFFFF width=720>";
echo "_<a href=comments.php?id=$row->n_id>comments [ ";

$query = "SELECT count(*) as count FROM news, news_kommen WHERE news.n_id = news_kommen.nid";
$result = mysql_query($query);
$row = mysql_fetch_object($result);

echo " ]</a> | by ";
echo "<a href=mailto:$row->mail>$row->autor</a> @ "; $time = date("d.m.Y - H:i",$row->zeit); echo $time," Uhr";
echo "</td>";
echo "</tr>";


echo "</table><br>";
}
?>

<? include("bottom.inc.php"); ?>

<br>

</body>
</HTML>

mehlvogel
27-03-2003, 15:28
1.) Lies was ich geschrieben hab.
2.) Schau was du eingegeben hast.
[3.) Tipp: Ich hab nie geschrieben print_r ]

Gaert
27-03-2003, 15:32
@Elrond... könntest du das mal als komplettes beispiel mit connect, selectdb etc. bringen?

elrond
27-03-2003, 15:49
@Gaert

$sql="select * from $auth_db.sysuser u,usergroupass ua where u.userid=ua.userid and u.statusid=1 and upper(u.username)='".strtoupper($un)."' and upper(u.userpasswd)='".strtoupper($up)."'";

$rs_arr=$db->select($sql);

Das ist das statement mit dem ich die Authentifizierung in einer meiner Anwendungen mache.

in $auth_db seteht der name der DB die User und Passwords usw. enthält. mein normales connect geht auf eine andere db
die tabelle "sysuser" liegt in der $authdb,
die tabelle usergroupass in der aktuellen db...

Viel mehr ist dazu nicht zu sehen. aber due kannst das referenzieren in eine andere db auf der shell ausprobieren.

localhost
27-03-2003, 16:05
$query = "SELECT count(*) as count FROM news, news_kommen WHERE news.n_id = news_kommen.nid";
$result = mysql_query($query);
$row = mysql_fetch_object($result);

da kommt keine ausgaben
ich hab das oben auch geändert

mehlvogel
28-03-2003, 12:56
Bitte

Denk darüber nach: "Der Rechner macht das, (und nur das) was DU ihm sagst"

Steht in dem Quelltext den du gerade gepostet hast drin, das er was ausgeben soll?

Zur Not schau hier zu den Funktionen:

mysql_query() (http://de3.php.net/mysql_query)
mysql_fetch_object() (http://de3.php.net/mysql_fetch_object)

Und lies dir die Seite durch! Dann überlege, was du ausgeben willst, und dann gib es aus. Weiterhin lies DAS (http://de3.php.net/manual/de/), dabei ist insbesondere für dich interessant: DAS HIER (http://de3.php.net/manual/de/langref.php) Lies dir jedes Kapitel durch, lies es, lies es solange bis du es verstanden hast. Dann fang mit kleinen Scripts ganz von vorne an. Lies DAS HIER (http://de3.php.net/manual/de/features.php) am besten auch gleich mit. BITTE.

localhost
28-03-2003, 16:01
also das ging auch nicht die im #php habe das mal soweit verbesser aber das geht auch nciht.



<?
include("config.inc.php");
$timestamp = time();
function getmicrotime(){
list($usec, $sec) = explode(" ",microtime());
return ((float)$usec + (float)$sec);
}
$time_start = getmicrotime();
for ($i=0; $i < 10; $i++){
}
?>
<HTML>
<HEAD>

<? include("head.inc.php"); ?>

</HEAD>
<body leftmargin=0 rightmargin=0 topmargin=0 bottommargin=0>

<a name="top"></a><br>

<? include("head.menu.inc.php"); ?>

<br>

<?

echo "<table width=750 border=0 align=center cellpadding=1 cellspacing=1 bgcolor=000000>";
echo "<tr>";
echo "<td bgcolor=FFFFFF colspan=2><B>Die letzen 10 News:</b></td>";
echo "</tr>";
echo "</table>";

echo "<br>";

$abfrage = "SELECT * FROM news ORDER BY n_id DESC LIMIT 10";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
nl2br($code);

echo "<table width=750 border=0 align=center cellpadding=1 cellspacing=1 bgcolor=000000>";


echo "<tr>";
echo "<td bgcolor=FFFFFF colspan=3>";
echo "<center><b>"; echo $row->titel;
echo "</td>";
echo "</tr>";


echo "<tr>";
echo "<td bgcolor=FFFFFF colspan=3>";
echo $row->blabla;
echo "</td>";
echo "</tr>";

echo "<tr>";
echo "<td bgcolor=FFFFFF width=30>";
echo "<font color=E46600> #$row->n_id </font>";
echo "</td>";

echo "<td bgcolor=FFFFFF width=720>";

$result = mysql_query("SELECT count(*) as num FROM news, news_kommen WHERE news.n_id = news_kommen.nid") or die('mySQL ERROR (' . __LINE__ . '): '.mysql_error());
$anzahl = mysql_result($result,0,"num");
{
echo " <a href=comments.php?id=$row->n_id>comments [ ";

echo " ]</a> | by ";
}

echo "<a href=mailto:$row->mail>$row->autor</a> @ "; $time = date("d.m.Y - H:i",$row->zeit); echo $time," Uhr";
echo "</td>";
echo "</tr>";


echo "</table><br>";
}
?>

<? include("bottom.inc.php"); ?>

<br>

</body>
</HTML>

mehlvogel
28-03-2003, 19:20
Was willst du jetzt mit diesem Posting?

(Und was sind "die aus #php" ? )

localhost
28-03-2003, 22:27
egal ich versuche jemand zu finden der mir sagen kann wie das ich dei kommentare darein bekomme.

mehlvogel
29-03-2003, 12:47
Lad dir nen Gästebuch runter, es gibt tausende von Leuten die welche geschrieben haben...

localhost
29-03-2003, 14:04
ich hab auch eins gemacht ich hab auch ein news system gemacht und eni forum und ein gbook aber das da geht noch immer nciht.

Ich hab die news und dazu kommentare wie kann ich jetzt anzeigen lassen wie viel kommentare die news hatt.
oder der gbook eindrag.,.,
oder das forum team .,.,