Autor |
Nachricht |
Account gelöscht
Threadersteller
Ort: -
Alter: -
|
Verfasst Do 07.08.2008 17:43
Titel [php+mysql] abfrage von x bis y |
|
|
hallo leute,
ich kann die lösung nicht greifen, dabei scheint sie so einfach zu sein..
ich hab ne mysql tabelle, aus dieser hole ich mir die daten (ich weiss select * sollte man nicht nutzen aber das ist grad nicht das prob). nach dem auslesen macht er aus tag,monat und jahr das datum alla 01012000 und listet mir dann alles in eine tabelle. soweit funktioniert auch alles!
ich möchte mir jetzt aber nur die einträge anzeigen lassen,welche z.B. von 01012000 bis 01012002 im alter sind...
seit stunden probiere ich rum und im moment habe ich nur noch den ohrwurm der beatles "help, i need somebody.. help...."
hier mal der code:
Code: | <?php
##verbinden
$host="xxx.net";
$user="xxx";
$password="xxx";
$db_name="xxx";
$dz = mysql_connect($host,$user,$password);
mysql_select_db("xxx");
$query = "SELECT * FROM user ORDER BY jahr,monat,tag";
$sql = mysql_query($query) or die($query.' Fehlermeldung der DB: '.mysql_error());
##rausholen
while ($ds = mysql_fetch_object($sql)) {
$id = $ds -> id;
$vorname = $ds -> vorname;
$name = $ds -> name;
$email = $ds -> email;
$tag = $ds -> tag;
$monat = $ds -> monat;
$jahr = $ds -> jahr;
$alter = $tag.$monat.$jahr;
##in tabelle geben
echo "
<table width='100%' border='0' cellspacing='0' cellpadding='0'>
<tr>
<td width='50'>$id</td>
<td width='100'>$vorname</td>
<td width='100'>$name</td>
<td width='250'>$email</td>
<td width='150'>$alter<br></td>
</tr>
</table>";
}
##verbindung zu
mysql_close($dz);
?>
|
|
|
|
|
|
pRiMUS
Dabei seit: 09.09.2003
Ort: Vienna
Alter: 48
Geschlecht:
|
Verfasst Do 07.08.2008 17:54
Titel
|
|
|
den spaltentyp auf datetime oder nur date stellen, dann gehts mit
Code: |
select foo, bar from tabelle where datum between 2008-01-01 and 2008-12-31
|
wahlweise auch mit date_add, date_sub und sonstigen date/time funktionen von mysql arbeiten.
|
|
|
|
|
Anzeige
|
|
|
Account gelöscht
Threadersteller
Ort: -
Alter: -
|
Verfasst Do 07.08.2008 18:28
Titel
|
|
|
jo daran hab ich auch schon gedacht. aber die variable "alter" nach der sortiert werden soll, wird erst nach dem auslesen erstellt... entweder müsste ich
select... where tag between 01 and 31 AND monat between 01 and 12 AND jahr between 2005 and 2006
oder ich sage
$alter = $tag.$monat.$jahr;
$alter = <01012005 >01012006;
geht eins vom beiden irgendwie ?
|
|
|
|
|
sahnemuh
Dabei seit: 19.06.2003
Ort: /dev/null
Alter: 42
Geschlecht:
|
Verfasst Do 07.08.2008 19:18
Titel
|
|
|
im grunde mußt du doch das datum in der while schleife, sowie start- und enddatum
in ein date objekt umwandeln und kannst danach auf größer und kleiner überprüfen.
etwa so:
Code: |
while...
$startdatum = strtotime($deinstartdatum);
$enddatum = strtotime($deinenddatum);
$datum = strtotime($ds->jahr .'.' . $ds->monat . '.' . $ds->tag);
if($datum >= $startdatum && $datum <= $enddatum) {
deine tabelle
}
|
dazu mehr hier:
http://de3.php.net/manual/de/function.strtotime.php
und evtl. hier:
http://de2.php.net/date
Zuletzt bearbeitet von sahnemuh am Do 07.08.2008 19:20, insgesamt 1-mal bearbeitet
|
|
|
|
|
m
Moderator
Dabei seit: 18.11.2004
Ort: -
Alter: -
Geschlecht:
|
Verfasst Do 07.08.2008 21:42
Titel
|
|
|
Oder aber, du wirfst wie von Primus vorgschlagen einfach mal einen Blick auf die MySQL Date and Time Functions,
dazu gibt es eine schöne Doku, und mit diesen ist es super easy wie das Beispiel von Primus zeigt.
|
|
|
|
|
Account gelöscht
Threadersteller
Ort: -
Alter: -
|
Verfasst Do 07.08.2008 22:14
Titel
|
|
|
super! danke für eure Hilfe. Ich habs jetzt so gelöst:
Code: | <form name="form1" method="post" action="">
<table width="200" border="1">
<tr>
<td>Jahr </td>
<td> </td>
</tr>
<tr>
<td><div align="right">von</div></td>
<td><input name="acheck" type="text" size="8" /></td>
</tr>
<tr>
<td><div align="right">bis</div></td>
<td><input name="acheck2" type="text" size="8" /></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Monat</td>
<td> </td>
</tr>
<tr>
<td><div align="right">von</div></td>
<td><input name="acheck3" type="text" size="8" /></td>
</tr>
<tr>
<td><div align="right">bis</div></td>
<td><input name="acheck4" type="text" size="8" /></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Tag</td>
<td> </td>
</tr>
<tr>
<td><div align="right">von</div></td>
<td><input name="acheck5" type="text" size="8" /></td>
</tr>
<tr>
<td><div align="right">bis</div></td>
<td><input name="acheck6" type="text" size="8" /></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="Submit" value="Abschicken" /></td>
</tr>
</table>
</form>
<?php
$wert = $_POST ['wert'];
$acheck = $_POST['acheck'];
$acheck2 = $_POST['acheck2'];
$acheck3 = $_POST['acheck3'];
$acheck4 = $_POST['acheck4'];
$acheck5 = $_POST['acheck5'];
$acheck6 = $_POST['acheck6'];
echo "Mitglieder zwischen den Jahren $acheck und $acheck2, den Monaten $acheck3 und $acheck4, sowie den Tagen $acheck5 und $acheck6<br/><br />";
##verbinden
[b]$query = "SELECT * FROM user WHERE jahr BETWEEN $acheck AND $acheck2 AND monat BETWEEN $acheck3 AND $acheck4 AND tag BETWEEN $acheck5 AND $acheck6
";
$sql = mysql_query($query) or die($query.' Fehlermeldung der DB: '.mysql_error());
[/b]
##rausholen
while ($ds = mysql_fetch_object($sql)) {
$id = $ds -> id;
$vorname = $ds -> vorname;
$name = $ds -> name;
$email = $ds -> email;
$tag = $ds -> tag;
$monat = $ds -> monat;
$jahr = $ds -> jahr;
$alter = $tag.$monat.$jahr;
##in tabelle geben
echo "
<table width='100%' border='0' cellspacing='0' cellpadding='0'>
<tr>
<td width='50'>$id</td>
<td width='100'>$vorname</td>
<td width='100'>$name</td>
<td width='250'>$email</td>
<td width='150'>$alter<br></td>
</tr>
</table>";
}
##verbindung zu
mysql_close($dz);
?>
|
grüße
Zuletzt bearbeitet von am Do 07.08.2008 22:15, insgesamt 1-mal bearbeitet
|
|
|
|
|
s01iD
Dabei seit: 15.05.2007
Ort: Hamburg
Alter: 37
Geschlecht:
|
Verfasst Do 07.08.2008 23:29
Titel
|
|
|
Und jetzt machst Du Dir bitte noch mal Gedanken über SQL-Injections ...
|
|
|
|
|
pRiMUS
Dabei seit: 09.09.2003
Ort: Vienna
Alter: 48
Geschlecht:
|
Verfasst Fr 08.08.2008 06:59
Titel
|
|
|
mir brennen die augen bei soviel beratungsresistenz
|
|
|
|
|
|
|
|
Ähnliche Themen |
(php-mysql) übergabe von formulardaten und abfrage m. mysql
MySQL Abfrage
MySql abfrage
Fehler bei mySQL abfrage
[PHP]Problem mit Mysql Abfrage
mySQL Abfrage sortiert Jan - Dez wie?
|
|