SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Webseiten professionell erstellen

Webseiten professionell erstellen zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQL

MySQL Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQL diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 16.08.2012, 16:29:25
Max Max ist offline
Anfänger
 
Registriert seit: Aug 2012
Alter: 37
Beiträge: 2
Max befindet sich auf einem aufstrebenden Ast
Abfrage, welche sich auf eine andere bezieht

Hallo erstmal zusammen,
wie vermutlich fast jeder hier, habe ich mich hier registriert, weil ich ein Problem habe, welches ich alleine anscheinend nicht lösen kann.

Dann gleich mal zu dem Problem:
Ich habe 4 Tabellen.
tbl_spieler (s_id, s_name, s_alter, n_id_f)
tbl_bilder (b_id, b_link, s_id_f)
tbl_nation (n_id, n_nation)
tbl_vereine (v_id, v_verein, s_id_f2)

Ich würde jetzt gerne mittels php eine Seite erstellen, die mir eine Liste aller Spieler untereinander ausgibt. Dort zu sehen ist ein Bild, der Name und das Alter des Spielers. Das klappt auch alles wunderbar. Allerdings möchte ich neben jedem Spieler noch ne Liste, in der seine bisherigen Vereine angezeigt werden. Also quasi ein Endlosunterformular in einem Endlosformular. Das klappt leider nicht. Wo mache ich die Verbindung zwischen den beiden Abfragen oder geht das einfach nicht???

Hier mal der Code:

