php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 02.03.2007, 14:29  
Kein Genie
Gast
 
Beiträge: n/a
Standard Probleme bei der Umsetzung

Hi,

ich habe ein kleines Problem, bei der Umsetzung einer bestimmten Idee und brauch mal eure Hilfe.
Also, ich gebe Gebäuide aus die in der DB stehen aus, die sieht so aus:

Code:
CREATE TABLE `sg_building` (
  `id` int(15) NOT NULL auto_increment,
  `image_link` varchar(250) collate latin1_general_ci NOT NULL,
  `title` varchar(250) collate latin1_general_ci NOT NULL,
  `description` text collate latin1_general_ci NOT NULL,
  `price` varchar(250) collate latin1_general_ci NOT NULL,
  `time_to_build` varchar(250) collate latin1_general_ci NOT NULL,
  `nation` int(15) NOT NULL,
  `need_other_buildings` smallint(1) NOT NULL,
  `need_research` smallint(1) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=11 ;
Ich gehe sie so aus:

PHP-Code:
echo '<center>        
    <table class="base">
        <tr>
            <td colspan="4" class="base_info_main">Geb&auml;ude</td>
        </tr>'
;
/*auswählen der Gebäudedaten*/

$buildings mysql_query("SELECT id, image_link, title, description, price, need_other_buildings FROM sg_building WHERE nation = '".$_SESSION['user_nation']."'") OR die(mysql_error());
    while(
$buildings_out mysql_fetch_assoc($buildings))
    {
/*prüfen ob andere Gebäude gebauten werden müssen*/
        
if($buildings_out['need_other_buildings'] == '1')
        {
            
$need_other_buildings 
        }        
echo 
'
        <tr>
            <td class="base_info">[img]'
.print_out($buildings_out['image_link']).'[/img]</td>
            <td class="base_info">
                [b]'
.print_out($buildings_out['title']).':[/b]


                '
.print_out($buildings_out['description']).'
            </td>
            <td class="base_info">Preis: '
.print_out($buildings_out['price']).' $</td>
            <td class="base_info">[url="#"]Bauen[/url]</td>
        </tr>'
;        
    }
    
echo 
'    </table></center>
'

So, jetzt komm ich zum Problem, in der Spalte need_other_buildings steht entweder eine 1 oder eine 0. Bei einer 1 müssen erst andere Gebäude vorhanden sein.
Welche Gebäude vorhanden sein müssen, stehen hier:

Code:
CREATE TABLE `sg_building_needs` (
  `id` int(15) NOT NULL auto_increment,
  `building_id` int(15) NOT NULL,
  `Baracken` smallint(1) NOT NULL,
  `Traningspakur` smallint(1) NOT NULL,
  `Schießplatz` smallint(1) NOT NULL,
  `Krankenhaus` smallint(1) NOT NULL,
  `Energie` smallint(1) NOT NULL,
  `Forschungscentrum` smallint(1) NOT NULL,
  `Stargate` smallint(1) NOT NULL,
  `Satellitenschüssel` smallint(1) NOT NULL,
  `Externe Bunker` smallint(1) NOT NULL,
  `Stromzaun` smallint(1) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=11 ;
Doch, wie kann ich das jetzt am besten umsetzten, das er prüft welche Gebäude was brauchen und was nicht.
Dann soll er in dieser Tabelle heir nachsehen, ob der User das schon gebaut hat:

Code:
CREATE TABLE `sg_user_status` (
  `id` int(15) NOT NULL auto_increment,
  `user_id` int(15) NOT NULL,
  `money` varchar(250) collate latin1_general_ci NOT NULL,
  `Baracken` smallint(1) NOT NULL,
  `Traningspakur` smallint(1) NOT NULL,
  `Schießplatz` smallint(1) NOT NULL,
  `Krankenhaus` smallint(1) NOT NULL,
  `Energie` smallint(1) NOT NULL,
  `Forschungscentrum` smallint(1) NOT NULL,
  `Stargate` smallint(1) NOT NULL,
  `Satellitenschüssel` smallint(1) NOT NULL,
  `Externe Bunker` smallint(1) NOT NULL,
  `Stromzaun` smallint(1) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1 ;
Wenn ja, soll er die Geböude ausgeben, wenn nicht dann nicht.
Nur wie mache ich das am besten?

Danke
 
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 02.03.2007, 14:46  
Erfahrener Benutzer
 
Registriert seit: 23.12.2003
Beiträge: 243
mAy^daY
Standard Re: Probleme bei der Umsetzung

Generell ist das kein gutes Tabellenlayout, ich würde dir empfehlen eine Tabelle anzulegen in der alle Gebäude stehen mit ihren Eigenschaften und eine weitere Tabelle mit den Verbindungen zwischen den Gebäuden.

Die zweite Tabelle sieht dann evtl so aus:
geb_id | need_geb_id

Somit kannst du einfach abfragen welches Gebäude noch welches benötigt, falls du eine rekursive Struktur verwenden willst (Geb1 braucht Geb2 und Geb3, Geb3 jedoch braucht noch Geb4) kannst du mal hier nachschauen wie man sowas umsetzen kann:
http://de.wikipedia.org/wiki/Nested_Set

(es gibt dazu auch ein Thread im Forum den ich gerade nicht parat habe)

deine dritte Tabelle könnte dann so aussehen:
user_id | geb_id | geb_status

dort kannst du auslesen wer welches gebäude schon besitzt und evtl den status (falls du sowas noch mit einbeziehen willst)

// EDIT
habs gefunden: http://www.phpfriend.de/forum/ftopic61329.html
Hier geht es um eine Menüstruktur, aber das Prinzip ist ja gleich
mAy^daY ist offline  
Alt 02.03.2007, 15:40  
Kein Genie
Gast
 
Beiträge: n/a
Standard

Das Problem ist nur bei deiner Version, wenn ein Gebäude mehr Sachen braucht als nur ein Gebäude klappt es wieder nicht.
 
Alt 02.03.2007, 15:43  
Erfahrener Benutzer
 
Registriert seit: 13.08.2007
Beiträge: 1.976
KingCrunch befindet sich auf einem aufstrebenden Ast
KingCrunch eine Nachricht über ICQ schicken KingCrunch eine Nachricht über AIM schicken KingCrunch eine Nachricht über MSN schicken KingCrunch eine Nachricht über Yahoo! schicken
Standard

Doch, natürlich!

geb_id | need_geb_id
1 | 3
2 | 3
1 | 4

Da wird von Gebäude 1 die Vorrausetzung Gebäude 3 und 4 erwartet. Ebenso wird Gebäude von Gebäude 1 und 2 benötigt.
__________________
Nicht jeder Fehler ist ein Bug.
KingCrunch 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] Firefox / IE - Probleme HTML, Usability und Barrierefreiheit 5 20.07.2009 17:04
probleme bei internet explorer und firefox igron PHP Tipps 2008 0 12.05.2008 17:27
Probleme mit Umlauten nixdorf Datenbanken 5 15.08.2007 16:06
Probleme bei Speicherung von serialize() Strings Manni2k PHP Tipps 2006 13 15.10.2006 15:06
Probleme mit mbstring extension unter Debian HStev Server, Hosting und Workstations 3 30.08.2006 20:55
Probleme mit Rechteverteilung chmod() per script!!!??? Funky_ PHP Tipps 2006 7 17.06.2006 17:10
Probleme bei der Installation von Turck MMCache tomx992 PHP-Fortgeschrittene 2 27.09.2005 20:31
Probleme beim Datenupload zu meiner Datenbank Datenbanken 3 05.09.2005 19:47
Probleme mit Sonderzeichen... Datenbanken 1 02.08.2005 23:37
[Erledigt] hilfe! probleme mit... PHP Tipps 2005 4 12.04.2005 22:55
[Erledigt] CSV Größe macht Probleme mit php PHP Tipps 2005 5 15.03.2005 21:29
Zwei Rechner ins Netz - Router - Hub - Probleme... imported_Ben Off-Topic Diskussionen 37 13.01.2005 21:36
[Erledigt] Technische Probleme mit Sessions PHP-Fortgeschrittene 4 18.11.2004 14:45
[Erledigt] Probleme mit Fremdsprachen HTML, Usability und Barrierefreiheit 2 21.09.2004 17:11
PHP Bilder in DB / Probleme bei Änderung PHP-Fortgeschrittene 1 05.06.2004 11:20

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php smallint (1), smallint not null

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:35 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.