| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |
|

25-08-2011, 14:10
|
|
AnMa
Registrierter Benutzer
|
|
Registriert seit: Aug 2011
Beiträge: 21
|
|
Auslesen von Daten aus der Datenbank
Hallo,
ich weiß ich habe mich gerade erst angemeldet und dann kommt gleich eine vermutlich simple Frage, aber ich habe jetzt so lange nach eine Lösung im Netz gesucht und rumexperimentiert, dass ich mich doch dazu durchgerungen habe hier zu posten.
Zu meinem Problem:
Eigentlich sollte das eine simple Abfrage sein, aber ich habe irgendwo einen Denkfehler den ich nicht lösen kann.
Im Originalscript wird mit:
PHP-Code:
$user_vote=$SQL->fetch_array($SQL->query("SELECT COUNT(vote_rated_userid) FROM ".pkSQLTAB_POLL_COUNT." WHERE vote_rated_cat='forum' AND vote_rated_contid='".$threadid."'"));
Die anzahl der user abgefragt die bereits abgestimmt haben.
Ich wollte diese nun um die Anzeige der Namen der User erweitern die bereits abgestimmt haben. Dazu habe ich folgende Zeile eingegeben:
PHP-Code:
$user_vote_id=$SQL->fetch_array($SQL->query("SELECT (vote_rated_userid) FROM ".pkSQLTAB_POLL_COUNT." WHERE vote_rated_cat='forum' AND vote_rated_contid='".$threadid."'"));
Das reicht zwar noch nicht, dass ich die Namen ausgegeben bekomme, aber es müßten doch zumindest die User-ID's angezeigt werden?
Wenn ich aber auf der HP dann die $user_vote_id ausgeben lassen will, bekomme ich nur "ARRAY"
Was mach ich bitte falsch ?
Vielen lieben Dank
Anna
|

25-08-2011, 14:39
|
 |
ApoY2k
Registrierter Benutzer
|
|
Registriert seit: Nov 2006
Beiträge: 286
|
|
Du fragst ja auch ein Array ab. Bei deiner Abfrage kommen viele Datensätze zurück, die kannst du nicht einfach mit "echo" ausgeben lassen. Dazu musst du einen foreach/for-loop ansetzen.
Lass dir das Array mit var_dump() ausgeben, dann siehst du, was drinsteht.
__________________
This is what happens when an unstoppable force meets an immovable object.
|

25-08-2011, 14:50
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Hallo,
echo ist nur für die Ausgabe von Strings und numerischen Werten geeignet. Wenn du dir zu Debugzwecken und Tests den Inhalt einer Variablen ansehen willst, musst du print_r($var) oder noch besser var_dump($var) verwenden, wobei du $var durch den entsprechenden Variablennamen ersetzen musst.
Im zweiten SQL-Statement gehören die Klammern um den Spaltennamen nicht hin, die gehören im ersten Statement zu COUNT(), welches im zweiten ja nicht mehr verwendet wird.
Gruß,
Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

25-08-2011, 15:11
|
|
AnMa
Registrierter Benutzer
|
|
Registriert seit: Aug 2011
Beiträge: 21
|
|
OK, das ich das so mit dem Array nicht ausgebenkann ist mir klar.
Wenn ich das allerdings richtig sehe werden die Daten bei mir nicht mit "echo" ausgegeben, sondern ein html-document.
HTML-Code:
<tr>
<td colspan="2" class="left" align="left">
<font colour="FFFFFF">Es haben bereits <i>$user_vote[0]</i> User abgestimmt</font></td>
<td colspan="2" class="left" align="right">
<font colour="FFFFFF">Stimmen gesamt: <i>$votetotal[0]</i></font></td>
</tr>
<tr>
<td colspan="2" class="left" align="left">
<font colour="FFFFFF">Abgestimmt haben: <i>$user_vote_id</i></font></td>
</tr>
Wie binde ich also "var_dump($var)" in diese html ein?
Setze ich da dann für diesen kurzen Bereich auch
Lieben Gruß und schonmal vielen Dank für die ersten INFOS
Anna
|

25-08-2011, 15:13
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Ja, da musst du auch die PHP-Tags (<?php … ?>) benutzen, sonst wird es nicht von PHP interpretiert, sondern unangetastet durchgeschleust und dann steht in deinem Dokument eben auch nur „$user_vote[0]“.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

