PHP+MySQL - Abfrage

Hallo, ich bin ja mehr ein PHP-Anfänger,. Mein Problem wäre:

Ich habe die Daten in die DB geschrieben, nun möchte ich die rausholen. Wie programmiere ich aber, wenn in der DB 1 steht, soll mir aufs Display Text „ja“ ausgeben.

Beim feld -> drive

Z.B.:

$sql = „SELECT drive FROM $tbl_entry“;
$res = sql_query($sql)

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

if( ‚drive‘ == 1 )

$drive = „ja“;

else

$drive = „nein“;

$drive = htmlspecialchars($row[8]);

$row_count++;
}

Danke im Voraus!!!

Moin!

Hallo, ich bin ja mehr ein PHP-Anfänger,. Mein Problem wäre:

Ich habe die Daten in die DB geschrieben, nun möchte ich die
rausholen. Wie programmiere ich aber, wenn in der DB 1 steht,
soll mir aufs Display Text „ja“ ausgeben.

Beim feld -> drive

Z.B.:

$sql = „SELECT drive FROM $tbl_entry“;
$res = sql_query($sql)

Erstmal eines: Die Funktion heißt üblicherweise mysql_query(), entsprechend hier schonmal eventuell ein Fehler (es sei denn du hast eine eigene Funktion, als Anfänger ist das aber unwahrscheinlich!?).

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

if( ‚drive‘ == 1 )

Diese Überprüfung macht keinen Sinn, da ‚drive‘ einen String ergibt und dieser niemals gleich dem Integer 1 sein wird. Was du meintest ist wohl eher:

if ( $row[‚drive‘] == 1 )

$drive = „ja“;

else

$drive = „nein“;

$drive = htmlspecialchars($row[8]);

Das hier macht auch wieder keinen Sinn im Bezug auf dein SQL-Statement, denn du fragst nur EINEN Eintrag ab (drive), es wird also niemals ein Feld 9 (man fängt numerisch bei 0 an zu zählen, also 8+1 = Feld 9) geben, wenn du dein SQL-Statement nicht anpasst.

Außerdem: Du beschreibst unmittelbar vorher die Variable $drive mit „ja“ oder „nein“. Welchen Sinn macht es dann $drive mit einem anderen Wert zu befüllen? Eventuell meintest du folgendes:

$drive = htmlspecialchars ($drive);

$row_count++;
}

Danke im Voraus!!!

Ich hoffe das hilft dir ein wenig!?

MfG
Lutz

Hallo, vielen Dank für Deine Unterstützung.

Ich habe ein bestehendes System, das muss ich ja weiterentwickeln. Somit sind die Funktionen da, aber nicht von mir geschrieben!!! (und der Code ist ja mehr als blöööd!!!)

was mir fehlt, ist:

ich habe eine DB-Abfrage:

$sql = „SELECT start_time, end_time, (end_time - start_time), firma, contact, description, name, catering, drive FROM $tbl_entry“;

$res = sql_query($sql);
if (! $res) fatal_error(0, sql_error());

ich habe eine Schleife:

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

if( $enable_periods )
list( $start_period, $start_date) = period_date_string($row[0]);
else
$start_date = time_date_string($row[0]);

if( $enable_periods )
list( , $end_date) = period_date_string($row[1], -1);
else
$end_date = time_date_string($row[1]);

$duration = $row[2] - cross_dst($row[0], $row[1]);
$firma = htmlspecialchars($row[3]);
$description = htmlspecialchars($row[4]);
$contact = htmlspecialchars($row[5]);
$name = htmlspecialchars($row[6]);
$catering = htmlspecialchars($row[7]);
$drive = htmlspecialchars($row[8]);

$row_count++;
}

$enable_periods ? toPeriodString($start_period, $duration, $dur_units) : toTimeString($duration, $dur_units);

?>

Tabelle mit spalten + Spalten-Ausgabe:

<?php echo get_vocab("visitor") ?>

<?php echo get_vocab("start_date") ?>
<?php echo get_vocab("end_date") ?>
<?php echo get_vocab("duration") ?>
<?php echo get_vocab("firma") ?>
<?php echo get_vocab("description") ?>
<?php echo get_vocab("contact")?>
<?php echo get_vocab("namebooker")?>
<?php echo get_vocab("catering_index")?>
<?php echo get_vocab("drive")?>

