Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
DYNAMISHE EINGABE VERGLEICHEN... und ausgeben [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
DYNAMISHE EINGABE VERGLEICHEN... und ausgeben


 
bonaverbb
24-03-2004, 17:29 
 
Hi alle, ich habe folgendes problem:
ich möchte dass der user ein datum angibt.. und dieses datum soll dann benutzt werden um server (und deren eigenschaften) anzuzeigen, die in der datenbank mit dem datum übereinstimmen mit dem was der user eingegeben hatte. 1) nach drücken des SUBMIT buttons wird eine leere seite angezeigt. und 2. wie referrier ich ein datum zu bestimmten objekten in einer datenbank?

folgendes habe ich mir ausgedacht:


if ($type == 'dynamicDate') {
echo "<B>DYNAMIC DATE!<br><br>";
?>
<FORM action="index.php">
Enter Date:
<input date="enter date" type="text" id="dateEnter""><br><br>
<input type="submit" value="get list!"><br>
</FORM><br><br>
<?
$where = "WHERE Maildate = '$dateEntered'";
$dateEntered = date("dateEnter");
}


$where is ein variable was eine einschränkung in dem SELECT statement definiert

also dynamicdate steht als option im menu (man kann auch alle server anzeigen.. dies funktioniert). wenn der user den submit button drückt soll das datum also ausgegeben werden.

folgendes ist wenn der user die server sehen will, die das datum von gestern tragen:


$dayBefore = date("Y-m-d H:i:s",mktime(9,0,0,date('m'),date('d')-1,date('Y')));


wie kann ich sowas dynamish vergleichen? hat jemand eine bessere idee.. ??
:confused:

 
TobiaZ
24-03-2004, 17:31 
 
nur kurz drüber geschaut:

$dateEntered = date("dateEnter");

guck dir mal im Manual die fkt date() an!

 
bonaverbb
24-03-2004, 17:34 
 
