mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Fr 29.03.2024 14:45 Benutzername: Passwort: Auto-Login

Thema: [php+mysql] abfrage von x bis y vom 07.08.2008


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> [php+mysql] abfrage von x bis y
Seite: 1, 2  Weiter
Autor Nachricht
Account gelöscht
Threadersteller


Ort: -
Alter: -
Verfasst Do 07.08.2008 17:43
Titel

[php+mysql] abfrage von x bis y

Antworten mit Zitat Zum Seitenanfang

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);

?>




*hu hu huu*
 
pRiMUS

Dabei seit: 09.09.2003
Ort: Vienna
Alter: 48
Geschlecht: Männlich
Verfasst Do 07.08.2008 17:54
Titel

Antworten mit Zitat Zum Seitenanfang

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.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Anzeige
Anzeige
Account gelöscht
Threadersteller


Ort: -
Alter: -
Verfasst Do 07.08.2008 18:28
Titel

Antworten mit Zitat Zum Seitenanfang

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: Männlich
Verfasst Do 07.08.2008 19:18
Titel

Antworten mit Zitat Zum Seitenanfang

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
  View user's profile Private Nachricht senden
m
Moderator

Dabei seit: 18.11.2004
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Do 07.08.2008 21:42
Titel

Antworten mit Zitat Zum Seitenanfang

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.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Account gelöscht
Threadersteller


Ort: -
Alter: -
Verfasst Do 07.08.2008 22:14
Titel

Antworten mit Zitat Zum Seitenanfang

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>&nbsp;</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>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td>Monat</td>
      <td>&nbsp;</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>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td>Tag</td>
      <td>&nbsp;</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>&nbsp;</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: Männlich
Verfasst Do 07.08.2008 23:29
Titel

Antworten mit Zitat Zum Seitenanfang

Und jetzt machst Du Dir bitte noch mal Gedanken über SQL-Injections ...
  View user's profile Private Nachricht senden
pRiMUS

Dabei seit: 09.09.2003
Ort: Vienna
Alter: 48
Geschlecht: Männlich
Verfasst Fr 08.08.2008 06:59
Titel

Antworten mit Zitat Zum Seitenanfang

mir brennen die augen bei soviel beratungsresistenz
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
 
Ä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?
Neues Thema eröffnen   Neue Antwort erstellen Seite: 1, 2  Weiter
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.