• Forum geschlossen!
    Das Forum befindet sich im Nur-Lese-Modus. Das Erstellen neuer Themen und Beiträge ist nicht mehr möglich.

PHP / MySQL Problem

Menirules

Super-Moderator
Teammitglied
Mitglied seit
12.05.2002
Beiträge
22.449
Reaktionspunkte
0
Website
www.planet-freak.com
Leute, ich hab eine ziemliche Noob-Frage in Bezug auf PHP.

Ich habe eine MySQL Datenbank aus der ich die Daten mit PHP auslese.
Simpel, funktioniert auch (wär auch schlimm wenn nicht).

Aber nun habe ich ein Problem, das ich nicht haben dürfte, denn ich weiß, dass die Lösung viel zu simpel ist :bigsmile:

Die Datenbank enthält eine Zeile in der ein Buchstabe steht und ich muss daraus ein Wort machen. Beispiel:
Inhalt der Datenbank: M
Was in der PHP Ausgabe stehen soll: meter
Inhalt der Datenbank: K
Was in der PHP Ausgabe stehen soll: Kilometer

Ich bekomms einfach nicht hin. Ich schäme mich :bigsmile:

Wer weiß Rat?
 
Ich verstehe absolut nicht was das was du versuchst für einen Sinn macht

Hast du vielleicht schon Code den du posten kannst?

Denn sonst kann ich dir auch nur sagen:

switch ($datenbank_buchstabe_in_variable) {
case 'M':
echo "Meter";
break;
case 'K':
echo "Kilometer";
break;
}
 
Code habe ich gerade nicht parat.
Habs evtl. schlecht erklärt

Es wird eine Tabelle erzeugt mit den Datensätzen.
Strecke von bis , Entfernung , Maßeinheit
Soll also so aussehen:

Ziel A - Ziel B , 600 Kilometer

Sieht aber so aus:

Ziel A - Ziel B , 600 k

Weil die Datenbank nur ein "k" enthält.
Aber ich glaube, ich habs jetzt schon gecheckt, ich werds dann mal versuchen.
Danke schon mal
 
Menirules hat folgendes geschrieben:

Code habe ich gerade nicht parat.

Habs evtl. schlecht erklärt


Es wird eine Tabelle erzeugt mit den Datensätzen.

Strecke von bis , Entfernung , Maßeinheit

Soll also so aussehen:


Ziel A - Ziel B , 600 Kilometer


Sieht aber so aus:


Ziel A - Ziel B , 600 k


Weil die Datenbank nur ein "k" enthält.

Aber ich glaube, ich habs jetzt schon gecheckt, ich werds dann mal versuchen.

Danke schon mal


Nagut, dann schätze habe ich dir ja schon eine Lösung geboten...

Neben "case" kannst du auch ein "default" angeben, wenn der Wert auf keinen der Cases passt.
 
@Menirules

Wenn es viele Buchstaben sind, dann mach es über Switch/Case sonst ganz Billig über if


also über switch so

$Maßeinheit = datenbankbuchstabe;
switch ($Maßeinheit) {
case m:
$Maßeinheit = "Meter";
break;
case k:
$Maßeinheit= "Kilometer";
break;
case q: $Maßeinheit= "Quantometer :D ";
break;
}

oder über if

$wert = datenbanktausgabe;

if ($Maßeinheit == "m") {
$Maßeinheit= "Meter";
} elseif ($Maßeinheit == "k") {
$Maßeinheit= "kilometer";
} elseif ($Maßeinheit == "z") {
$Maßeinheit= "zentimeter";
}

dann deine normale Ausgabe also

echo $Strecke." ".$Entfernung." ".$Maßeinheit."'\n";
 
Oh mann ich habe viiiiiieeeeelllll zu lange nix mehr mit PHP angestellt :bigsmile:

Ich werde es so mal versuchen, mal schauen ob ich dazu heute noch die Muse habe :)
 
@Menirules

Ist wie Fahrradfahren :D Aber man braucht bestimmt nen Stündchen bis man wieder etwas drin ist^^ Ich hab z.B C++ etwas vergessen und muss da wieder etwas mehr tun :D^^
 
Poa, jetzt hab ich ne knifflige scheisse :bigsmile:

Folgendes:

Ich habe 3 Felder.
In Feld 1 & 3 steht ein gewisser Wert.
In Feld 2 steht ein Datum.

Wenn in Feld 2 nichts steht, oder wenn in Feld 2 das Datum in der Zukunft liegt, soll Feld 1 ausgegeben werden.

Wenn Feld 2 in der Vergangenheit liegt, soll Feld 3 ausgegeben werden.

Uuuuuuuääääääääähhhhhhhhh :bigsmile:
 
so, du musst aber zuerst wissen wie dein Datum formatiert ist, damit du es vergleichen kannst. Hab jetzt die Ymd-Formatierung einfach genommen^^