Tobiaz: so habe ich es auch gemacht (s.o.)... schon vom handbuch geleitet. :(

 
TobiaZ
24-03-2004, 17:39 
 
scheinst nicht ganz zu verstehen was ich meine. im manual steht was davon, dass als erster parameter die formatierung angegeben werden soll. willst du das aktuelle datum als "dateEntered" formatiert haben? wofür bräuchtest du dann date()?

 
bonaverbb
24-03-2004, 17:52 
 
dateEnter = '2004-3-20' (vom html form)

das ist was der user eingibt (ohne zeitangabe)... dann:

$dateEntered = date("dateEnter");

die daten die der user eingibt in variable $dateEntered packen...

dann:

echo "dateEntered"?

(im php handbook:

$today = date("Ymd"); // 20010310)

und wenn ich nun nicht echo'n will, sondern das datum was eingegeben wird nutzen um daten (mit gleichem datum) aus der datenbank anzeigen zu lassen?

bis jetzt habe ich:

$where = "WHERE Maildate = '$dateEntered'";

aber dies funktioniert nicht! oda ist es :

$dateEntered = date("Ymd"); und dann...

$where = "WHERE Maildate = '$dateEntered'";

 
TobiaZ
24-03-2004, 20:18 
 
hmm, ein paar grundlagen in PHP wären nicht schlecht. In PHP haben variablen grundsäzulich ein $ vorangestellt. Daran solltest du dich schon mal gewöhnen.

 
asp2php
24-03-2004, 22:07 
 
wo ist @goth, hier ist wieder so 'n Fall für dich :D

Nun zu dir @bona
date() hat 2 Argumente. 1. Arg ist ein String, der das Ausgabeformat
bestimmen soll, das 2. Arg. ist optional, wird nicht angegeben, dann wird
die aktuelle Zeit genommen. Liest nochmals (http://de.php.net/manual/de/function.date.php) . Alles klar?

 
bonaverbb
25-03-2004, 09:56 
 
asp2php danke, hat geholfen... :)

 
bonaverbb
25-03-2004, 11:14 
 
jetzt akzeptiert er das datum aber bringt keinen output: bzw keine daten werden ausgegeben...

folgendes habe ich jetzt:



$dateEntered = $HTTP_GET_VARS['dateEnter'];

dateEnter ist der wert den der user im field eintippt.. dann...


$timeStamp = strtotime($dateEntered);
$dayOne = date("Y-m-d", $timeStamp)-86400;
$dayTwo = date("Y-m-d", $timeStamp);

if ($type == 'dynamicDate') {
echo "<B>DYNAMIC DATE!<br><br>";
?>
<FORM action="index.php">
Enter Date:
<input date="enter date" type="text" id="dateEnter""><br><br>
<input type="hidden" name="main" value="results"><input type="hidden" name="type" value="dynamicDate">
<input type="submit" value="get list!"><br>
</FORM><br><br>
<?
$where = "WHERE Maildate >=" . $dayOne . "and Maildate <" . $dayTwo . "";

hier nimmt variable $timeStamp den wert von $dateEntered
...
die select statement:

$sqlQuery = "SELECT id,Server,Result,CONVERT(varchar,Maildate,120),ProblemType,Description FROM BackupResults $where ORDER BY Server, Maildate DESC";

$where definiert nun die zeitspanne wozwischen alle server informationen ausgegeben werden. die headers werden ausgegeben.. aber keine server daten. weiss eine warum? vielen dank im vorraus!

 
wahsaga
25-03-2004, 11:45 
 
Original geschrieben von bonaverbb
$timeStamp = strtotime($dateEntered);
$dayOne = date("Y-m-d", $timeStamp)-86400;
$dayTwo = date("Y-m-d", $timeStamp);
die 86400 sekunden möchtest du natürlich vom wert von $timeStamp abziehen, und erst danach danach diesen wert mit date formatieren:
$dayOne = date("Y-m-d", $timeStamp-86400);


kontrollausgabe echo $sqlQuery; nach der definition dieses strings ergibt dann was?
dieser string in phpmyadmin kopiert und ausgeführt ergibt was?

 
bonaverbb
25-03-2004, 11:58 
 
hey wahsaga, vielen dank für die hilfe....
wo kriege ich phpmyadmin her? was ist das fürn programm?

 
Innuendo
25-03-2004, 11:59 
 
www.phpmyadmin.net

 
bonaverbb
25-03-2004, 12:36 
 
also... ich bekomme folgende fehlermeldung:

No results available, query not executable
[db_error: message="DB Error: syntax error" code=-2
mode=return level=notice prefix="" info="SELECT id,Server,Result,CONVERT
(varchar,Maildate,120),ProblemType,Description FROM
BackupResults WHERE Maildate >= 2004-03-24 09:00 AND
Maildate < 2004-03-25 09:00 ORDER BY Server, Maildate DESC
[nativecode=170 - Line 1: Incorrect syntax near '09'.]"]


und der verantwortliche code dafür ist:

$where = "WHERE Maildate >= " .date("Y-m-d 09:00",
$timeStamp-86400). " AND Maildate < " .date("Y-m-d 09:00", $timeStamp). "";

warum akzeptiert er die zeitangabe nicht? (so ist ein datum doch formatiert, oder?)??

 
asp2php
25-03-2004, 12:56 
 
Ähm ich hab' nicht viel Ahnung von MySQL aber:

ist das auch das Format, welches von deiner DB akzeptiert wird, wenn ja
packt mal die Datumsangabe in ' rein, etwa:

$where = "WHERE Maildate >='" .date("Y-m-d 09:00",
$timeStamp-86400). "' AND Maildate < '" .date("Y-m-d 09:00", $timeStamp). "'";

vielleicht hilfs

 
wahsaga
25-03-2004, 13:07 
 
Original geschrieben von bonaverbb
"SELECT id,Server,Result,CONVERT(varchar,Maildate,120),ProblemType,Description FROM BackupResults WHERE Maildate >= 2004-03-24 09:00 AND Maildate < 2004-03-25 09:00 ORDER BY Server, Maildate DESC"
asp2php hat natürlich recht - das man die fett markierten teile nicht einfach so da rein klatschen kann, sondern als string kennzeichnen muss, sollte doch wohl logisch sein.

 
bonaverbb
25-03-2004, 13:07 
 
hey asp2php,
es funktioniert! UND ich habe was dazugelernt. vielen dank!!!!

:D

wahsaga: logisch ist einem dann nur was wenn er es mal vorher nachvollziehen konnte (im gegensatz zur natürlichen bedeutung wo es ein auf intelligence beruhendes problem zu sein scheint)!!! oda? aba, trotzdem, danke für den hinweis.

 
asp2php
25-03-2004, 13:44 
 
Original geschrieben von bonaverbb
hey asp2php,
es funktioniert! UND ich habe was dazugelernt. vielen dank!!!!

:D

wahsaga: logisch ist einem dann nur was wenn er es mal vorher nachvollziehen konnte (im gegensatz zur natürlichen bedeutung wo es ein auf intelligence beruhendes problem zu sein scheint)!!! oda? aba, trotzdem, danke für den hinweis.

hier muss ich aber @wasaga recht geben, denn es ist logisch, weil:

1. - ein Operator ist
2. Leerzeichen im Argument vorkommt

-> um das Argument "zusammen" zu halten, muss du was dagegen tun,
sonst fängt die DB möglicherweise dann an zu rechnen (etwa 2004-03-24=1997)
und/oder Teile des Arguments als neues Kriterium/Anweisung wertet (wegen Leerzeichen) usw.

 
bonaverbb
25-03-2004, 14:22 
 
ja, wir verstehen uns schon... :huep:
oda sowas ähnliches....

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:42 Uhr.