25-08-2011, 15:28
|
|
AnMa
Registrierter Benutzer
|
|
Registriert seit: Aug 2011
Beiträge: 21
|
|
Gut, dan lag ich da ja schon mal richtig
Folgendes habe ich nun in meine HTML eingefügt, bekomme aber überhaupt keine Ausgabe.
HTML-Code:
<tr>
<td colspan="2" class="left" align="left">
<font colour="FFFFFF">Abgestimmt haben: <i><?php var_dump($user_vote_id); ?></i></font></td>
</tr>
Wenn ich mir aber zu Testzwecken eine php-Datei mit dem Inhalt
PHP-Code:
<?php var_dump($user_vote_id); ?>
auf der Domain anlege und aufrufe, gibt sie mir den Wert "NULL" aus.
|

25-08-2011, 15:33
|
 |
ApoY2k
Registrierter Benutzer
|
|
Registriert seit: Nov 2006
Beiträge: 286
|
|
Dann stimmt wahrscheinlich mit der Abfrage was nicht, oder mit den Klassen/Methoden die du da verwendest.
__________________
This is what happens when an unstoppable force meets an immovable object.
|

25-08-2011, 17:07
|
|
AnMa
Registrierter Benutzer
|
|
Registriert seit: Aug 2011
Beiträge: 21
|
|
Ich bin hier wohl an der Grenze meines derzeitigen Wissens angelangt
Wobei mir gerade die Überlegung durch den Kopf ging, ob ich an diese Sache evtl. nicht zu kompliziert ran gehe?
Für meine HP nutze ich ein CMS in das ich ein Addon eingepflegt habe, dieses speichert eben die User_ID, die Vote_CAT und die Forumthread_ID in die Datenbank.
Eigentlich müßte ich doch nur die User_ID auslesen, die sowohl zur Vote_CAT als auch der Forumsthread_ID passt. Anschließend der User_ID aus einer anderen Tabelle den entsprechenden Nick zuordnen und das Ergebnis in der HTML ausgeben lassen?
Setze ich hier vielleicht schon am falschen Punkt an?
LG
Anna
|

25-08-2011, 17:33
|
 |
ApoY2k
Registrierter Benutzer
|
|
Registriert seit: Nov 2006
Beiträge: 286
|
|
Klingt, ohne viel darüber zu wissen, eigentlich ganz vernünftig...
__________________
This is what happens when an unstoppable force meets an immovable object.
|

