brauche Webseite ideal für Vereine und Firmen
- 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 07-07-2005, 19:59
Simon9990
 Junior Member
Links : Onlinestatus : Simon9990 ist offline
Registriert seit: May 2004
Beiträge: 69
Simon9990 ist zur Zeit noch ein unbeschriebenes Blatt
Question 2 Mysql Abfragen in Smarty

hi

Also ich habe folgendes Problem.
Ich werde das mit nested sets nicht machen, da ich das System noch nicht ganz verstehe und das auch funktioniert und für meine Zwecke reicht.
Also:

ICh möchte eine Kategorie auslesen und darunter die Dazugehörigen Foren.
Dies habe ich bis jetzt immer so gemacht :
PHP-Code:
<?php
$query_c 
mysql_query("SELECT catname, catid FROM cats ORDER BY sort ASC") or die(mysql_error());
while(
$row_c mysql_fetch_array($query_c))
{
$catsid $row_c['id'];

$query_f mysql_query("SELECT forumsname, forumsdesc, forumsid FROM cats ORDER BY sort ASC") or die(mysql_error());
while(
$row_f mysql_fetch_array($query_f))
{

......

}
}



?>

Und das hat eigentlichg immer super geklappt.
Nur jetzt möchte ich dies mit Smarty realisieren.
Ich hab es schon so probiert:

PHP-Code:
<?php

include("lib/config/mysql.php");

    
error_reporting(E_ALL);
    
define('SMARTY_DIR'$_SERVER['DOCUMENT_ROOT'].'/Boardsystem/lib/templates/');

    require(
SMARTY_DIR.'Smarty.class.php');


    
$smarty = new Smarty;


    
$cats_query mysql_query("SELECT * FROM cats ORDER BY sort ASC") or die(mysql_error());
    
$cats = array(); // leeres Arrayelement erzeugen
    
while($cats_row mysql_fetch_array($cats_query))
    {
        
$cats[] = $cats_row;
        
        
$catsid $cats_row['id'];
        
        
$forums_query mysql_query("SELECT * FROM forums WHERE catsid = '$catsid' ORDER BY sort ASC") or die(mysql_error());
        
$forums = array();
        while(
$for mysql_fetch_array($forums_query))
        {
         
$forums[] = $for;
    

        }
        
        
    }

    
$smarty->assign('cats'$cats); // In Smarty speichern
    
$smarty->assign('foru'$forums);


    
$smarty->display('forums/forums.tpl');

?>
Und die TPL datei:

Code:
<div align="center">
  <table width="95%"  border="0" cellspacing="1" cellpadding="1">
    <tr bgcolor="#666666">
      <td width="3%"><div align="center"></div></td>
      <td width="40%"><strong> Foren</strong></td>
      <td width="11%"><div align="center">Beitr&auml;ge</div></td>
      <td width="11%"><div align="center">Themen</div></td>
      <td width="20%"><div align="center">Letzter Beitrag </div></td>
      <td width="15%"><div align="center">Moderatoren</div></td>
    </tr>
	{foreach from=$cats item=cats_item}
    <tr bgcolor="#999999">
      <td colspan="6">- {$cats_item.catname} </td>
    </tr>
	
	{foreach from=$foru item=forums}
    <tr bgcolor="#CCCCCC">
      <td></td>
      <td>{$forums.forumsname}</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
	
	{/foreach}
	{/foreach}
  </table>
</div>


Nur leider gibt es damit immer falsch aus und werden nur die Foren aus der 2ten Kategorie genommen .


Wie kann ich das machen ?


Gruß Simon
Mit Zitat antworten
  #2 (permalink)  
Alt 07-07-2005, 23:01
Simon9990
 Junior Member
Links : Onlinestatus : Simon9990 ist offline
Registriert seit: May 2004
Beiträge: 69
Simon9990 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Keiner eine Idee ?
Oder kennt jemand eiN Smarty Forum ?
Ich hab gegoogelt aber irgednwie nichts gefunden
Mit Zitat antworten
  #3 (permalink)  
Alt 07-07-2005, 23:33
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.621
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Keiner eine Idee ?
meinst du nicht, dass du mit deiner nachfragen nach ERST 3h ein wenig drängelst?


abgesehen davon ... warum arbeitest du nicht mit JOINs?
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
  #4 (permalink)  
Alt 07-07-2005, 23:40
Simon9990
 Junior Member
Links : Onlinestatus : Simon9990 ist offline
Registriert seit: May 2004
Beiträge: 69
Simon9990 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

HI

Sry, dass ich gedrängelt habe aber mein Thema war schon fast nicht mehr auf der 1ten Seite und fast niemand sieht sich Themen/Beiträge an die im Forum nicht atuell sind.

Hmmm wie funktioniert das mit Joins ?

Hab schon gegoogelt aber finde nur, dass Joins irgendwas ähnliches wie Implode ist/sind

gruß SimonErich
Mit Zitat antworten
  #5 (permalink)  
Alt 08-07-2005, 00:17
fanity
 Junior Member
Links : Onlinestatus : fanity ist offline
Registriert seit: Dec 2004
Ort: Borken
Beiträge: 53
fanity ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ehm es geht um sql inner/left joins. siehe sql forum für beispiele. und ist die mehrzahl von forum nicht foren? ;-)
Mit Zitat antworten
  #6 (permalink)  
Alt 08-07-2005, 07:47
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.621
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
war schon fast nicht mehr auf der 1ten Seite
na und?

nun stelle dir mal vor die du nun verdrängt hast, machen das auch. was dann? alle wollen auf die erste seite.

