PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : wer hilft mal einem Anfänger?



ace23
18-11-2002, 18:03
Hallo Leute

da ich nun angefangen habe mich in PHP einzuarbeiten, bzw es zu lernen stehe ich hier vor einem kleinen Problem.

Ich habe mir eine Abfrage gebastelt:

<?PHP
error_reporting(7);

include("config.php");


$db_con = mysql_connect($db_server, $db_user, $db_password) or die(mysql_error());
mysql_select_db($db_name) or die(mysql_error());
$angebote = 'SELECT `sitedescription`,`sitedate`,`sites_userid` FROM `ad` WHERE 1 AND `sites_userid` = 0 ORDER BY `sitedate` ASC LIMIT 0, 30';
$result=mysql_query($angebote);

mysql_close($db_con);


?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<title>Top Angebote</title>
</head>

<body>

<?PHP echo "$result"; ?> <-da sollten dann die ergebnisse stehen die ich haben will.

</body>
</html>
Nun half mir das was ich gelesen habe nícht weiter, darum frage ich hier. Was fehlt mir da noch damit er das richtig anzeigt?

Gaert
18-11-2002, 18:43
Hallo ace23,

$result enthält nur die ID des Querys. Um die Ergebnisse zu bekommmen musst du ein fetch machen.



$wert=mysql_fetch_array($result)


Das gibt dir den ersten gefundenen Wert zurück... falls du mehrere Ergebnisse erwartest loopst du das solange durch bis $wert==false ist.

ace23
18-11-2002, 18:51
Hallo,

ja da sollen dann alle werte die er finden kann erscheinen.

Also genauer gesagt würde es so rauskommen:

Seitenbeschreibung (kleiner Text) dahinter dann in einer weiteren Spalte Seitendatum und dann noch in einer weiteren spalte die seitenuserID.

Also muss das so wie Du schreibst dann in eine schleife oder?

Gaert
18-11-2002, 18:54
So...



while($wert = mysql_fetch_array($result))
{
echo "$wert<br>"
}

ace23
18-11-2002, 19:07
Hm ok,

also da bekomme ich einen parse error, habe aus dem
echo "$wert<br>"
ein echo "$wert<br>"; gemacht

Aber ausgeben tut er im HTML nichts, nur ganz oben kommt dann Array<br>Array<br>

Hm evt ncoht was vergessen?

Gaert
18-11-2002, 19:49
möp.... ich hätt gestern weniger trinken sollen!

Sorry!

Natürlich liefert dein Query ein Array zurück...

die Werte stehen dann in $wert['sitedescription'] usw...

ace23
18-11-2002, 20:04
ok funkelt soweit, aber ich bekomme das nicht ín meinen unten stehenden HTML Code rein.

Xerxes
18-11-2002, 21:07
<html>
....
<?php
echo "<p>" . $wert['sitedescription'] . " - " . $wert['irgendneanderespalte'] . "</p>\n";
?>
</html>
:)

ace23
18-11-2002, 22:09
Hm

also mehr wie das:

Array
Array

- -

gibt der ned aus.

Also so habe ich das nun:

<?PHP
error_reporting(7);

include("config.php");


$db_con = mysql_connect($db_server, $db_user, $db_password) or die(mysql_error());
mysql_select_db($db_name) or die(mysql_error());
$angebote = 'SELECT `sitedescription`,`sitedate`,`f2` FROM `ad` WHERE 1 AND `sites_userid` = 0 ORDER BY `sitedate` ASC LIMIT 0, 30';
$result=mysql_query($angebote);

while($wert = mysql_fetch_array($result))
{
echo "$wert<br>";
}


mysql_close($db_con);


?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<title>Top Angebote</title>
</head>

<body>

<?php
echo "<p>" . $wert['sitedescription'] . " - " . $wert['sitedate'] . " - " . $wert['f2'] . "</p>\n";
?>


</body>
</html>

jwebworks
18-11-2002, 22:32
fast.

richtig ist:


<?PHP
error_reporting(7);
include("config.php");

$db_con = mysql_connect($db_server, $db_user, $db_password) or die(mysql_error());
mysql_select_db($db_name) or die(mysql_error());
$angebote = 'SELECT `sitedescription`,`sitedate`,`f2` FROM `ad` WHERE 1 AND `sites_userid` = 0 ORDER BY `sitedate` ASC LIMIT 0, 30';
$result=mysql_query($angebote);
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<title>Top Angebote</title>
</head>

<body>
<?php
while($wert = mysql_fetch_array($result))
{
echo "<p>" . $wert['sitedescription'] . " - " . $wert['sitedate'] . " - " . $wert['f2'] . "</p>\n";
}
mysql_close($db_con);
?>
</body>
</html>

ace23
18-11-2002, 22:41
Jo nun gehts :)

ich dachte immer das es oben mit rein muss, naja wider was gelernt *g*

