php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2004-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 10.12.2004, 19:38  
Gast
 
Beiträge: n/a
Standard Datenbankinhalt ausgeben, finde keinen Fehler

Hallo,

könnt ihr euch mal das hier anschaun? Das Ergebnis unter www.sh.waleb.net/sh/nachrichten.php

Code:
<?php
mysql_connect("sh.waleb.net","xxx","xxx");
mysql_select_db("xxx");
$abfrage=mysql_query("SELECT * FROM nachrichten");
$ca = array();
$cb = array();
while ($titel = mysql_fetch_object($abfrage))
	{
	array_push($ca, $titel->nachrichttitel);
	}
while ($text = mysql_fetch_object($abfrage))
	{
	array_push($cb, $text->nachrichttext);
	}
$anznachrichten=count($ca);
$zaehler = 0;
while($zaehler < $anznachrichten)
    {
    echo $ca[$zaehler],"
";
    echo $cb[$zaehler],"
";
    $zaehler++;
    }
?>
Er gibt nur $ca aus, $cb nicht. Warum?
 
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 10.12.2004, 19:41  
Gast
 
Beiträge: n/a
Standard

PHP-Code:
<?php

mysql_connect
("sh.waleb.net","xxx","xxx");
mysql_select_db("xxx");
$abfrage=mysql_query("SELECT nachrichttitel, nachrichttext FROM nachrichten");
$ca = array();
$cb = array();

while (
$titel mysql_fetch_object($abfrage))
{
    
array_push($ca$titel->nachrichttitel);
    
array_push($cb$text->nachrichttext);
}

$anznachrichten=count($ca);
$zaehler 0;

while(
$zaehler $anznachrichten)
{
     echo 
$ca[$zaehler],"
"
;
     echo 
$cb[$zaehler],"
"
;
     
$zaehler++;
}
?>
 
Alt 10.12.2004, 19:46  
Erfahrener Benutzer
 
Registriert seit: 04.12.2004
Beiträge: 129
Ratte78
Standard

Mit fetch_object holst du einen kpl. Satz nach $titel, soll heißen ALLE Tabellenfelder.

Die 1te while-Schleife besagt folgendes:
Hole solange neue Datensätze bis KEINER mehr zur verfügung steht.
Und die 2te ......

reicht das als Denkanstoß??
__________________
Jede Lösung verändert das Problem.
Ratte78 ist offline  
Alt 10.12.2004, 19:52  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Ratte78
Mit fetch_object holst du einen kpl. Satz nach $titel, soll heißen ALLE Tabellenfelder.

Die 1te while-Schleife besagt folgendes:
Hole solange neue Datensätze bis KEINER mehr zur verfügung steht.
Und die 2te ......

reicht das als Denkanstoß??
Danke
nun klappts:

PHP-Code:
$abfrage=mysql_query("SELECT nachrichttitel FROM nachrichten");
$abfrage2=mysql_query("SELECT nachrichttext FROM nachrichten");
$ca = array();
$cb = array();
while (
$titel mysql_fetch_object($abfrage))
    {
    
array_push($ca$titel->nachrichttitel);
    }
while (
$text mysql_fetch_object($abfrage2))
    {
    
array_push($cb$text->nachrichttext);
    }
$anznachrichten=count($ca);
$zaehler 0;
while(
$zaehler $anznachrichten)
    {
    echo 
$ca[$zaehler],"
"
;
    echo 
$cb[$zaehler],"
"
;
    
$zaehler++;
    }
?> 
Danke nochma!
 
Alt 10.12.2004, 19:56  
Erfahrener Benutzer
 
Registriert seit: 04.12.2004
Beiträge: 129
Ratte78
Standard

Öhm. Freut mich. Aber so wars nicht gemeint.

Der Select war schon OK, du brauchst nur die zwei Felder in EINER Schleife einlesen!

while.... {
array_push($ca, $titel->nachrichttitel);
array_push($cb, $titel->nachrichttext);
}
__________________
Jede Lösung verändert das Problem.
Ratte78 ist offline  
Alt 10.12.2004, 20:00  
Gast
 
Beiträge: n/a
Standard

Hab ich zuerst versucht, aber da hat er auch nur den Titel ausgespuckt
 
Alt 10.12.2004, 20:07  
Erfahrener Benutzer
 
Registriert seit: 04.12.2004
Beiträge: 129
Ratte78
Standard

Nein. Du hast zuerst zwei Schleifen hintereinander geschrieben.

Mit: mysql_fetch_object($abfrage) erstellst du ein Object. Dieses Object ist dann eine Zeile des Ergebnissstrings. In diesem Object hast du jetzt als Eigenschaften (oder Propertys) die Felder deiner Abfrage. Also nachrichttext UND nachrichttitel und da du SELECT * verwendes auch alle anderen Felder.

Der Zugriff erfolgt somit über Object->nachrichttext, Object->nachrichttitel.

Mit der Schleife gehst du jede Zeile des Ergebnisses durch.
__________________
Jede Lösung verändert das Problem.
Ratte78 ist offline  
Alt 10.12.2004, 20:19  
Gast
 
Beiträge: n/a
Standard

Klappt nun und ich verstehs auch )

Aber ich habe ein problem über dessen Lösung ich schon lange grübel:

Ich habe eine Tabelle mit Benutzername und Benutzerid.
In einer 2. Tabelle stehen Senderid (Benutzerid des Senders) und Nachrichtentext und Nachrichtentitel.

Wie komme ich nun von der Senderid zum Benutzernamen?
ich hatte die Idee den Benutzernamen via "SELECT benutzernamen FROM benutzer WHERE benutzerid AS $senderid". Aber dazu brauch ich ja erstmal die Variable $senderid. Ich weiss aber nicht wie ich die erstelle, ich weiss nur wie ich ein Ergebnis einer Abfrage zum Array mache, aber das hilft hier ja nicht viel.
 
Alt 10.12.2004, 20:42  
Erfahrener Benutzer
 
Registriert seit: 04.12.2004
Beiträge: 129
Ratte78
Standard

Dazu musst du die Tabellen verknüpfen. Also Senderid ist gleich Benutzerid.
Du brauchst jetzt also den Namen, den Titel und den Text.

SELECT .benutzer.Name, Nachrichten.Titel, Nachrichten.Text

dann noch angeben woher...

FROM benutzer, nachrichten

..und wie die Tabellen verknpft werden sollen

where benutzer.id = nachrichten.id.

Fertig!

Bedenke das es sich hierbei um einen sog. INNER JOIN handelt. D.h. es werden nur die Sätze angezeigt in denen die id übereinstimmt. Also in beiden Tabellen enthalten ist!

Im übrigen benutzt man "AS" um einem Feld temporär einen anderen Namen zu geben. (Doku ?!?)
__________________
Jede Lösung verändert das Problem.
Ratte78 ist offline  
Alt 11.12.2004, 15:21  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Ratte78
Dazu musst du die Tabellen verknüpfen. Also Senderid ist gleich Benutzerid.
Du brauchst jetzt also den Namen, den Titel und den Text.

SELECT .benutzer.Name, Nachrichten.Titel, Nachrichten.Text

dann noch angeben woher...

FROM benutzer, nachrichten

..und wie die Tabellen verknpft werden sollen

where benutzer.id = nachrichten.id.

Fertig!

Bedenke das es sich hierbei um einen sog. INNER JOIN handelt. D.h. es werden nur die Sätze angezeigt in denen die id übereinstimmt. Also in beiden Tabellen enthalten ist!

Im übrigen benutzt man "AS" um einem Feld temporär einen anderen Namen zu geben. (Doku ?!?)
Hm, ich muss zugeben das ich das nicht wirklich verstanden habe .

Ich habe aber gestern Abend mal versucht mit meinen bisherigen Kenntnissen was zu basteln. Wär lieb wenn ihr euch das mal anschaut (auch ihr Profis sicher darüber lachen werden wie umständlich ich an diese Sache rangehe ), weil ich glaube das es so funktionieren müsste:

PHP-Code:
<?php
//Christopher
session_start(); ?>
<html>
<head>
<title></title>
</head>
<body>






<?php

