php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 14.09.2007, 11:54  
Benutzer
 
Registriert seit: 04.03.2006
Beiträge: 51
PHP-Kenntnisse:
Fortgeschritten
frankys9
frankys9 eine Nachricht über MSN schicken
Standard Ausgabe mehrerer Datenbanktabellen in einer HTML Tabelle

Hallo „phpfriends“, ich bastle nun schon eine Weile und komme nicht wirklich weiter.

Zu erst einmal bin ich nicht sicher was in meinem Fall besser ist:

1. ein SQL-Statement mit dem ich alle drei Tabellen abfrage?

SELECT fragen.Ident AS fg_Ident, antworten.Ident AS aw_Ident, kategorie.Ident AS kat_Ident……. FROM fragen,antworten,kategorie WHERE xyz

2. oder mehrere Statements?

SELECT * FROM antworten WHERE xyz
SELECT * FROM fragen WHERE xyz
SELECT * FROM kategorie WHERE xyz

3. oder ganz anders??

Die Werte sollen in ein array $result geschrieben warden. Bis hierhin bekomme ich auch alles so mehr oder weniger gut hin.

Die Ergebnisse aus dem/n SQL Statement/s sollen dann in einer Tabelle ausgegeben warden und genau hier habe ich Probleme!

Ich möchte nun die die Tabelle mit den Daten füttern, bisher habe ich es über for Schleifen in der form versucht:

for ($x=1; $x<count($result); $x++)

So weit so gut, nur muss nun auch selektiert werden welche Werte zueinander gehören und genau da weiß ich nicht weiter.



Könnt ihr mir vielleicht weiterhelfen??
frankys9 ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 14.09.2007, 12:29  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Gratulation, zwei Fehler in einem Wort "phpfrind’s".
Ich glaub du musst weiter ausholen, verstehe nicht so ganz was du vorhast.
Zergling-new ist offline  
Alt 14.09.2007, 13:14  
there's only one psycho
 
Benutzerbild von PsychoEagle
 
Registriert seit: 21.08.2007
Beiträge: 1.283
PHP-Kenntnisse:
Anfänger
PsychoEagle ist ein sehr geschätzer MenschPsychoEagle ist ein sehr geschätzer MenschPsychoEagle ist ein sehr geschätzer Mensch
PsychoEagle eine Nachricht über ICQ schicken PsychoEagle eine Nachricht über Skype™ schicken
Standard

hast du ein wenig Quellcode von deinem bisherigen Stand? Verstehs auch nicht so ganz. Sollen alle Fragen mit derren Antwort auf einer Seite ausgegeben werden oder gehts um die Eintragung in die Datenbank oder wie wo?!

Grüße
Da Psy
__________________
"Weaseling out of things is important to learn. It's what separates us from the animals ... except the weasel." (Homer J. Simpson)
PsychoEagle ist offline  
Alt 14.09.2007, 13:46  
Benutzer
 
Registriert seit: 04.03.2006
Beiträge: 51
PHP-Kenntnisse:
Fortgeschritten
frankys9
frankys9 eine Nachricht über MSN schicken
Standard

Erstmal danke für eure Antwort und sorry für das falschgeschriebene "phpfriends".

Ich versuche mal zu veranschaulichen was genau ich vorhabe.

In meiner Datenbank gibt es unter anderem 3 Tabellen die durch Werte in bestimmten Spalten "verbunden" sind.

Bsp.:
Tabelle kategorie Spalte Ident = Tabelle fragen Spalte Kategorie
Tabelle fragen Spalte Ident = Tabelle antworten Spalte Fragen

Ich möchte nun jede Frage aus einer vorher ausgewählten Kategorie mit den dazugehörenden Antworten in einer Tabelle ausgeben.

Ich habe hier mal die komplette classe gepostet.


PHP-Code:
<?php

class tests
{
    PUBLIC function 
__construct()
    {
        if(
$_GET['sent']=='0')    { $erg=$this->list_questions(); }
        
//if($_GET['sent']=='1')    { $erg=$this->neu(); }
        //if($_GET['sent']=='2')    { $erg=$this->safe_user(); }
        //if($_GET['sent']=='3')    { $erg=$this->delete_user(); }
        //if($_GET['sent']=='4')    { $erg=$this->check_form(); }
    
}
    
