ebiz-webhosting
- Ad -
php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 

 


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!

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 02-05-2010, 12:46
mark2911
 Registrierter Benutzer
Links : Onlinestatus : mark2911 ist offline
Registriert seit: May 2010
Beiträge: 13
mark2911 befindet sich auf einem aufstrebenden Ast
Standard [PHP MySQL] Eingabeformular aus zwei Tabellen - LEFTJOIN

Hallo,

ich versuche mich gerade schrittweise an mein Eingabeformular heranzutasten.

Mit folgendem Formular wähle ich den Spieltag aus:

HTML-Code:
<form id="SpAusw" name="Spieltag_Auswahl" method="post" action="WTTippen.php">
  <p>
    <label>Spieltag auswählen:    </label>
    <label>
    <select name="Spieltag_Auswahl2" id="Spieltag_Auswahl">
      <?php
do {  
?>
      <option value="<?php echo $row_WTSpieltage['wtMatchID']?>"
<?php if (!(strcmp($row_WTSpieltage['wtMatchID'], 
$row_wmSpielplan['wmSpieltag']))) {echo "selected=\"selected\"";} ?>>
<?php echo $row_WTSpieltage['wtMatchText']?></option>
      <?php
} while ($row_WTSpieltage = mysql_fetch_assoc($WTSpieltage));
  $rows = mysql_num_rows($WTSpieltage);
  if($rows > 0) {
      mysql_data_seek($WTSpieltage, 0);
      $row_WTSpieltage = mysql_fetch_assoc($WTSpieltage);
  }
?>
    </select>
    <input type="submit" name="Go" id="Go" value="Go" />
    </label>
   <?php echo $_POST[Spieltag_Auswahl2]?></p>
Ich möchte nun aus meinen beiden Tabellen

wmSpielplan: wmSpielID ¦ wmSpielZeit ¦ wmSpielort ¦ wmTeamA ¦ wmTeamB ¦ wmSpieltag ¦ wmToreA ¦ wmToreB

wtTipps: wtMatchID ¦ wtSpieltagID ¦ wtTeamA ¦ wtTeamB ¦ wtTippA ¦ wtTippB ¦ wtUser ¦ wtPunkte ¦ wtTimestamp

die wmSpielID, wmSpiel_Timestamp, wmSpielort, wmTeamA, wmTeamB, wmSpieltag, wtTippA, wtTippB abfragen, wenn UserName, SpieltagID und MatchID übereinstimmen. Das habe ich soweit mit folgender Abfrage geschafft.

PHP-Code:
$Tipp_User_wtTipps "-1";
if (isset(
$row_UserName['UserName'])) {
  
$Tipp_User_wtTipps $row_UserName['UserName'];
}
$SetSpieltag_wtTipps "-1";
if (isset(
$_POST[Spieltag_Auswahl2])) {
  
$SetSpieltag_wtTipps $_POST[Spieltag_Auswahl2];
}
mysql_select_db($database_wm2010$wm2010);
$query_wtTipps sprintf("SELECT wmspielplan.wmSpielID, wmspielplan.wmSpiel_Timestamp, 
wmspielplan.wmSpielort, wmspielplan.wmTeamA, wmspielplan.wmTeamB, wmspielplan.wmSpieltag, 
wttipps.wtTippA, wttipps.wtTippB FROM wmspielplan, wttipps WHERE 
wmspielplan.wmSpielID=wttipps.wtMatchID AND wttipps.wtUser=%s AND wmspielplan.wmSpieltag=%s"

GetSQLValueString($Tipp_User_wtTipps"text"),
GetSQLValueString($SetSpieltag_wtTipps"text"));

$wtTipps mysql_query($query_wtTipps$wm2010) or die(mysql_error());
$row_wtTipps mysql_fetch_assoc($wtTipps);
$totalRows_wtTipps mysql_num_rows($wtTipps); 
Mit folgender Ausgabe lasse ich die Auswahl anzeigen:

