keine weitere SELECT Abfrage auf der Seite möglich

mkoeni1

Erfahrenes Mitglied
Hallo PHP-Gemeinde,

ich habe jetzt schon mehrere Tage ein Problem mit meinen Daten !! Ich finde einfach keine Lösung dafür. Jetzt wende ich mich an Euch.

Ich habe eine PHP-Seite (geganlyse.php) auf der ich den aktuellen Gegner meiner Mannschaft anzeigen lassen will.

Am Besten erstmal meine SQL-Tabelle und deren Beziehungen.


Tabelle: akt_spieltag:
Code:
-- Tabellenstruktur für Tabelle `akt_spieltag`
-- 

CREATE TABLE `akt_spieltag` (
  `id` int(3) NOT NULL auto_increment,
  `prev_spieltag` varchar(2) collate latin1_general_ci NOT NULL default '',
  ` team_id_fk` int(4) NOT NULL,
  `spieltag_nr_fk` int(4) NOT NULL,
  `spieltag_torsch1` varchar(255) collate latin1_general_ci NOT NULL,
  `torsch1_howmuch` varchar(2) collate latin1_general_ci NOT NULL,
  `torsch1_minute1` varchar(2) collate latin1_general_ci NOT NULL,
  `torsch1_minute2` varchar(2) collate latin1_general_ci NOT NULL,
  `torsch1_minute3` varchar(2) collate latin1_general_ci NOT NULL,
  `torsch1_minute4` varchar(2) collate latin1_general_ci NOT NULL,
  `torsch1_minute5` varchar(2) collate latin1_general_ci NOT NULL,
  `torsch1_minute6` varchar(2) collate latin1_general_ci NOT NULL,
  `spieltag_torsch2` varchar(255) collate latin1_general_ci NOT NULL,
  `torsch2_howmuch` varchar(2) collate latin1_general_ci NOT NULL,
  `torsch2_minute1` varchar(2) collate latin1_general_ci NOT NULL,
  `torsch2_minute2` varchar(2) collate latin1_general_ci NOT NULL,
  `torsch2_minute3` varchar(2) collate latin1_general_ci NOT NULL,
  `torsch2_minute4` varchar(2) collate latin1_general_ci NOT NULL,
  `torsch2_minute5` varchar(2) collate latin1_general_ci NOT NULL,
  `spieltag_torsch3` varchar(255) collate latin1_general_ci NOT NULL,
  `torsch3_howmuch` varchar(2) collate latin1_general_ci NOT NULL,
  `torsch3_minute1` varchar(2) collate latin1_general_ci NOT NULL,
  `torsch3_minute2` varchar(2) collate latin1_general_ci NOT NULL,
  `torsch3_minute3` varchar(2) collate latin1_general_ci NOT NULL,
  `torsch3_minute4` varchar(2) collate latin1_general_ci NOT NULL,
  `spieltag_torsch4` varchar(255) collate latin1_general_ci NOT NULL,
  `torsch4_howmuch` varchar(2) collate latin1_general_ci NOT NULL,
  `torsch4_minute1` varchar(2) collate latin1_general_ci NOT NULL,
  `torsch4_minute2` varchar(2) collate latin1_general_ci NOT NULL,
  `torsch4_minute3` varchar(2) collate latin1_general_ci NOT NULL,
  `spieltag_torsch5` varchar(255) collate latin1_general_ci NOT NULL,
  `torsch5_howmuch` varchar(2) collate latin1_general_ci NOT NULL,
  `torsch5_minute1` varchar(2) collate latin1_general_ci NOT NULL,
  `torsch5_minute2` varchar(2) collate latin1_general_ci NOT NULL,
  `torsch5_minute3` varchar(2) collate latin1_general_ci NOT NULL,
  `spieltag_torsch6` varchar(255) collate latin1_general_ci NOT NULL,
  `torsch6_howmuch` varchar(2) collate latin1_general_ci NOT NULL,
  `torsch6_minute1` varchar(2) collate latin1_general_ci NOT NULL,
  `torsch6_minute2` varchar(2) collate latin1_general_ci NOT NULL,
  `heim_team_tbl` int(2) NOT NULL,
  `gast_team_tbl` int(2) NOT NULL,
  `heim_team_tore` int(2) NOT NULL,
  `heim_team_tore_half` varchar(2) collate latin1_general_ci NOT NULL,
  `gast_team_tore` int(2) NOT NULL,
  `gast_team_tore_half` varchar(2) collate latin1_general_ci NOT NULL,
  `next_spieltag` varchar(2) collate latin1_general_ci NOT NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=26 ;
jetzt die Tabelle: all_spieltag
Code:
-- 
-- Tabellenstruktur für Tabelle `all_spieltag`
-- 

CREATE TABLE `all_spieltag` (
  `spieltag_nr_pk` int(4) NOT NULL,
  `teamid_fk` int(4) NOT NULL,
  `spieltag_fk` int(3) NOT NULL,
  `game_typ` varchar(50) collate latin1_general_ci NOT NULL,
  `game_art` varchar(25) collate latin1_general_ci NOT NULL,
  `saison` varchar(25) collate latin1_general_ci NOT NULL,
  `date` varchar(25) collate latin1_general_ci NOT NULL,
  `beginn` varchar(25) collate latin1_general_ci NOT NULL,
  `location` varchar(4) collate latin1_general_ci NOT NULL,
  `status` varchar(4) collate latin1_general_ci NOT NULL,
  `goals_for` int(4) NOT NULL,
  `goals_for_half` varchar(4) collate latin1_general_ci NOT NULL,
  `goals_against` int(4) NOT NULL,
  `goals_against_half` varchar(4) collate latin1_general_ci NOT NULL,
  PRIMARY KEY  (`spieltag_nr_pk`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci COMMENT='all game (team_id, ...)';
jetzt die tabelle: all_teams
Code:
-- 
-- Tabellenstruktur für Tabelle `all_teams`
-- 

CREATE TABLE `all_teams` (
  `team_id_pk` int(4) NOT NULL,
  `team_name` varchar(255) collate latin1_general_ci NOT NULL,
  `team_wap` varchar(255) collate latin1_general_ci NOT NULL,
  `team_wap_width` varchar(3) collate latin1_general_ci NOT NULL,
  `team_wap_height` varchar(3) collate latin1_general_ci NOT NULL,
  `team_link` varchar(255) collate latin1_general_ci NOT NULL,
  PRIMARY KEY  (`team_id_pk`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci PACK_KEYS=0 COMMENT='every team has a id';

Zudem gibt es in der Tabelle `akt_spieltag` 2 Beziehungen.

1. Beziehung:
Die (FK)-Spalte --> ` team_id_fk` int(4) NOT NULL in der Tabelle `akt_spieltag` mit der (PK)-Spalte `spieltag_nr_pk` int(4) NOT NULL in der Tabelle `all_teams`.


2. Beziehung:
Die (FK)-Spalte -> `spieltag_nr_fk` int(4) NOT NULL in der Tabelle `akt_spieltag` mit der (PK)-Spalte -> `spieltag_nr_pk` int(4) NOT NULL in der Tabelle `all_spieltag`.

FK = foreign key
PK = primary key


Nochmals übersichtlicher zusammengefasst: (1. Beziehung und 2. Beziehung)
team_id_fk mit all_teams-> team_id_pk und
spieltag_nr_fk mit all_spieltag->spieltag_nr_pk



dazu meine oben schon einmal genannte PHP-Seite (geganalyse.php) mit Hilfe ich auf die vorhandenen Daten zugreifen möchte.


Hier ist die anfrage an die Datenbank sichtbar und vorallem der SELECT-Befehl !
PHP:
<?php
//Verbindung aufbauen
     mysql_connect("localhost","root","")
        or die("Keine Verbindung");

    //Datenbank auswählen
    mysql_select_db(test);
    //$spltg = 24; kommt auf dieser seite an
    
    //GET-Wert mit der Hand aus der URL geholt
    $game = $_GET['spltg'];

    


/********************************************************************************************************************/
/********************************************************************************************************************/


    //Anfrage an die Tabelle `akt_spieltag` für Spieldaten
    $all_teamakt_spieltag  =  mysql_query("SELECT s.prev_spieltag, t.team_id_pk, t.team_name, t.team_wap, t.team_wap_width, t.team_wap_height, t.team_link, a.spieltag_nr_pk, s.next_spieltag FROM akt_spieltag s, all_teams t, all_spieltag a WHERE s.spieltag_nr_fk = '".mysql_real_escape_string($game)."'");
    
    if (!$all_teamakt_spieltag) {
        die(mysql_error());
    }
    $row=mysql_fetch_array($all_teamakt_spieltag);
    
    // previous, next gameplay from the table  `akt_spieltag` **********************************************/    
    $prvs=$row["prev_spieltag"];
    $nxt=$row["next_spieltag"];
    
    // make sure teamname == meinClub then style with bold ***************/
    
    //name of actual team
    $opponent=$row["team_name"];

     //logo of actual team
    $opponentwap=$row["team_wap"];
    
     //logo width of actual team
    $opponentwapwdth=$row["team_wap_width"];
    
     //logo heigh of actual team
    $opponentwaphght=$row["team_wap_height"];
    
      //link of actual team
    $opponentlink=$row["team_link"];
    
    //team_id_fk
    $teamidfk=$row["team_id_fk"];
    
    //spieltag_nr_fk
    $spieltagnrfk=$row["spieltag_nr_fk"];
    
    
    // check oddset for <td>bgcolor for a game result***************/    
    
    //oddset of the game
    $oddst=$row["oddset"];
    
    // select date of the game ***********************/
     $dayofgame=$row["datum"];
    
    
    // select saison from table `akt_spieltag`   *********************/
     $sai=$row["saison"];

    ?>


Ich hab jetzt nicht alles an Code hier veröffentlicht, mir geht es nur darum, dass wenn ich über den Left/right Button vor oder zurück gehe, er mir die SELECT abfrage nicht neu ausführt, er verharrt zB. wenn der "spltg"=24 ist, immer im spltg=24 und zieht den Gegner an diesem Spieltag raus. Auch wenn der Button in zwischen schon bei 23, 22, 21, ... ist.

HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
       "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Gegnervergleich</title>

<style type="text/css">
td { border:0px solid #000; vertical-align:center; overflow:hidden; font-size:12px;}
</style>
<!-- remote and local css-file -->
<link href='../../shared/css/upload.css' rel='stylesheet' type='text/css'>


</head>
<body>
<div style="position:absolute;left:20px;top:20px;">

<!--********************************************* left button  + make sure it is not the first one ********************-->                                
    <table width="716px" border="0" cellpadding="0" cellspacing="0">
        <tr>
            <td valign="left" align="left"><?php if($prvs == null){ ?></td><?php } else { echo $prvs;?><a href="geganalyse.php?spltg=<?php echo $prvs;?>" target="_self"><img src="../elemente/bilder/left.gif" width="20" height="22" border="0"></a></td><?php } ?></td>
            
<!--********************************************* right button + make sure it is not the last ******************-->
<td valign="middle" align="right">
<?php if(($nxt == null)){ ?></td><?php } else { ?><a href="geganalyse.php?spltg=<?php echo $nxt;?>" target="_self"><img src="../elemente/bilder/right.gif" width="20" height="22" border="0"></a></td><?php } ?>            
        </tr>
    </table
    
    <table border="0" cellpadding="0" cellspacing="0">
        <tr>
            <td colspan="5"><h2>Gegnervergleich</h2></td>
        </tr>
        <tr>
            <td valign="top">alle Spiele gegen:</td>
            <td><img src="../../shared/images/1_pix_t.gif" height="1px"  width="5px" border="0" alt="spacer"></td>
            
<!-- query team_name from table all_teams -->            
            
            <td valign="top">
                <?php echo $teamidfk; if(!($opponent=="meinClub")) { ?><b><?php echo $opponent; ?></b>
            </td>
            <td>
                <img src="../../shared/images/1_pix_t.gif" height="1px"  width="30px" border="0" alt="spacer">
            </td>
            <td valign="top">
                <?php if(!($opponentlink==null)) { ?><a href="<?php echo $opponentlink; ?>" target="_blank"><img src="<?php echo $opponentwap;?>" alt="<?php echo $opponent;?>" width="<?php echo $opponentwapwdth; ?>" height="<?php echo $opponentwaphght; ?>" border="0"></a><?php } else {?>
                <img src="<?php echo $opponentwap;?>" alt="<?php echo $opponent;?>" width="<?php echo $opponentwapwdth;?>" height="<?php echo $opponentwaphght; ?>" border="0"><?php } }?>
            </td>
        </tr>
    </table>
    <p>
    <table width="716px" border="0" cellpadding="0" cellspacing="0">
     <tr bgcolor="#C0C0C0">
         
         <th colspan="2" align="center">Typ</th>
         <th>Datum</th>
         <th>Begegnung</th>
         <th>Ergebnis</th>
         <th>Torsch&uuml;tzen</th>
         
     </tr>

...
und so weiter und so fort

ich hoffe mich kann einer verstehen und mir helfen. Vielen Dank dafür.
Wenn ich mich zu undeutlich beim formulieren meines Problems ausgedrückt habe bitte ich um feedback. Dann versuche ich mich anderst auszudrücken.

Fakt ist einfach:
Beim Aufruf von:
PHP:
<td valign="left" align="left"><?php if($prvs == null){ ?></td><?php } else { echo $prvs;?><a href="geganalyse.php?spltg=<?php echo $prvs;?>" target="_self"><img src="../elemente/bilder/left.gif" width="20" height="22" border="0"></a></td><?php } ?></td>
gibt echo $prvs; den Wert 23 aus der Datenbank aus, beim Aufruf der Seite mit dem spieltag_nr_fk=24, also dem Aufruf: geganlyse.php?spltg=24 in der Url. Dann möchte ich (das ist mein Hauptproblem) die SELECT-Anwesiung neu ausführen den der spltg hat jetzt den wert 23 (den ich aus der URL ziehe) Das macht er aber nicht er gibt immernoch den Gegner am 24. Spieltag aus. Wieso ?



Vielen Dank für mögliche Antworten
Viele Grüße
Matze
 
habe ich mich unverständlich ausgedrückt ? Ich will einfach errecihen, dass meine SELECT-Anwesiung neu ausgeführt wird !!

Viele Grüße
Matze
 
Hallo,

hab doch etwas Geduld. Es ist Wochenende, in vielen Gegenden herrscht traumhaftes Wetter – da kann man nicht erwarten, dass nach nur eineinhalb Stunden mehrere Antworten kommen.

Zum Problem: ist denn die Abfrage, die an die Datenbank geschickt wird, korrekt? Wird der Wert aus der URL in die Abfrage richtig übernommen?

Grüße,
Matthias
 
Hallo,
klar schönes Wetter entschuldigt einiges.

Ja, der Wert aus der URL wird richtig in die (erstmalige) Abfrage übernommen. Aber schon bei der zweiten und allen weiteren Abfragen (sprich wenn ich auf den left/right-Button gehe und dadurch die seite neu geladen wird) und sich dabei die spieltag_nr_fk (zb. auf 23 ändert, kommen die gleichen Daten zurück wie beim ersten Aufruf der Seite mit spieltag_nr_fk (mit dem Wert 24).

Demnach muss mit dem zweiten, mehrmaligen Aufruf der Seite (bzw. der Abfrage der Datenbank) etwas nicht in Ordnung sein. Ich weiß aber nicht was.

Viele Grüße
Matze
 
wenn ich
Code:
SELECT DISTINCT s.prev_spieltag, t.team_id_pk, t.team_name, t.team_wap, t.team_wap_width, t.team_wap_height, t.team_link, s.next_spieltag FROM akt_spieltag s, all_teams t, all_spieltag a WHERE s.spieltag_nr_fk = 24

ohne die $_GET Variable:
Code:
...
WHERE s.spieltag_nr_fk = '".mysql_real_escape_string($game)."'");

eingebe, bekomme ich alle Zeilen in aus der Datenbank `all_teams` zurück, obwohl ich nur eine Zeile will, und das ist das Team (team_id_fk) für s.spieltag_nr_fk = 24.


Viele Grüße
Matze



Junge, Junge, Junge ich habe den Fehler gefunden. Der wert für die Spalte ´team_id_fk` hatte ein Leerzeichen zuviel am Anfang.
Das passiert bei c&p


Bitte kein weiteres Bemühen um Antworten. ;-)))))))) Hat sich erledigt

Viele Grüße
Matze
 
Zuletzt bearbeitet:
Zurück