25-08-2011, 17:50
|
|
AnMa
Registrierter Benutzer
|
|
Registriert seit: Aug 2011
Beiträge: 21
|
|
Ich habe mich inzwichen nochmal durch einige Googelergebnisse gekämpft und bin nun bei folgendem Konstrukt angekommen.
Leider noch immer nicht mit dem gewünschten ERfolg.
PHP-Code:
## ANFANG - AUSGABE der USER die bereits abgestimmt haben
$SQL = "SELECT vote_rated_userid FROM ".pkSQLPREFIX."_vote_rated WHERE vote_rated_cat='forum' AND vote_rated_contid='".$threadid."'"; $user_vote_id = mysql_query($sql); while ($row = mysql_fetch_array($user_vote_id))
## ENDE - AUSGABE der USER die bereits abgestimmt haben
und
HTML-Code:
<tr>
<td colspan="2" class="left" align="left">
<font colour="FFFFFF">Abgestimmt haben: <i>BLA
<?php
while ($row = mysql_fetch_array($user_vote_id)){
?>
</i></font></td>
</tr>
Nun bekomm ich im Forum aber nur noch eine schicke weiße Seite
|

25-08-2011, 18:15
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
$SQL ist nicht gleich $sql
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

25-08-2011, 18:38
|
|
AnMa
Registrierter Benutzer
|
|
Registriert seit: Aug 2011
Beiträge: 21
|
|
Mal abgesehen davon, dass ich es wirklich selbst hätte sehen müssen, dass die beiden unterschiedlich geschrieben sind (sorry for that), muß es ja wohl auch von der Funktion einen Unterschied geben?
Denn mit $SQL an beiden Stellen bekomme ich ne weiße Seie, mit $sql bekomme ich zwar noch kein Ergebnis, zumindest jedoch wieder die Seite angezeigt.
|

25-08-2011, 23:25
|
|
AnMa
Registrierter Benutzer
|
|
Registriert seit: Aug 2011
Beiträge: 21
|
|
Huhu
ich habe mir mal eine extra php-Datei außerhalb des CMS angelegt um ersmtal die Funktionen zu verstehen und mein Problem gelöst zu bekommen.
Dabei kam bis jetzt folgendes zu Stande:
PHP-Code:
<?php ## Logindaten vorgeben $mysqlhost="localhost"; // MySQL-Host angeben $mysqluser="USER"; // MySQL-User angeben $mysqlpwd="PASSWORT"; // Passwort angeben $mysqldb="DATENBANK"; // Datenbank angeben
## Verbindung zum SQL Server $connection=mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die("Verbindungsversuch fehlgeschlagen");
## Verbindung zur Datenbank mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht waehlen.");
## Auswahl der Spalten aus Tabelle $sql = "SELECT vote_rated_userid FROM pk__vote_rated WHERE vote_rated_cat='forum' AND vote_rated_contid='745'";
## Zuordnen der Variablen $user_id = mysql_query($sql) or die("Anfrage nicht erfolgreich");
## Ermitteln und Ausgabe der Anzahl $anzahl = mysql_num_rows($user_id); echo "Anzahl der Datensätze: $anzahl"; ?>
<!-- Begin der Table --> <table cellpadding="1" cellspacing="3" border="1"> <tr> <td>User ID</td> </tr>
<!-- Schleife --> <?php while ($adr = mysql_fetch_array($user_id)) { $vote_user_id = $adr['vote_rated_userid']; $sql = "SELECT user_nick FROM pk__user WHERE user_id = '".$vote_user_id."'"; $vote_user = mysql_query($sql) or die("Anfrage nicht erfolgreich"); ?> <tr>
<!-- Ausgabe --> <td><?=$vote_user?></td> </tr> <?php } ?> </table>
Wo ich aber garnicht weiter komme ist der Teil in der Schleife in dem ich die "ID" aus der Voting Tabelle mit der "ID" vergleichen und durch den "Nick" ersetzen lassen möchte.
Kann mir da jemand einen Tipp geben?
Lieben Dank
Anna
|

26-08-2011, 16:35
|
|
AnMa
Registrierter Benutzer
|
|
Registriert seit: Aug 2011
Beiträge: 21
|
|
hmmm ... Keiner mehr ne Ahnung wie ich das lösen kann?
Naja, trotzdem Danke, dann versuch ich anderswo noch mein Glück.
Winke
Anna
|

26-08-2011, 16:41
|
 |
Berni
  OWNER
|
|
Registriert seit: Jan 2001
Ort: Frankfurt / Egelsbach
Beiträge: 6.206
|
|
Zitat:
Zitat von AnMa
Huhu
ich habe mir mal eine extra php-Datei außerhalb des CMS angelegt um ersmtal die Funktionen zu verstehen und mein Problem gelöst zu bekommen.
Dabei kam bis jetzt folgendes zu Stande:
PHP-Code:
<?php
## Logindaten vorgeben
$mysqlhost="localhost"; // MySQL-Host angeben
$mysqluser="USER"; // MySQL-User angeben
$mysqlpwd="PASSWORT"; // Passwort angeben
$mysqldb="DATENBANK"; // Datenbank angeben
## Verbindung zum SQL Server
$connection=mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die("Verbindungsversuch fehlgeschlagen");
## Verbindung zur Datenbank
mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht waehlen.");
## Auswahl der Spalten aus Tabelle
$sql = "SELECT vote_rated_userid FROM pk__vote_rated WHERE vote_rated_cat='forum' AND vote_rated_contid='745'";
## Zuordnen der Variablen
$user_id = mysql_query($sql) or die("Anfrage nicht erfolgreich");
## Ermitteln und Ausgabe der Anzahl
$anzahl = mysql_num_rows($user_id);
echo "Anzahl der Datensätze: $anzahl";
?>
<!-- Begin der Table -->
<table cellpadding="1" cellspacing="3" border="1">
<tr>
<td>User ID</td>
</tr>
<!-- Schleife -->
<?php
while ($adr = mysql_fetch_array($user_id))
{
$vote_user_id = $adr['vote_rated_userid'];
$sql = "SELECT user_nick FROM pk__user WHERE user_id = '".$vote_user_id."'";
$vote_user = mysql_query($sql) or die("Anfrage nicht erfolgreich");
?>
<tr>
<!-- Ausgabe -->
<td><?=$vote_user?></td>
</tr>
<?php
}
?>
</table>
Wo ich aber garnicht weiter komme ist der Teil in der Schleife in dem ich die "ID" aus der Voting Tabelle mit der "ID" vergleichen und durch den "Nick" ersetzen lassen möchte.
Kann mir da jemand einen Tipp geben?
Lieben Dank
Anna
|
Warum arbeites du nicht mit einem JOIN (SQL)?
Dann kannst du dir die 2. SQL-Abfrage schenken.
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|