merke: "nicht drängeln!"
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
  #7 (permalink)  
Alt 19-07-2005, 02:16
Simon9990
 Junior Member
Links : Onlinestatus : Simon9990 ist offline
Registriert seit: May 2004
Beiträge: 69
Simon9990 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hi ich hab jetzt mal die Smarty Docu durch gesehen und bina uf was gestoßen.
Da steht , dass es in Smarty eine Funktion gibt mit der ich nested Sections machen kann.
Nur da steht es nur für Arrays.
und leider sehr ungenau.

Hier mal ein Ausschnitt.


PHP-Code:
{* Sections können unbegrenzt tief verschachtelt werden.
   
Mit verschachtelten 'sections' können Sie auf komplexe Datenstrukturen
   zugreifen 
(wie zum Beispiel multidimensionale Arrays). Im folgenden Beispiel
   ist $contact_type
[customerein Array mit Kontakttypen des aktuellen Kunden. *}
{
section name=customer loop=$custid}
    
id: {$custid[customer]}<br>
    
name: {$name[customer]}<br>
    
address: {$address[customer]}<br>
    {
section name=contact loop=$contact_type[customer]}
        {
$contact_type[customer][contact]}: {$contact_info[customer][contact]}<br>
    {/
section}
    <
p>
{/
section}


AUSGABE:

id1000<br>
nameJohn Smith<br>
address253 N 45th<br>
home phone555-555-5555<br>
cell phone555-555-5555<br>
e-mail: [email]john@mydomain.com[/email]<br>
<
p>
id1001<br>
nameJack Jones<br>
address417 Mulberry ln<br>
home phone555-555-5555<br>
cell phone555-555-5555<br>
e-mail: [email]jack@mydomain.com[/email]<br>
<
p>
id1002<br>
nameJane Munson<br>
address5605 apple st<br>
home phone555-555-5555<br>
cell phone555-555-5555<br>
e-mail: [email]jane@mydomain.com[/email]<br>
<
p
Naja aus einem anderen Tutorial hab ich herausgefunden, dass man diese Sections wie folgt bestimmt:

PHP-Code:
$smarty->assign('name'$array); 

Nun hab ich es mal so probiert:


Index.php
PHP-Code:

$catlooparray 
= array();

$query mysql_query("SELECT catname, id FROM cats ORDER BY sort") or die(mysql_error());
while(
$row mysql_fetch_array($query)){
// assign an array of data
$catlooparray[] = $row['catname'];

$cats_id $row['id'];

$forumslooparray = array();

$query_f mysql_query("SELECT forumsname, id FROM forums WHERE cats_id = '$cats_id' ORDER BY sort") or die(mysql_error());
while(
$row_f mysql_fetch_array($query_f)){
// assign an array of data
$forumslooparray[] = $row['forumsname'];
}


}
$smarty->assign('catloop'$catlooparray);
$smarty->assign('forumsloop'$forumslooparray); 

index.tpl


PHP-Code:

<table>
{
section name=mysec loop=$catloop}
  <
tr bgcolor="#e7e7e7">
    <
td>id: {$catloop[mysec]}&nbsp;</td>
    <
td>&nbsp;</td>
    <
td>&nbsp;</td>
    <
td>&nbsp;</td>
  </
tr>
  {
section name=forums loop=$forumsloop}
  <
tr bgcolor="#0033CC">
    <
td>{$forumsloop[forums]}jo</td>
    <
td>&nbsp;</td>
    <
td>&nbsp;</td>
    <
td>&nbsp;</td>
  </
tr> {/section}
{/
section}
</
table



Doch da kommt leider auch nicht mehr als nur die Kategorien.
Weiss jemand was an diesem Code nicht stimmt oder wie es funtzt ?


Gruß Simon
Mit Zitat antworten
  #8 (permalink)  
Alt 19-07-2005, 05:05
xManUx
 Registrierter Benutzer
Links : Onlinestatus : xManUx ist offline
Registriert seit: Feb 2004
Beiträge: 833
xManUx ist zur Zeit noch ein unbeschriebenes Blatt
Standard

(Warum benutzt du nicht Join?)²

Wenn man schon mysql_fetch_array benutzt, und zu faul ist, selbst ein array aufzubauen, sollte man wenigstens in der Template

Code:
<td>id: {$catloop[mysec].id}&nbsp;</td>
benutzen. Also: *.arrayschlüssel.


(Warum benutzt du nicht Join?)³


Außerdem solltest du
PHP-Code:
while($row mysql_fetch_array($query)){
// assign an array of data
$catlooparray[] = $row;
$forumslooparray = array(); 
es so machen. Und dem zu folge kann das hier ja gar nicht gehen

PHP-Code:
while(--->$row_f<--- = mysql_fetch_array($query_f)){
// assign an array of data
$forumslooparray[] = $row--->?_f?<---['forumsname'];

Aber auch das, solltest du in

PHP-Code:
while($row_f mysql_fetch_array($query_f)){
// assign an array of data
$forumslooparray[] = $row_f;

ändern.


Hat dich schon wer gefragt, warum du nicht JOIN benutzt?
__________________

Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
sondern mit den Augen das Manual zu lesen.


Geändert von xManUx (19-07-2005 um 05:15 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen


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

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

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
belbit LiveSupport Script ansehen belbit LiveSupport Script

Schnellen und unkomplizierten Support im LiveSupport-Chat anbieten. Ohne Datenbank und in wenigen Sekunden installiert.

24.05.2012 EichbaumMedia | Kategorie: PHP/ Chat
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 09:01 Uhr.