Auslesen mit platzhalter

Krypton

abgemeldet
14 Juni 2007
813
90
-------------------
|Buch| aktiv|text
-------------------
| ka | 0 | text a
-------------------
| kp | 0 | text b
-------------------
| kb | 1 | text c
--------------

Er soll mir die ganze Tabelle auslesen, aber nur aktiv = 1 anzeigen den text, aktiv = 0 soll er mir einen text anzeigen den ich vorher in einer variable definiert habe:
PHP:
$nullaktiv ="lorem ipsum...";
Aber ich komme leider nicht weiter als das auslesen der datenbank. :(
könnte mir da einer helfen?
 
leider kann ich nicht ganz nachvollziehen, wie die Datenauswertung erfolgen soll, da dazu der Quelltext fehlt

aber folgendes sollte es ja eigentlich grob tun, oder nicht?

PHP:
$showtext = ($row['aktiv'] == 1) ? $row['text'] : $nullaktiv;

du kannst natürlich in der Schleife, in der du das mysql-result durchläufst auch den Arraywert für $row['text'] überschreiben, sollte $row['aktiv'] == 0 sein. Wie gesagt, etwas Quelltext zur bisherigen Verarbeitung wäre angebracht. Allgemein klingt die Abarbeitung aber nach einer einfachen if-Unterscheidung.
 
Ich würde es so machen:

PHP:
$sql = "SELECT Buch, aktiv, text FROM $table ORDER BY $order";

$result = $db->sql_query($sql);
$list_rows = $db->sql_fetchrow($result);

for($i = 0; $i < count($list_rows); $i++)
{

	if($list_rows[$i]['aktiv'] == 1)
	{
		echo $list_rows[$i]['text'];
	}
	else
	{
		echo $nullaktiv;
	}
}

Du liest erstmal alles aus der DB aus und fragst es mit einer Schleife ab.

Ich nutze eine Datenbank-Klasse. Also nicht wundern über das $db->...
 
Meine Tabelle

Habe folgendes gemacht:

PHP:
<?
$nullaktiv = "_";


$list_rows = mysql_fetch_array(db_query("SELECT * FROM vms_hang_wort WHERE anzeigen=1 "));

for($i = 0; $i < count($list_rows); $i++)
{

    if($list_rows[$i]['aktiv'] == 1)
    {
        echo $list_rows[$i]['buchstabe'];
    }
    else
    {
        echo $nullaktiv;
    }
}  

?>
zeigt mir aber nur folgendes an:
11_111______ <- richtig sollte in dem falle sein (da aktiv alle sind = 1) folgendes:
adrian




Dann habe ich folgendes probiert:

PHP:
<?
$nullaktiv = "_";
$row = mysql_fetch_array(db_query("SELECT * FROM vms_hang_wort WHERE anzeigen=1 "));
$showtext = ($row['aktiv'] == 1) ? $row['buchstabe'] : $nullaktiv;  
echo $showtext;
?>
hier zeigt er mir nur :
a
an, obwohl hier die lösung sein sollte
adrian



wenn aktiv = 0 ist soll es an der stelle das einsetzen was in $nullaktiv ist.
 
PHP:
<?
$nullaktiv = "_";


$list_rows = db_query("SELECT * FROM vms_hang_wort WHERE anzeigen=1 ORDER BY richtig");

while($row = mysql_fetch_array($list_rows))
{

    if($row['aktiv'] == 1)
    {
        echo $row['buchstabe'];
    }
    else
    {
        echo $nullaktiv;
    }
}  

?>
 
bei dem zweiten code fehlt noch die for-schleife. sonst wird ja nur für die erste reihe der ergebnissmenge der buchstabe ausgegeben.

PHP:
<?
$nullaktiv = "_";
$row = mysql_fetch_array(db_query("SELECT * FROM vms_hang_wort WHERE anzeigen=1 "));
for($i = 0; $i < count($list_rows); $i++)
{
$showtext = ($row['aktiv'] == 1) ? $row['buchstabe'] : $nullaktiv;  
echo $showtext;
}
?>

du könntest das ganze aber auch mit dem case-befehl direkt im select-teil des sql-statements hinbekommen

stumpi
 
Bevorzuge den code mit der Whileschleife von Jpwfour, der funkioniert genau wie er soll. :) Danke Jpwfour, aber auch den anderen für die denkanstöße