HTML-Code:
<p>&nbsp;</p>
<table border="1">
  <tr>
    <td>wmSpielID</td>
    <td>wmSpiel_Timestamp</td>
    <td>wmSpielort</td>
    <td>wmTeamA</td>
    <td>wmTeamB</td>
    <td>wmSpieltag</td>
    <td>wtTippA</td>
    <td>wtTippB</td>
  </tr>
  <?php do { ?>
    <tr>
      <td><?php echo $row_wtTipps['wmSpielID']; ?></td>
      <td><?php echo $row_wtTipps['wmSpiel_Timestamp']; ?></td>
      <td><?php echo $row_wtTipps['wmSpielort']; ?></td>
      <td><?php echo $row_wtTipps['wmTeamA']; ?></td>
      <td><?php echo $row_wtTipps['wmTeamB']; ?></td>
      <td><?php echo $row_wtTipps['wmSpieltag']; ?></td>
      <td><?php echo $row_wtTipps['wtTippA']; ?></td>
      <td><?php echo $row_wtTipps['wtTippB']; ?></td>
    </tr>
    <?php } while ($row_wtTipps = mysql_fetch_assoc($wtTipps)); ?>
</table>
Die Abfrage liefert mir folgendes Ergebnis:

wmSpielID wmSpiel_Timestamp wmSpielort wmTeamA wmTeamB wmSpieltag wtTippA wtTippB
1 2011-06-10 16:00:00 Johannesburg - JSC S�dafrika Mexiko S1 0 2
2 2011-06-10 20:30:00 Kapstadt Uruguay Frankreich S1 4 1
3 2012-06-10 16:00:00 Johannesburg - JEP Argentinien Nigeria S1 1 4
4 2012-06-10 13:30:00 Nelson Mandela Bay/Port Elizabeth Korea Republik Griechenland S1 0 0
5 2012-06-10 20:30:00 Rustenburg England USA S1 2 3
6 2013-06-10 13:30:00 Polokwane Algerien Slowenien S1 6 5
7 2013-06-10 20:30:00 Durban Deutschland Australien S1 2 2
8 2013-06-10 16:00:00 Tshwane/Pretoria Serbien Ghana S1 3 4

Das ist soweit gut, solange der User schon getippt hat, d.h. wtTippA und wtTippB sind in der Datenbank vorhanden. Ich möchte nun aber die Tabelle auch anzeigen lassen, wenn die Tipps noch nicht vorhanden sind.

Könnte das mit LEFTJOIN in meiner Abfrage funktionieren, oder kann ich das nicht kombinieren?

Danke
Markus

Geändert von mark2911 (06-05-2010 um 19:46 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 02-05-2010, 13:33
mark2911
 Registrierter Benutzer
Links : Onlinestatus : mark2911 ist offline
Registriert seit: May 2010
Beiträge: 13
mark2911 befindet sich auf einem aufstrebenden Ast
Standard

Ich habe die SQL-Abfrage mal wie folgt angepasst:

PHP-Code:
$Tipp_User_wtTipps "-1";
if (isset(
$row_UserName['UserName'])) 
{
  
$Tipp_User_wtTipps $row_UserName['UserName'];
}
$SetSpieltag_wtTipps "-1";
if (isset(
$_POST[Spieltag_Auswahl2])) 
{
  
$SetSpieltag_wtTipps $_POST[Spieltag_Auswahl2];
}
mysql_select_db($database_wm2010$wm2010);
$query_wtTipps sprintf("
                    SELECT 
                        wmspielplan.wmSpielID, wmspielplan.wmSpiel_Timestamp, 
                        wmspielplan.wmSpielort,    wmspielplan.wmTeamA, wmspielplan.wmTeamB, 
                        wmspielplan.wmSpieltag,    wttipps.wtTippA, wttipps.wtTippB 
                    FROM wmspielplan 
                    LEFT JOIN wttipps ON wmspielplan.wmSpielID=wttipps.wtMatchID 
                    WHERE wttipps.wtUser=%s AND wmspielplan.wmSpieltag=%s"

                        
GetSQLValueString($Tipp_User_wtTipps"text"),
                        
GetSQLValueString($SetSpieltag_wtTipps"text")
                        );
$wtTipps mysql_query($query_wtTipps$wm2010) or die(mysql_error());
$row_wtTipps mysql_fetch_assoc($wtTipps);
$totalRows_wtTipps mysql_num_rows($wtTipps); 
Das Ergebniss ist momentan das gleiche. Wenn ich einen Spieltag auswähle, welcher noch nicht getippt wurde, dann bekomme ich nichts angezeigt. Ich möchte aber die Tabelle auch ohne gesetzte Tipps sehen.
Ich vermute, dass dies mit "WHERE wttipps.wtUser=%s" immer noch unterdrückt wird. Wie kann ich das ändern?

Geändert von mark2911 (03-05-2010 um 23:37 Uhr)
Mit Zitat antworten
  #3 (permalink)  
Alt 02-05-2010, 13:46
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 2.328
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Kann man den Code auch irgendwie sinnvoll formatieren? Ich seh da nur einen riesenlangen Wurstzeichensalat.
Mit Zitat antworten
  #4 (permalink)  
Alt 02-05-2010, 14:25
mark2911
 Registrierter Benutzer
Links : Onlinestatus : mark2911 ist offline
Registriert seit: May 2010
Beiträge: 13
mark2911 befindet sich auf einem aufstrebenden Ast
Standard

Ich hab mal versucht, es besser darzustellen.

PHP-Code:
$Tipp_User_wtTipps "-1";
if (isset(
$row_UserName['UserName'])) 
{
  
$Tipp_User_wtTipps $row_UserName['UserName'];
}
$SetSpieltag_wtTipps "-1";
if (isset(
$_POST[Spieltag_Auswahl2])) 
{
  
$SetSpieltag_wtTipps $_POST[Spieltag_Auswahl2];
}
mysql_select_db($database_wm2010$wm2010);
$query_wtTipps sprintf("
                    SELECT 
                        wmspielplan.wmSpielID, wmspielplan.wmSpiel_Timestamp, 
                        wmspielplan.wmSpielort,    wmspielplan.wmTeamA, wmspielplan.wmTeamB, 
                        wmspielplan.wmSpieltag,    wttipps.wtTippA, wttipps.wtTippB 
                    FROM wmspielplan 
                    LEFT JOIN wttipps ON wmspielplan.wmSpielID=wttipps.wtMatchID 
                    WHERE wttipps.wtUser=%s AND wmspielplan.wmSpieltag=%s"

                        
GetSQLValueString($Tipp_User_wtTipps"text"),
                        
GetSQLValueString($SetSpieltag_wtTipps"text")
                        );
$wtTipps mysql_query($query_wtTipps$wm2010) or die(mysql_error());
$row_wtTipps mysql_fetch_assoc($wtTipps);
$totalRows_wtTipps mysql_num_rows($wtTipps); 

Geändert von mark2911 (03-05-2010 um 23:45 Uhr)
Mit Zitat antworten
  #5 (permalink)  
Alt 02-05-2010, 14:30
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 2.328
h3ll befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
$sql sprintf("
    SELECT
        s.wmSpielID, s.wmSpiel_Timestamp, s.wmSpielort, 
        s.wmTeamA, s.wmTeamB, s.wmSpieltag, t.wtTippA, t.wtTippB 
    FROM
        wmspielplan s
    LEFT JOIN
        wttipps t ON ( s.wmSpielID = t.wtMatchID AND t.wtUser = '%s' )
    WHERE
        s.wmSpieltag = '%s'"
,
    
mysql_real_escape_string($Tipp_User_wtTipps),
    
mysql_real_escape_string($SetSpieltag_wtTipps)
); 
Mit Zitat antworten
  #6 (permalink)  
Alt 02-05-2010, 14:43
mark2911
 Registrierter Benutzer
Links : Onlinestatus : mark2911 ist offline
Registriert seit: May 2010
Beiträge: 13
mark2911 befindet sich auf einem aufstrebenden Ast
Standard

Super, hat funktioniert

Zitat:
SELECT
s.wmSpielID, s.wmSpiel_Timestamp, s.wmSpielort,
s.wmTeamA, s.wmTeamB, s.wmSpieltag, t.wtTippA, t.wtTippB
Du hast in der Abfrage bei SELECT "s." und "t." eingeführt. Wie nennt man das? Ich würde es gerne nachlesen.
Mit Zitat antworten
  #7 (permalink)  
Alt 02-05-2010, 14:48
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 2.328
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von mark2911 Beitrag anzeigen
Du hast in der Abfrage bei SELECT "s." und "t." eingeführt. Wie nennt man das? Ich würde es gerne nachlesen.
Das sind Alias-Namen.

MySQL :: MySQL 5.0 Reference Manual :: 12.2.8 SELECT Syntax
Mit Zitat antworten
  #8 (permalink)  
Alt 03-05-2010, 14:16
mark2911
 Registrierter Benutzer
Links : Onlinestatus : mark2911 ist offline
Registriert seit: May 2010
Beiträge: 13
mark2911 befindet sich auf einem aufstrebenden Ast
Standard

So, ich habe jetzt mein Eingabeformular erstell:

HTML-Code:
<form id="Tippen" name="Spiel_Tippen" method="post" action="WTTippen.php">
  <p>&nbsp;</p>
  <table border="1">
    <tr>
      <td>wmSpielID</td>
      <td>wmSpiel_Timestamp</td>
      <td>wmSpielort</td>
      <td>wmTeamA</td>
      <td>wmTeamB</td>
      <td>wmSpieltag</td>
      <td>wtTippA</td>
      <td>wtTippB</td>
    </tr>
<?php 
do 
{ ?>
    <tr>
        <td><?php echo $row_wtTipps['wmSpielID']; ?></td>
        <td><?php echo $row_wtTipps['wmSpiel_Timestamp']; ?></td>
        <td><?php echo $row_wtTipps['wmSpielort']; ?></td>
        <td><?php echo $row_wtTipps['wmTeamA']; ?></td>
        <td><?php echo $row_wtTipps['wmTeamB']; ?></td>
        <td><?php echo $row_wtTipps['wmSpieltag']; ?></td>
        <td><input type="text" name="wtTipp[TippA][]" size="1" style="width:40" 
            maxlength="2" value="<?php echo $row_wtTipps['wtTippA']; ?>" /></td>
        <td><input type="text" name="wtTipp[TippB][]" size="1" style="width:40" 
            maxlength="2" value="<?php echo $row_wtTipps['wtTippB']; ?>" /></td>
           <input type="hidden" name="wtTipp[Spieltag][]" value="<?php echo $row_wtTipps['wmSpieltag']; ?>">
           <input type="hidden" name="wtTipp[SpielID][]" value="<?php echo $row_wtTipps['wmSpielID']; ?>">
           <input type="hidden" name="wtTipp[UserName][]" value="<?php echo $row_UserName['UserName']; ?>">
    </tr>
<?php 
} 
while ($row_wtTipps = mysql_fetch_assoc($wtTipps)); ?>
  </table>
  
  <input type="submit" name="speichern" id="speichern" value="speichern" />
  <p></p>
  
</form>
Die Eingabe wurde an ein mehrdimensionales Array übergen.
Die Ausgabe
PHP-Code:
<?php print_r($_POST['wtTipp']);?>
ergibt folgendes Ergebnis:

Array (
[TippA] => Array ( [0] => 0 [1] => 4 [2] => 1 [3] => 0 [4] => 2 [5] => 6 [6] => 2 [7] => 3 )
[TippB] => Array ( [0] => 2 [1] => 1 [2] => 4 [3] => 0 [4] => 3 [5] => 5 [6] => 2 [7] => 4 )
[Spieltag] => Array ( [0] => S1 [1] => S1 [2] => S1 [3] => S1 [4] => S1 [5] => S1 [6] => S1 [7] => S1 )
[SpielID] => Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [6] => 7 [7] => 8 )
[UserName] => Array ( [0] => Markus [1] => Markus [2] => Markus [3] => Markus [4] => Markus [5] => Markus [6] => Markus [7] => Markus )
)
Ich möchte nun dieses Array wieder in tabellenform ausgeben.

Dazu habe ich mir folgenden Code überlegt, allerdings bekomme ich keine Werte angezeigt.

HTML-Code:
<table width="100" border="1">
  <tr>
    <th scope="col">User</th>
    <th scope="col">Spieltag</th>
    <th scope="col">Spiel</th>
    <th scope="col">Score A</th>
    <th scope="col">Score B</th>

  </tr> 
   <?php $tipp=$_POST['wtTipp'];
         foreach($tipp as $var)
         {?> 
         
  <tr>
    <td><?php echo $var['UserName']?></td>
    <td><?php echo $var['Spieltag']; ?></td>
    <td><?php echo $var['SpielID']; ?></td>
    <td><?php echo $var['TippA']; ?></td>
    <td><?php echo $var['TippB']; ?></td>
  </tr><?php   
          }?>
</table>
Wie muss ich die Ausgabe gestalten, damit ich die einzelnen Werte in der Tabelle angezeigt bekomme?

Danke.

Markus

Geändert von mark2911 (03-05-2010 um 23:43 Uhr)
Mit Zitat antworten
  #9 (permalink)  
Alt 03-05-2010, 14:32
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.550
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo,

du packst das Array falsch herum an. Normalerweise ist die erste Dimension der Datensatz und die zweite dessen Felder. Bei dir ist die erste Dimension eine Eigenschaft und die zweite deren Wert für einen bestimmten Datensatz.

Daher musst du auch das foreach sozusagen von hinten schreiben:

PHP-Code:
foreach ($tipp["UserName"] as $key => $dummy) {
    
// hier kannst du jetzt $tipp["sonstwas"][$key] abrufen
    // z. B. $tipp['Spieltag'][$key]

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!
Mit Zitat antworten
  #10 (permalink)  
Alt 03-05-2010, 15:05
mark2911
 Registrierter Benutzer
Links : Onlinestatus : mark2911 ist offline
Registriert seit: May 2010
Beiträge: 13
mark2911 befindet sich auf einem aufstrebenden Ast
Standard

Hi Amica,

Danke.

Du schreibst:

Zitat:
du packst das Array falsch herum an. Normalerweise ist die erste Dimension der Datensatz und die zweite dessen Felder.
Wie müsste ich denn das Array richtig aufbauen?

Gruss
Markus
Mit Zitat antworten
  #11 (permalink)  
Alt 03-05-2010, 15:08
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.550
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hab ich dir doch schon geschrieben. Eine Lösung für deinen Fall (also deine Array-Struktur) ist auch dabei.
__________________
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!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[MySQL 4.0] Mysql Abfrage über zwei Tabellen mit SUM und Count abyss SQL / Datenbanken 2 12-06-2008 22:28
[MySQL 4.1] Daten aus zwei Tabellen abfragen cargu SQL / Datenbanken 4 05-05-2007 12:15
[MySQL 4.1] Mit MySQL Beziehungen zwischen zwei Tabellen setzen bigtail SQL / Datenbanken 5 25-10-2003 17:29
[MySQL 3.23.X] Update über zwei tabellen Ole Hofmann SQL / Datenbanken 1 03-08-2003 18:06
MySql 3.23.53: Bug at LEFTJOIN & NULL ?! subnoodle SQL / Datenbanken 2 02-10-2002 12:46

Themen-Optionen
Thema bewerten
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.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

MariaDB 5.5 veröffentlicht
MariaDB 5.5 veröffentlichtDie freie MySQL-Alternative MariaDB wurde in der stabilen Version 5.5.23 veröffentlicht und soll einige Verbesserungen gegenüber Oracles Communityversion von MySQL mitbringen.

16.04.2012 | Berni

Deutsche Yii Framework Community
Deutsche Yii Framework CommunitySeit dem 19.03.2012 gibt es für die Yii PHP Framework Community ein deutsches Zuhause.

20.03.2012 | dhcomputer

 

Aktuelle PHP Scripte

EM 2012 Tipp-Spiel ansehen EM 2012 Tipp-Spiel

Online Tipp-Spiel zur Fussball Europameisterschaft 2012, basierend auf php-Script mit hinterlegter mySql-Datenbank

27.05.2012 tippimnetz | Kategorie: PHP/ Spiele
Advanced Login ansehen Advanced Login

Login-System und Kundenverwaltung, die sich spielend leicht in bestehende Webseiten einbauen lässt und einen enormen Funktionsumfang bietet. Ihre eigene Webseite muss mit Advanced Login nicht umständlich an ein fertiges System angepasst werden.

25.05.2012 Madden | Kategorie: PHP/ Kundenverwaltung
BROM CMS/BelCal 3 ansehen BROM CMS/BelCal 3

Spezielles CMS für Betreiber von Ferienwohnungen. Komplette Seitenerstellung online, Verwaltung mehrerer Objekte, Reservierungssystem mit sofortigem Abgleich im Belegungskalender und vieles mehr bietet dieses Content Management System.

25.05.2012 belcal2 | Kategorie: PHP/ CMS
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 14:11 Uhr.