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 Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 17-06-2007, 14:42
newmac
 Newbie
Links : Onlinestatus : newmac ist offline
Registriert seit: May 2007
Beiträge: 3
newmac ist zur Zeit noch ein unbeschriebenes Blatt
Unhappy doppelte ausgabe vermeiden: wie?

hallo zusammen
ich bossle mir einen einfachen blog zusammen; ich bin kein php-profi und muss oft lange knobeln, bis ich was erreiche. hier aber bleibe ich stecken.

problem:
- zu einem bestimmten beitrag können kommentare abgegeben werden;
- manuell "erteile" ich das ok, indem ich via db-verwaltung in der kommentartabelle die betr. id des beitrages einsetze, nämlich im kommentar.zu_id;
- danach "hängt" sich der kommentar an den beitrag;
- alles klappt bestens, nur: bei jedem kommentar erscheint der beitrag noch einmal. bei vier kommentaren erscheinen vier beiträge;

die tabellen für beiträge und tabellen habe ich also "verknüpft", aber die ausgabe ist unsauber.

ich wäre froh, wenn ich mein ziel erreichen kann, das so nahe liegt.
hier der code, vereinfacht

PHP-Code:
<?
$query 
SELECT beitrag.idkommentar.zu_id 
FROM beitrag
LEFT JOIN kommentar

ON beitrag
.id kommentar.zu_id

ORDER BY beitrag
.datum DESC

$result mysql_query($query); 
$num mysql_numrows($result); 

for (
$i 0$i <$num$i++) 

$row mysql_fetch_array($result); 

echo 
"beitrag"
echo 
"kommentar"
}
?>
Ich weiss, dass die Logik nicht stimmt. resp. dass das Resultat so aussehen muss (mit SELECT DISTINCT erreiche ich auch nichts). im prinzip muss ich ja die kommentare sammeln und dann an den einen beitrag hängen (mit array? aber wie?). nur: so tief geht mein wissen noch nicht.

wer kann mir das verständlich erklären?
__________________
ich frage, also habe ich nix gefunden
mac osx
Mit Zitat antworten
  #2 (permalink)  
Alt 17-06-2007, 15:22
highrise
 Member
Links : Onlinestatus : highrise ist offline
Registriert seit: Apr 2006
Ort: zu Hause *g*
Beiträge: 257
highrise ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Um mal bei deiner Abfrage- und Darstellungslogik zu bleiben (sie tatsächlich nicht die optimalste ist, aber funktionieren sollte), musst du einfach die ausgabe des beitrags an eine bedingung knüpfen...

nämlich soll der beitrag nur beim ersten schleifendurchlauf ausgegeben werden, danach nicht mehr....

PHP-Code:
<?
$query 
SELECT beitrag.idkommentar.zu_id 
FROM beitrag
LEFT JOIN kommentar

ON beitrag
.id kommentar.zu_id

ORDER BY beitrag
.datum DESC

$result mysql_query($query); 
$num mysql_numrows($result); 

for (
$i 0$i <$num$i++) 

$row mysql_fetch_array($result); 

if (!
$i) echo "beitrag"
echo 
"kommentar"
}
?>
zugegeben, das ist jetzt auch nicht gerade feiner code, aber Programmierer sind ja von Natur aus faul...

was passiert: es wird nachgesehen, ob !$i (NOT $i) erfüllt ist, und nur dann wird $beitrag ausgegeben... durch den glücklichen umstand, dass eine Integer = 0 in boolscher Logik zu false evaluiert, wird die Abfrage if (!$i) genau dann erfüllt, wenn $i=0 ist ($i=0 -> false, ergo !$i -> true), was nur im ersten Schleifendurchlauf der Fall ist...

greetz, high
__________________
Good programming is 40% experience, 20% skill, 20% RTFM, 15% caffeine, and 5% attention to detail.
When everything else fails, manipulate the data...
Beschriftungen / Großformatdruck / Werbemittel
Mit Zitat antworten
  #3 (permalink)  
Alt 17-06-2007, 18:33
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

1. Query liest beitrag aus.
2. Query die Kommentare.

Fertig
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #4 (permalink)  
Alt 18-06-2007, 18:38
newmac
 Newbie
Links : Onlinestatus : newmac ist offline
Registriert seit: May 2007
Beiträge: 3
newmac ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hallo zusammen

danke für die antwort. ich habe den (mir bisher unbekannten) if (!$i)-befehl vor der beitragsausgabe gesetzt.

jetzt zeigt es mir den ersten beitrag aus der tabelle - und dann weiter unten kommentare aus der kommentartabelle, die allerdings zu einem anderen beitrag gehören. also insofern wird schon nur ein beitrag gezeigt, allerdings auch nur einen einzigen, den ersten in der tabelle.



@Tobiaz: habe ich schon versucht. resultat: zuerst die beiträge, dann die kommentare ausgegeben. reultat: zuerst alle beiträge, dann alle kommentare.

PHP-Code:
LEFT JOIN kommentar '
ON beitrag.id = kommentar.zu_id'
ORDER BY ..... ; 
haut hier dann nicht hin, also die zuweisung eines kommentars zum jeweiligen beitrag.

__________________
ich frage, also habe ich nix gefunden
mac osx
Mit Zitat antworten
  #5 (permalink)  
Alt 18-06-2007, 18:49
highrise
 Member
Links : Onlinestatus : highrise ist offline
Registriert seit: Apr 2006
Ort: zu Hause *g*
Beiträge: 257
highrise ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ahh okay.. missverständnis...

um den gedanken von Tobiaz mal ausführlicher zu schreiben:

hole beiträge
while (noch ein beitrag da) {
schreibe beitrag
hole kommentrage where beitrag id= aktueller beitrag
while (noch ein kommentar da) {
schreibe kommentar
}
}

so weit verständlich?

oder aber du formulierts deine ausgabebedingung anders (mein Gedanke von vorher)... zum beispiel kannst du dir in einer hilfsvariablen merken, ob ein bestimmter beitrag schon hingeschrieben wurde... statt if (!$i) sowas wie
hole alle beiträge mit kommentaren
while (noch n ergebnis) {
if ($beitragid!=$merker) schreibe beitrag
$merker=$beitragid
schreibe kommentar
}

greetz high
__________________
Good programming is 40% experience, 20% skill, 20% RTFM, 15% caffeine, and 5% attention to detail.
When everything else fails, manipulate the data...
Beschriftungen / Großformatdruck / Werbemittel
Mit Zitat antworten
  #6 (permalink)  
Alt 18-06-2007, 18:54
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

In Blogs ist es meist üblich, dass auf der Übersicht nur die Beiträge stehen und die Kommentare erst auf wunsch, bzw. auf der Detailseite angezeigt werden.
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #7 (permalink)  
Alt 18-06-2007, 19:08
newmac
 Newbie
Links : Onlinestatus : newmac ist offline
Registriert seit: May 2007
Beiträge: 3
newmac ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@ Tobiaz

ja, hast recht

aber neues zu probieren macht die welt abwechslungsreich, genau das wollte ich ja mit dem eigenbau. und der innere schweinehund muss überwunden werden, ich wills hinkriegen, weil ich kurz vor dem ziel bin.

@highrise

... ansonsten könnte ich ja mal den code posten, aber zuerst versuche die neue variante.

danke euch
__________________
ich frage, also habe ich nix gefunden
mac osx
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

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

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:42 Uhr.