PHP-Code:
<?
$ergebnis = mysql_query("SELECT b_link, s_id, s_name, s_alter, n_nation
FROM tbl_spieler, tbl_nation, tbl_bilder
WHERE n_id = n_id_f
AND s_id = s_id_f
GROUP BY s_id_f");

$ergebnis2 = mysql_query("SELECT s_id, v_verein
FROM tbl_spieler
INNER JOIN tbl_vereine ON s_id = s_id_f2");

while($row = mysql_fetch_object($ergebnis))
{
  echo '<a href=spielerdetails.php?s_id='.$row->s_id.'><img class="images" src="'.$row->b_link.'" alt="" width="250" height="168"></a>';
  echo '<a href=spielerdetails.php?s_id='.$row->s_id.'>'.$row->s_name.'</a>';
  echo '<p>('.$row->n_nation.")</p>";
  while($row = mysql_fetch_object($ergebnis2))
  {
    echo '<p>'.$row->v_verein."</p>";
  }
}

?>
Kann mir vielleicht jemand irgendwie helfen?

VG Max
Mit Zitat antworten
  #2  
Alt 21.08.2012, 17:28:06
raiguen raiguen ist offline
Anfänger
 
Registriert seit: Jul 2011
Alter: 65
Beiträge: 30
raiguen befindet sich auf einem aufstrebenden Ast
AW: Abfrage, welche sich auf eine andere bezieht

Zitat:
Das klappt leider nicht.
*räusper* Ist mal wieder ein typischer alles-und-nichts-sagender Hinweis!

Aber... beim Blick auf die beiden Statements würde ich sagen, dass Du AUCH im 2.Statement ALLE Spieler mit den zugehörigen Vereinen 'sammelst'. Soweit so gut, ABER: in der 2.WHILE-Schleife gibst Du dann auch ALLE Spieler/Vereine aus, OHNE auf den jeweiligen (in der 1.WHILE-Schleife) gerade anzuzeigenden Spieler zu achten! Mit anderen Worten: jeder Spieler hat ALLE (auch ihm nicht zugehörige Vereine) in der Auflistung.

Zitat:
Wo mache ich die Verbindung zwischen den beiden Abfragen...???
Na? Klickerts? Du musst in der zweiten WHILE-Schleife schon auf die gerade 'aktuelle' SpielerID reagieren!

Wie Du das machen willst/möchtest, bleibt Deiner Wahl überlassen. Evtl. das 2.Abfrageergebnis als Array speichern und wenn möglich, jeweils mit der entsprechenden SpielerID filtern und dann mittels WHILE ausgeben. Aber für PHP-technische sind die anderen gefragt - ist derzeit nicht meine Baustelle.
Mit Zitat antworten
  #3  
Alt 22.08.2012, 13:04:36
Max Max ist offline
Anfänger
 
Registriert seit: Aug 2012
Alter: 37
Beiträge: 2
Max befindet sich auf einem aufstrebenden Ast
AW: Abfrage, welche sich auf eine andere bezieht

Hallo raiguen,

erstmal vielen Dank für deine Antwort.

Zitat:
*räusper* Ist mal wieder ein typischer alles-und-nichts-sagender Hinweis!
Mit klappt leider nicht, meinte ich, dass mir nur beim ersten Spieler in der Liste alle (also auch die, bei denen er gar nicht gespielt hat) Vereine angezeigt werden.

Du hast natürlich absolut recht, ich muss irgend wie überprüfen, ob die ID´s gleich sind, so dass er nur die entsprechenden Vereine ausgibt.

Aber wie genau mache ich das in meinen SELECT-Statements?

Zitat:
Wie Du das machen willst/möchtest, bleibt Deiner Wahl überlassen. Evtl. das 2.Abfrageergebnis als Array speichern und wenn möglich, jeweils mit der entsprechenden SpielerID filtern...
Kannst du bzw. jemand anderes mir vielleicht ein Tipp oder Link oder so geben, wie ich so etwas machen muss?

VG Max
Mit Zitat antworten
  #4  
Alt 25.08.2012, 09:53:49
Ckaos Ckaos ist offline
Member
 
Registriert seit: Nov 2007
Beiträge: 843
Ckaos befindet sich auf einem aufstrebenden Ast
AW: Abfrage, welche sich auf eine andere bezieht

Hi

Zitat:
Zitat von Max Beitrag anzeigen
Kannst du bzw. jemand anderes mir vielleicht ein Tipp oder Link oder so geben, wie ich so etwas machen muss?
1. Es ist völlig sinnfrei in einer verschachtelten while - Schleife erneut $row zu benutzen.
2. Sollte man sich vorher beim Tabellendesign gedanken machen was man später in welchem Zusammenhang braucht. Nicht einfach alles tot-Normalisieren und später wundern das man schlechte Abfragezeiten erreicht!

Zitat:
Wie Du das machen willst/möchtest, bleibt Deiner Wahl überlassen. Evtl. das 2.Abfrageergebnis als Array speichern und wenn möglich, jeweils mit der entsprechenden SpielerID filtern und dann mittels WHILE ausgeben
Richtig es gibt mehrere ansätze dazu z.B.:
1.
PHP-Code:
while($row mysql_fetch_object($ergebnis))
{
  echo 
'<a href=spielerdetails.php?s_id='.$row->s_id.'><img class="images" src="'.$row->b_link.'" alt="" width="250" height="168"></a>';
  echo 
'<a href=spielerdetails.php?s_id='.$row->s_id.'>'.$row->s_name.'</a>';
  echo 
'<p>('.$row->n_nation.")</p>";
$ergebnis2 mysql_query("SELECT s_id, v_verein
FROM tbl_spieler
INNER JOIN tbl_vereine ON s_id = s_id_f2 where s_id='"
.$row->s_id."'");
  while(
$subrow mysql_fetch_object($ergebnis2))
  {
    echo 
'<p>'.$subrow ->v_verein."</p>";
  }

2.
PHP-Code:
$ergebnis2 mysql_query("SELECT s_id, v_verein
FROM tbl_spieler
INNER JOIN tbl_vereine ON s_id = s_id_f2"
);
//Speichern aller vereine anhand s_id
while($subrow mysql_fetch_object($ergebnis2))$s_ids[$subrow->s_id][]=$subrow->v_verein;
while(
$row mysql_fetch_object($ergebnis))
{
  echo 
'<a href=spielerdetails.php?s_id='.$row->s_id.'><img class="images" src="'.$row->b_link.'" alt="" width="250" height="168"></a>';
  echo 
'<a href=spielerdetails.php?s_id='.$row->s_id.'>'.$row->s_name.'</a>';
  echo 
'<p>('.$row->n_nation.")</p>";
  
//hat er vereine?
  
if(isset($s_ids[$row->s_id])){
    echo 
'<p>'.implode(',',$s_ids[$row->s_id])."</p>";
  }else{
    echo 
"nö";
  }
  }

Nachteil der ersten variante bei jedem Spieler wird eine weitere SQL Abfrage abgesetzt.
Natürlich kannst du auch alles in einer Abfrage abfangen und dann die Rückgabe wie "raiguen" schon sagte in ein Array packen und dann das array durchgehen.

Denke hast nun genug ansätze.

mfg

CKaos
__________________
"Wenn die Leute Häuser so bauen würden, wie wir Programme schreiben, würde der erstbeste Specht unsere Zivilisation zerhacken."
In den allermeisten Fällen sitzt der Bug etwa 40 cm vor dem Monitor!
Mit Zitat antworten
Antwort

Stichworte
abfrage, endlosformular, ineinander, verknüpfen, while-schleife


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Abfrage Form + Variable + Base64 + file_get_content HILFE ??!! Pitbull PHP Grundlagen 1 31.08.2011 18:42:16
Bei Formular Abfrage einer Datenbank und Eintragung in einer andere ChiiFii MySQL 2 14.04.2010 20:11:23
Wie SELECT mit Suche nach String beschleunigen? mgutt MySQL 11 23.10.2008 17:36:17
MySQL Abfrage innerhalb einer Abfrage HariboGold MySQL 4 27.08.2008 17:00:28
SELECT Abfrage nur mit gefüllten Werten Skyman MySQL 0 24.10.2007 23:01:50


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:38:55 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.


© 2001-2018 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt