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! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

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: 3.578
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: 3.578
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: 3.578
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.709
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.709
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

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:31 Uhr.