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 ::

TYPO3 Kochbuch

TYPO3 Kochbuch 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 > MySQLi/PDO/(MySQL)

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 16.08.2012, 17:29:25
Max Max ist offline
Anfänger
 
Registriert seit: Aug 2012
Alter: 43
Beiträge: 2
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, 18:28:06
raiguen raiguen ist offline
Anfänger
 
Registriert seit: Jul 2011
Alter: 71
Beiträge: 30
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, 14:04:36
Max Max ist offline
Anfänger
 
Registriert seit: Aug 2012
Alter: 43
Beiträge: 2
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, 10:53:49
Ckaos Ckaos ist offline
Member
 
Registriert seit: Nov 2007
Beiträge: 843
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 19:42:16
Bei Formular Abfrage einer Datenbank und Eintragung in einer andere ChiiFii MySQLi/PDO/(MySQL) 2 14.04.2010 21:11:23
Wie SELECT mit Suche nach String beschleunigen? mgutt MySQLi/PDO/(MySQL) 11 23.10.2008 18:36:17
MySQL Abfrage innerhalb einer Abfrage HariboGold MySQLi/PDO/(MySQL) 4 27.08.2008 18:00:28
SELECT Abfrage nur mit gefüllten Werten Skyman MySQLi/PDO/(MySQL) 0 25.10.2007 00:01:50


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:23:47 Uhr.


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


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