$today = date("Ymd");
if($Feld2>$today // empty($Feld2))
{
echo $Feld1;
}
elseif($Feld2 < $today)
{
echo $Feld3;
}





// soll oder sein, weil Gamezone die oder-Zeichen nicht ausgibt :D
Und weiß nicht ob PHP NULL verwendet oder einfach '' oder halt über empty. Also =='' oder halt == NULL oder halt empty bei der if-Abfrage
 
Menirules hat folgendes geschrieben:

Poa, jetzt hab ich ne knifflige scheisse :bigsmile:


Folgendes:


Ich habe 3 Felder.

In Feld 1 & 3 steht ein gewisser Wert.

In Feld 2 steht ein Datum.


Wenn in Feld 2 nichts steht, oder wenn in Feld 2 das Datum in der Zukunft liegt, soll Feld 1 ausgegeben werden.


Wenn Feld 2 in der Vergangenheit liegt, soll Feld 3 ausgegeben werden.


Uuuuuuuääääääääähhhhhhhhh :bigsmile:

Ich befürchte einfach mal das du in der Datenbank das Datum "doof" stehen hast, ergo like 15.02.2012. Aber das kriegen wir hin.

Zum Abgleichen von Datum/Zeit am besten immer UNIX-Timestamps benutzen, so gehts am Einfachsten.

Ungetestet sollte das in etwa hinhauen:

//Heutiges Datum mit Uhrzeit 00:00 Uhr als Timestamp
$heute = mktime(0,0,0,date("n"),date("j"),date("Y"));

//Feld 2 Datum in Timestamp, ausgehend von Tag.Monat.Jahr, dazu zerteilen wir das Datum erst in ein Array
$feld2_datumarray = explode('.',$feld2,3);
//..und machen dann nen Timestamp draus
$feld2_timestamp = mktime(0,0,0,$feld2_datumarray[1],$feld2_datumarray[0],$feld2_datumarray[2]);

//Abgleich Fall 1, sonst prüfen auf Fall2
if($feld2 == "" OR $feld2_timestamp > $heute){
echo $feld1;
}
elseif($feld2_timestamp
 
@Shikamaru

Deine Abfragen sind falsch^^ Also wenn in der Zukunft oder Feld2 leer, dann Feld1 ausgeben^^ Und wenn Datum alt dann Feld3.
 
fairplay hat folgendes geschrieben:

@Shikamaru


Deine Abfragen sind falsch^^ Also wenn in der Zukunft oder Feld2 leer, dann Feld1 ausgeben^^ Und wenn Datum alt dann Feld3.

Falsch ist eigentlich nur das $heute besser
$heute = mktime(23,59,59,date("n"),date("j"),date("Y"));

wäre, um den heutigen Tag komplett mit einzuschließen, aber da scheiden sich auch die Geister.

Wenns da kein eindeutiges Ideal gibt, am besten gleich time() für den momentanen Timestamp nehmen.

Ups, doch noch nen Fehler entdeckt, Stealth-Edit ^^
 
Feierabend, ich mach morgen weiter :bigsmile:

Danke aber für die Hilfe. Wenn mein Chef das wüsste. Ich surfe auf Gamezone.
BERUFLICH :bigsmile: :mosh:
 
Menirules hat folgendes geschrieben:

Feierabend, ich mach morgen weiter :bigsmile:


Danke aber für die Hilfe. Wenn mein Chef das wüsste. Ich surfe auf Gamezone.

BERUFLICH :bigsmile: :mosh:

Fun Fact:
Ich mach PHP Programmierung auch beruflich und bin andauernd im Internet um Dinge nachzuschauen, kann mir bis heute z.B. nicht merken, das date("n") der Monat einstellig ist.

Für die Zukunft vielleicht trotzdem merken, das man mit den Manpages auf http://www.php.net/ unglaublich weit kommt dank den Userkommentaren
 
@Shikamaru

Ich meine die Abfrage also

es muss so sein :

Wenn Datum älter dann Feld3.
elseif(... < Heutedatum)



Du hast aber Datum älter oder heute gemacht^^ Also das = muss da weg :D
 
fairplay hat folgendes geschrieben:

@Shikamaru


Ich meine die Abfrage also


es muss so sein :


Wenn Datum älter dann Feld3.

elseif(... < Heutedatum)




Du hast aber Datum älter oder heute gemacht^^ Also das = muss da weg :D


Theoretisch ja, praktisch Ansichtssache, ich wollte sichergehen das der unwahrscheinliche Fall das exakt 00:00:00 getroffen wird abfangen, und habe das eher in der Vergangenheit als in der Zukunft gesehen.

alternativ das = halt nach oben schieben
 
@Shikamaru

Sein Chef will offensichtlich nichts mit "heute" zu tun haben :D Wenn er so eine Aufgabenstellung stellt :D dann darf sich der "Chef" später nicht wundern^^ Der Fehler liegt hier bei der Definition der Aufgabe. Aber eigentlich, wenn "heute" aufs Datum+Uhrzeit festgelegt wird, so muss es dann zu Vergangenheit gehören und dann liegst du richtig :D
 
fairplay hat folgendes geschrieben:

@Shikamaru


Sein Chef will offensichtlich nichts mit "heute" zu tun haben :D Wenn er so eine Aufgabenstellung stellt :D dann darf sich der "Chef" später nicht wundern^^ Der Fehler liegt hier bei der Definition der Aufgabe. Aber eigentlich, wenn "heute" aufs Datum+Uhrzeit festgelegt wird, so muss es dann zu Vergangenheit gehören und dann liegst du richtig :D

Danke für das Zugeständnis ^^.

Habe es schon fast bereut nicht einfach zu sagen "Google halt" oder erstmal wie es so viele Pedanten in Internetforen gerne machen auf alles andere AUSSER der Frage einzugehen mit so Sachen wie:

"Warum gibtst du nicht alle Entfernungen ausschließlich als Meter an!? Deine Datenbank ist Redundant!! Geh wieder Beepworld Seiten zusammenklicken!!!!"

(That said, denk mal drüber nach die Datenbankwerte auf Meter zu eichen ;) )
 
@Shikamaru

Vielleicht liegt es am Datentypen(vielleicht TINYINT oder sowas in der Art :D ) und daher die in Kaufnahme der Redundanz aber Sparsamer ist es auf keinen Fall :D extra nen Char-Feld ist schon heftig :D. Aber schon richtig, bei DB ist Redundanz nicht erwünscht^^
 
Zurück