Vielen Dank:D

Xerxes
19-11-2002, 12:33
noch zwei sachen:
a) '7' ist kein gültiger wert für error_reporting. musst du 8 nehmen, wenn du auch notices haben willst (sehr zu empfehlen, wird der code sauberer) :)

b) was soll das "...WHERE 1 AND...." in deinem Query bedeuten???

ace23
19-11-2002, 14:32
Gute Frage, ka was das "WHERE 1 AND" dort macht, warscheinlich ein fehler von mir, habs einfach gelöscht :)

jwebworks
19-11-2002, 15:58
hehe :-)

solche sql-befehle baut dir phpMyAdmin zusammen.
das sieht man auch an dem quoting der
tabellenspalten:



z.b. `spalte`


diese where = 1 hängt auch phpMyAdmin mit an.
wäre mal ganz interessant zu wissen, wieso.

cu, stop.h

ace23
19-11-2002, 20:03
ahhhhhh

ja genau das ist es, ich habe ja aufgrund der speziellen abfrage aus den vielen tabellenfeldern phpmyadmin verwendet um den code anzuzeigen, habs dann einfach übernommen. Naja zumindest bei den anderen abfragen ist es noch drinne, aber verändern tut das nix.

ace23
25-11-2002, 14:52
Moin :)

kann mir jemand sagen wie ich es hinbekomme, daß er bei dieser abfrage, wenn er keine einträge finden kann einen bestimmen Satz ausgibt? Ich habe das schon mit "or die" versucht, aber da gibt er nichts aus. Es soll dann so sein, daß der Satz dann im HTML wieder erscheint und dem User sagt es ist nichts vorhanden.

Also hier alter text

$angebote = "SELECT `sitedescription`,`expiredate`,`sitetitle` FROM `ad` WHERE `sites_userid` = $hotelid ORDER BY `sitedate` ASC LIMIT 0, 30";
$result=mysql_query($angebote);

Xerxes
25-11-2002, 15:10
if( !$res = mysql_query( $sql ) )
{
echo "Tja. Das war wohl nix.\n";
}
else
{
echo 'Hier das Ergebnis:';
while( $cont = mysql_fetch_object( $res ) )
{
echo $cont->spalte_a . $cont->spalte_b;
}
}
Alternativ könnte man auch mit mysql_num_rows( $res ) rausfinden, wie viele Zeilen das Ergebnis enthält. Bei 0 gibt man ne Fehlermeldung aus und sonst eben die abgefragten Zeilen. :)

ace23
27-11-2002, 08:40
Moin

bin leider erst jetzt wieder dazu gekommen.
Also irgendwie bekomme ich das noch ned so recht hin, er schreibt mir nun nur noch hin das nix eingetragen ist.

Hier mal das gesammte nochmal:


<?PHP
//########################### TOP ANGEBOTE DB ANFRAGE ANFANG ############################

error_reporting(8);
include("../config.php");
include("hotelid.php");

$db_con=mysql_connect($db_server, $db_user, $db_password) or die(mysql_error());
mysql_select_db($db_name) or die(mysql_error());
$angebote = "SELECT `sitedescription`,`expiredate`,`sitetitle` FROM `ad` WHERE `ad_username` = '$hotelid' ORDER BY `sitedate` ASC LIMIT 0, 30";
$result=mysql_query($angebote);

mysql_close($db_con);
//########################### TOP ANGEBOTE DB ANFRAGE ENDE ############################
?>
Das ist die Abfrage.

<!--//########################### TOP ANGEBOTE ANFANG ############################ -->
<table border="0" bordercolor="#000000"cellspacing="0" cellpadding="0" width="593">
<tr>
<td><IMG SRC="../../../images/blind.gif" WIDTH="150" HEIGHT="10"></td>
<td><IMG SRC="../../../images/blind.gif" WIDTH="15" HEIGHT="10"></td>
<td><IMG SRC="../../../images/blind.gif" WIDTH="90" HEIGHT="10"></td>
<td><IMG SRC="../../../images/blind.gif" WIDTH="15" HEIGHT="10"></td>
<td><IMG SRC="../../../images/blind.gif" WIDTH="308" HEIGHT="10"></td>
<td><IMG SRC="../../../images/blind.gif" WIDTH="15" HEIGHT="10"></td>
</tr>

<tr CLASS="menue">
<td>&nbsp;Titel</td>
<td><IMG SRC="../../../images/blind.gif" WIDTH="10" HEIGHT="10"></td>
<td>&nbsp;Läuft noch bis</td>
<td><IMG SRC="../../../images/blind.gif" WIDTH="10" HEIGHT="10"></td>
<td>&nbsp;Beschreibung</td>
<td>&nbsp;</td>
</tr>
<TR>
<TD colspan=5><HR></TD>
<TD>&nbsp;</TD>
</TR>
<?php