mysql_connect
("sh.waleb.net","xxx","xxx");
mysql_select_db("xxx");
$abfrage=mysql_query("SELECT nachrichttitel FROM nachrichten");
$abfrage2=mysql_query("SELECT nachrichttext FROM nachrichten");
$abfrage3=mysql_query("SELECT senderid FROM nachrichten");
$abfrage4=mysql_query("SELECT benutzername FROM benutzer");
$abfrage5=mysql_query("SELECT benutzerid FROM benutzer");

//titel-array
$ca = array();
//text-array
$cb = array();
//senderid-array
$cc = array();
//benutzernamen-array
$cd = array();
//benutzerid-array
$ce = array();
//sendername-array
$cf = array();

while (
$titel mysql_fetch_object($abfrage))
    {
    
array_push($ca$titel->nachrichttitel);
    }

while (
$text mysql_fetch_object($abfrage2))
    {
    
array_push($cb$text->nachrichttext);
    }

while (
$senderid2 mysql_fetch_object($abfrage3))
    {
    
array_push($cc$senderid2->senderid);
    }

while (
$benutzernamen2 mysql_fetch_object($abfrage4))
    {
    
array_push($cd$benutzernamen2->benutzername);
    }

while (
$benutzerid2 mysql_fetch_object($abfrage5))
    {
    
array_push($ce$benutzerid2->benutzerid);
    }

$anzbenutzer=count($ce);
$zaehler2=0;
$zaehler3=0;

while (
$zaehler2 $anzbenutzer)
    {
    while (
$zaehler3 $anzbenutzer)
        {
        if (
$ce[$zaehler2] == $cc[$zaehler3])
            {
                
array_push($cf$cd[$zaehler2]);
            }
        
$zaehler3++;
        }
    
$zaehler2++;
    }

$anznachrichten=count($ca);

$zaehler 0;

while(
$zaehler $anznachrichten)
    {
    echo 
$cf[$zaehler]," benutzername,
"
;
    echo 
$ca[$zaehler]," Titel,
"
;
    echo 
$cb[$zaehler]," Text,
"
;
    
$zaehler++;
    }
?>

</body>
</html>
Zur Erklärung wie ich mir das gedacht habe:

Zuerst die 5 Abfragen, welche dann jeweils in ein Array kommen (ja ich weiss das es auch anders geht ).

Dann soll er jeweils die ID des Senders mit allen benutzerids aus der DB vergleichen und wenn sie überein stimmen in ein weiteres Array schreiben.

Dann soll das zuletzt erwähnte Array und der titel und text ausgegeben werden.

Wo ist mein Fehler (abgesehen davon das es mit Sicherheit viel einfacher ginge)?
 
 


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
mysql fehler meldung: basicx Datenbanken 1 22.07.2008 09:48
Fehler zurückschicken Kein Genie PHP Tipps 2008 7 10.06.2008 16:49
verschachtelte Rubriken ausgeben / alle anzeigen prinzli PHP Tipps 2008 3 25.02.2008 22:37
[Erledigt] Mysql Syntax Fehler Datenbanken 3 06.07.2006 09:58
[Erledigt] Seite wird nicht angezeigt, untersch. Fehler bei IE/FF/Safar PHP-Fortgeschrittene 19 31.05.2005 14:52
Ausgeben der Tabelle GrU3nL!nG Datenbanken 2 30.05.2005 15:57
fehler im script oder fehler beim server PHP Tipps 2005 12 21.05.2005 17:04
Blöder MySQL Fehler PHP Tipps 2005 3 15.05.2005 03:14
Fehlermeldung - aber kein fehler... Tschuu HTML, Usability und Barrierefreiheit 16 14.03.2005 15:56
finde fehler trotz manual nicht: SELECT lindner Datenbanken 3 13.03.2005 08:39
Wo liegt der fehler?? PHP-Fortgeschrittene 5 22.12.2004 09:54
[Erledigt] mysql fehler PHP Tipps 2004 2 03.11.2004 00:32
Fehler??? horvath-media PHP Tipps 2004 10 01.11.2004 22:14
Wo ist der Fehler? socke Datenbanken 10 01.11.2004 18:10
kann ich bei Fehler auch MessageBox ausgeben !? PHP Tipps 2004 7 27.07.2004 19:58

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
array_push while schleife, \datenbankinhalt mit php ausgeben\, nachrichttitel

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