<?php echo $start_date ?> <?php echo $end_date ?> <?php echo $duration . " " . $dur_units ?> <?php echo nl2br($firma) ?> <?php echo nl2br($contact) ?> <?php echo nl2br($description) ?> <?php echo nl2br($name) ?> <?php echo nl2br($catering) ?> <?php if($row[$drive] == 0)
{ echo get\_vocab("YES") ; } else { echo get\_vocab("NO") ; } ?\> Nun ist das Problem, Wenn in der Datenbank im Feld "drive" 1 steht, dann schreibe mir in der Ausgabe-Tabelle in der Spalte "drive" ja, wenn 0, dann nein!!!

Moin!

Hallo, vielen Dank für Deine Unterstützung.

Ich habe ein bestehendes System, das muss ich ja
weiterentwickeln. Somit sind die Funktionen da, aber nicht von
mir geschrieben!!! (und der Code ist ja mehr als blöööd!!!)

OK, dann passt das erstmal soweit.

was mir fehlt, ist:

ich habe eine DB-Abfrage:

$sql = „SELECT start_time, end_time, (end_time - start_time),
firma, contact, description, name, catering, drive FROM
$tbl_entry“;

Aha, da sind ja die übrigen 8 Felder :smile:

Ich kürze mal den gröbsten Teil weg, der offensichtlich unwichtig ist.

<?php if($row[$drive] == 0)
{ echo get\_vocab("YES") ; } else { echo get\_vocab("NO") ; } ?\>

Du sagtest, dass wenn im Feld drive eine 1 steht, dass dann „YES“ und bei 0 ein „NO“ ausgegeben werden soll? Dann sollte das so gehen:

<?php if($drive == 0)
{ echo "YES" ; } else { echo "NO" ; } ?\>

Wichtig hier: Ich weiß zwar nicht, was die Funktion get_vocab() genau macht, aber es sieht danach aus, als würde sie einen Wert von irgendwo her holen, nachdem man einen anderen Wert übergeben hat (eventuell Sprach-Variablen?). Probieren wir es aber erstmal ohne. Dann sei darauf hingewiesen, dass die IF-Bedingung angepasst wurde. $row[$drive] sagt hierbei sonst aus, dass bei 1 im Feld drive der Inhalt in $row[1] gegen den Wert 0 geprüft wird und bei 0 in driv $row[0]. Das sorgt dann je nach dem welcher Wert in $row[0] bzw $row[1] steht dafür, dass entweder eben das „YES“ oder das „NO“ ausgegeben wird. Der Inhalt vom Feld drive ist hierbei aber nicht direkt ausschlaggebend. Du wolltest ja auf den Wert aus genau diesem Feld (drive) zugreifen, entsprechend musst du nurnoch auf $drive vergleichen, da du weiter oben den Inhalt aus dem Feld ja in genau diese Variable geschrieben hast.

Nun ist das Problem, Wenn in der Datenbank im Feld „drive“ 1
steht, dann schreibe mir in der Ausgabe-Tabelle in der Spalte
„drive“ ja, wenn 0, dann nein!!!

Dann sollte das eigentlich passen!?

MfG
Lutz

Vielen Dank für Dein Tipp, es hat geklappt!!!

Danke!!!

Nun, wie verbinde ich zwei Tabellen:

Tabelle: $tbl_entry - Feld: room_id
mit Tabelle $tbl_room - Feld: room_name

Ich weiss schon, dass es mit INNER JOIN geht, habe aber schon alles ausprobiert!!!

Danke!!

SELECT feldname
FROM tabelle_a
JOIN tabelle_b
ON tabelle_a.room_id = tabelle_b.room_name

Moin!

Hängt vor Allem von der Datenstruktur ab. INNER JOIN verknüpft ALLE Daten der einen Tabelle mit der Anderen und gibt nur die Zeilen zurück, die verknüpft werden konnten. Wenn also in der zweiten Tabelle kien Datensatz zu einem Datensatz in der ersten Tabelle besteht, wird dieser auch nie ausgegeben. Wenn das so sein sollte, müsstest du mit OUTER JOIN arbeiten, in dem Fall würdena uch die Datensätze aus der „linken“ Tabelle ausgegeben, bei der „rechts“ keine Daten vorhanden sind (die Felder sind im Ergebnis dann mit NULL gefüllt).

Ansonsten sollte der Query von lacta passen.

MfG
Lutz

Hallo, vielen Dank!!! Es geht!!!

Nun ist die Frage, wieso spuckt er mir nicht ALLE daten aus der DB???