if( !$res = mysql_query( $result ) )
{
echo "Tja. Das war wohl nix.\n";
}
else
{

while($wert = mysql_fetch_array($result))

{

echo "<tr>
<td align=left valign=top class=menue>
" . $wert['sitetitle'] . "</td>
<td>&nbsp;</td>
<td align=center valign=top class=text>
" . $wert['expiredate'] . "</td>
<td>&nbsp;</td>
<td align=left class=text>
" . $wert['sitedescription'] . "</td>
<td>&nbsp;</td>
</tr>
<TR>
<TD colspan=5><HR></TD>
<TD>&nbsp;</TD>
</TR>
\n";
}
}


?>
</table>
<!--//########################### TOP ANGEBOTE ENDE ############################ -->
Das die ausgabe im HTML

Es soll am besten die ausgegebene Tabelle gegen den Text das nix da ist ersetzt werden.
hmhm wenn ich nur selber schon etwas weiter wäre:(

EDIT: Ok habe es hinbekommen, nur ersetzt er mir die tabelle nicht gegen den text.


<?php

if( !$res = mysql_fetch_object( $result ) )
{
echo "<font color=#ff2f11><b>Keine besonderen Angebote vorhanden!</b></font>";
}
else
{
while($wert = mysql_fetch_array($result))
{
echo "<tr>
<td align=left valign=top class=menue>
" . $wert['sitetitle'] . "</td>
<td>&nbsp;</td>
<td align=center valign=top class=text>
" . $wert['expiredate'] . "</td>
<td>&nbsp;</td>
<td align=left class=text>
" . $wert['sitedescription'] . "</td>
<td>&nbsp;</td>
</tr>
<TR>
<TD colspan=5><HR></TD>
<TD>&nbsp;</TD>
</TR>
\n";
}
}
?>

Xerxes
27-11-2002, 16:18
Offenbar hast du noch keine Ahnung, was die einzelnen MySQL-Funktionen bedeuten.... ;)

Also:
mysql_query() führt auf dem server einen mysql-befehl aus. die funktion liefert dir natürlich ein ergebnis. das hab ich bei mir immer in der variable $res gespeichert.
( $res = mysql_query( $sql ); )
dann musst du ja aus diesem ergebnis die einzelnen zeilen raus kriegen. dazu gibt's die funktion mysql_result() (<-- mit der hab ich aber noch nie gearbeitet) und die verschiedenen mysql_fetch_*()-Funktionen.
Am gebräuchlichsten sind hier mysql_fetch_array() und mysql_fetch_object(). erstere gibt dir einen array mit der aktuellen zeile zurück, zweitere ein objekt. beide schieben nach ihrem aufruf den ergebnis-zeiger eins weiter.
als parameter benötigen sie beide das abfrageergebnis. in deinem code ist es in $res gespeichert, du übergibtst aber die variable $result, die natürlich leer ist.

Hier also nochmal ein kleines Beispielscript:

<?php
// Der SQL-Befehl
$sql = "SELECT spalte_a, spalte_b FROM tabelle";

// Der SQL-Befehl wird ausgeführt, das Erbgebnis in $res gespeichert
$res = mysql_query( $sql );

// Wurde kein Ergebnis zurückgeliefert, wird in den if-Zweig gegangen, ansonsten in den else-Zweig
if( !$res )
{
echo "Sorry. Das Ergebnis enhällt 0 Zeilen.";
}
else
{
// Die Schleife wird solange durchlaufen, bis der ergebniszeiger beim letzen datensatz angekommen ist. die zeile wird in dem array $cont[] (wie contents) gespeichert.
while( $cont = mysql_fetch_array( $res ) )
{
echo $cont['spalte_a'] . ' - ' . $cont['spalte_b'];
}
}
?>

Am besten arbeitest du mal ein MySQL-Tutorial durch. Gibts auf www.dynamic-webpages.de

ace23
27-11-2002, 16:24
Ahso

jetzt verstehe ich was Du meinst.
Also wie schon gesagt bin ich dabei mir das ganze Zeugs anzueignen und das ist halt mein erstes script was ich auch gleich verwenden kann:)
Das problem ist nur, daß ich wirklich ned alle Funktionen schon im Kopf habe und wenn ich dann nachschaue blicke ich auch noch ned so recht durch wie nun was gemeint ist. Drumm musste ich nochmal dumm fragen:rolleyes:

Danke für Dein Bsp.

Xerxes
27-11-2002, 18:55
am besten ist es immer, wenn man sich erstmal ein oder zwei tutorials zu einem thema durchliest, bevor man anfängt, damit zu arbeiten. dann bekommt man einen schönen überblick über die generelle funktionalität und die grundsätzlichen funktionen. wenn man das drauf hat, kann man tierfer in die jeweilige materie einsteigen. :-)