    PROTECTED function 
list_questions()
    {
        
$db = new db();
        
$result $db->execute("SELECT *,Bezeichnung FROM fragen,kategorie WHERE fragen.kategorie=".$_GET['Ident']." AND kategorie.Ident=".$_GET['Ident']."");
        
$bgcolor = ($bgcolor == "def") ? "off" "def";
        
var_dump($result);
        
        
$aus='
            <table border="0" width="100%">
            <thead>
            <tr>
                <td>NEUE FRAGE</td>
                <td>Klassenstufe</td>
                <td>FRAGE</td>
                <td>Fach</td>
                <td>IsActiv</td>
                <td></td>
                <td></td>
            </tr>
            </thead>
        '
;
        if(
$db->num_rows()>0)
        {
            
$checked="";
            for(
$i=1$i<=count($result);$i++) {
            if(
$result[$i]['IsActive']==1) { $checked="checked=\"checked\""; }
            
$aus.='
            <tr class="'
.$bgcolor.'" onmouseover="this.className=\'on\'" onmouseout="this.className=\''.$bgcolor.'\'">
                <td>'
.$i.'.</td>
                <td>'
.$result[$i]['Klassenstufe'].'</td>
                <td>[url="javascript:toggle(\''
.$i.'\')"]'.$result[$i]['Frage'].'[/url]</td>
                <td>'
.$result[$i]['Bezeichnung'].'</td>
                <td><input type="checkbox" '
.$checked.' disabled="disabled" name="IsActive" /></td>
                <td>UPDATE</td>
                <td>DELETE</td>
            </tr>
            <tr id="'
.$i.'" style="display:">
                <td></td>
                <td colspan="6">
                    <table border="0" width="100%">
                    <thead style="background:#9cf">
                    <tr>
                        <td>NEU</td>
                        <td>ANTWORT</td>
                        <td>RICHTIG</td>
                        <td>IsActive</td>
                        <td></td>
                        <td></td>
                    <tr>
                    </thead>
                    '
;
                    
$result1$db->execute("SELECT * FROM antworten");
                    for(
$x=1$x<=count($result1);$x++) {
                        
$checked1="";
                        
$checked2="";
                        if(
$result1[$x]['Richtig']==1) { $checked1="checked=\"checked\""; }
                        if(
$result1[$x]['IsActive']==1) { $checked2="checked=\"checked\""; }
                        
$aus.='
                        <tr class="'
.$bgcolor.'" onmouseover="this.className=\'on\'" onmouseout="this.className=\''.$bgcolor.'\'">
                            <td>'
.$i.'.</td>
                            <td>'
.$result1[$x]['Antwort'].'</td>
                            <td><input type="checkbox" '
.$checked1.' disabled="disabled" name="Richtig" /></td>
                            <td><input type="checkbox" '
.$checked2.' disabled="disabled" name="IsActive" /></td>
                            <td>UPDATE</td>
                            <td>DELETE</td>
                        <tr>
                        '
;
                    }
                    
$aus.='
                    </table>
                </td>
            </tr>
            '
;}
            
$aus.="</table>";
        } else {
            
$aus.="";
        }
        echo 
$aus;
    }
}
?>
Mein Ansatz ist sier alles andere als perfekt aber irgendwo muss man ja anfangen.

Ich hoffe mal das ihr jetzt mehr damit anfangen und mir evtl. einen Lösungsweg aufzeigen könnt.

Vielen Dank
Frank
frankys9 ist offline  
Alt 14.09.2007, 14:12  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Du hast also je eine eins-zu-viele Beziehung (1:n) bei Kategorie:Fragen und bei Fragen:Antworten?

Dann würde ich die Datenbank-Abfrage in 3 Queries aufteilen, weil du 1:n Beziehungen sowieso nicht sinnvoll in einem Query verknüpfen kannst, weil du ja eine zweidimensionale Ergebnismenge (Zeilen/Spalten) hast; eine Zeile verknüpft auf eine weitere beliebig große Ergebnismenge kann nicht sinnvoll in diesem Konzept untergebracht werden.

Ich würde deshalb 3 Abfragen machen, erst die Kategorie, dann ihre Fragen und dann die Antworten auf die Fragen der Kategorie.

Schreib dir einfach eine Klasse:
PHP-Code:
<?php
class QuestionHandler
{
  public function 
getQuestionsByCategories($category_ids);
  {
    if (
is_string($category_ids)) {
      
$category_ids = array($category_ids);
    }
    
$sql sprintf("SELECT * FROM fragen WHERE kategorie IN (%s)"implode(", "$category_ids));
    
// ..
  
}
  public function 
getAnswersByQuestions($question_ids)
  {
     
// ..
  
}
}
?>
Ansprechen kannst du die Kategorie, Fragen und Antworten ja jeweils über ihre eindeutige ID (Primärschlüssel).
Zergling-new ist offline  
Alt 14.09.2007, 16:51  
Benutzer
 
Registriert seit: 04.03.2006
Beiträge: 51
PHP-Kenntnisse:
Fortgeschritten
frankys9
frankys9 eine Nachricht über MSN schicken
Standard

Ich habe es jetzt lösen können

Kleine Fehler große Wirkung!!

Vielen Dank für eure Hilfe!!
frankys9 ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] system() Ausgabe html formatieren pervenches PHP Tipps 2008 3 09.07.2008 10:37
[Erledigt] Php Mysql ausgabe in Tabelle / Gruppentrennung xitam PHP Tipps 2008 3 28.05.2008 22:03
Zeilenanzahl einer tabelle mit WHERE aber ohne schleife? sovereign Datenbanken 13 17.04.2006 20:34
Mehrspaltige ausgabe in einer Tabelle mit while schleife- PHP Tipps 2005-2 1 21.10.2005 14:39
[Erledigt] Ausgabe der Datenabfrage in einer Tabelle? Datenbanken 2 26.09.2005 21:28
html Ausgabe in PHP-Quelle wandeln? PHP Tipps 2005-2 10 25.08.2005 13:06
Bilder in der Datenbank als Ausgabe in HTML? PHP Tipps 2005 8 19.05.2005 14:07
[Erledigt] Ausgabe in html funktioniert nicht!!! Datenbanken 13 14.04.2005 15:58
[Erledigt] HTML Tabellenzeile in Tabelle einfügen? Datenbanken 2 28.01.2005 00:28
Auslesen mySQL tabelle und ausgabe als html Calli PHP Tipps 2004-2 3 21.12.2004 16:51
Ausgabe von zwei Datenbanken in einer Tabelle PHP Tipps 2004-2 16 09.12.2004 21:48
[Erledigt] Sortierung der Ausgabe PHP-Fortgeschrittene 3 08.10.2004 09:22
Einfache Ausgabe aus Tabelle PHP Tipps 2004 5 29.09.2004 10:19
Ausgabe in Tabelle seb-web PHP Tipps 2004 5 23.09.2004 00:03
[Erledigt] Prozedurale Bibliothek für HTML Ausgabe PHP Tipps 2004 0 06.07.2004 11:59

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
html tabelle aus datenbank, datenbanktabellen viele zu eins beziehung, schicke html-tabelle

Alle Zeitangaben in WEZ +1. Es ist jetzt 19:58 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.