php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 30.11.2004, 00:19  
Gast
 
Beiträge: n/a
Standard [Erledigt] [gelöst] MySQL abfrage eingrenzen anhand einer SELECT Auswah

Irgendwie funktioniert das nicht wie es soll, verstehe nicht wie ich zwischen dem select form field & der ausgabe einen Zusammenhang bekommen soll....


die erste if Abfrage soll eine der 2 select boxen behandeln, and der user wählen kann für wieviel Tage er die Events angezeigt haben will, also 3, 7 14 etc etc....das funzt auch recht gut, auch wenn ich der Meinung bin, dass es auch sicher leichter gehen sollte, wie weiss ich aber nicht...

so jetzt zum Problem:

der user soll genauso parallel ein bestimmtes lokal auswählen können und dann nur die events dieses lokals bekommen, über den von ihm bestimmten zeitraum... krieg das irgendwie nicht hin, hat jemand einen Tip?

das habe ich bis jetzt:
PHP-Code:
if ($sortday==1)
    
$Xtage 0;
    else if (
$sortday==3)
        
$Xtage 3;
    else if (
$sortday==7)
        
$Xtage 7;
    else if (
$sortday==14)
        
$Xtage 14;
    else if (
$sortday==31)
        
$Xtage 31;
    else
        
$Xtage 7;
    
    
$db mysql_connect($hostname$username$password)or die("Unable to connect to MySQL");
    
    
$res mysql_db_query("usr_web745_3""select * from events WHERE ev_date BETWEEN CURDATE() AND CURDATE() + INTERVAL $Xtage DAY order by ev_date Asc, ev_time asc, ev_bar asc");
    
$num mysql_num_rows($res);
    echo 
"
 $num Events gefunden
"
;
    
    for (
$i=0$i<$num$i++)
    {
        
$date mysql_result($res$i"ev_date2");
        
$time mysql_result($res$i"ev_time");
        
$bar mysql_result($res$i"ev_bar");
        
$title mysql_result($res$i"ev_title");
        
$info mysql_result($res$i"ev_info");
        
$entry mysql_result($res$i"ev_entry");
        echo 
"$date - $time - $bar - $title - $info - $entry €
"
;
    }
    
mysql_close($db); 

Cheers
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 30.11.2004, 10:34  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Da haben wir wieder einmal das Problem, dass SELECT * FROM nicht nur schlecht ist, sondern auch keine Informationen über die Tabelle liefert. Deshalb muss ich mal davon ausgehen, dass es in der Tabelle ein Attribut ev_lokal gibt (vielleicht ist auch ev_bar gemeint). Und die veralteten Funktionen mysql_result() und mysql_db_query() schmeiss ich auch raus. Das könnte dann etwa so aussehen:
PHP-Code:
switch($sortday)
{
    case 
1:
        
$Xtage 0
        break;
    case 
3:
    case 
7:
    case 
14:
    case 
31:
        
$Xtage $sortday;
        break;
    default:
        
$Xtage 7;
        break;
}   
$db mysql_connect($hostname$username$password) or die("Unable to connect to MySQL: " mysql_error());
mysql_select_db("usr_web745_3") or die("DB not found: " mysql_error());
    
$sql "SELECT ev_date, ev_time, ev_bar, ev_title, ev_info, ev_entry
           FROM events 
           WHERE ev_date BETWEEN CURDATE() AND (CURDATE() + INTERVAL $Xtage DAY)
              AND lokal = $lokal;
           ORDER BY ev_date Asc, ev_time asc, ev_bar asc"
;
$res mysql_query($sql) or die(mysql_error());
$num mysql_num_rows($res);
echo 
"
 $num Events gefunden
"
;   
while(
$obj mysql_fetch_object($res))
{
    echo 
"$obj->ev_date - $obj->ev_time - $$obj->ev_bar - $obj->ev_title - $obj->ev_info - $obj->ev_entry €
"
;
}
mysql_close($db); 
__________________
Gruss
L
lazydog ist offline   Mit Zitat antworten
Alt 30.11.2004, 10:42  
PHS
Erfahrener Benutzer
 
Registriert seit: 06.05.2004
Beiträge: 108
PHS
Standard

jaja, das hat ich ihm auch schon mal in einen anderen beitrag umgeschrieben
PHS ist offline   Mit Zitat antworten
Alt 30.11.2004, 14:24  
Gast
 
Beiträge: n/a
Standard



ich sollte mal mein php4 buch übern haufen schmeissen mir scheint!

@ lazydog, danke sehr!! ich probier das mal aus...

@ PHS, ich weiss ja, aber hab dir eh zurück gepostet dass ich einen error bekomme, deswegen bin ich wieder zum alten zurück....



Hab das jetzt probiert was du mir geschrieben hast lazydog, bekomme aber wieder einen error....

PHP-Code:
You have an error in your SQL syntaxCheck the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY ev_date Asc, ev_time asc, ev_bar asc' at line 5
komm da nicht mit....
  Mit Zitat antworten
Alt 30.11.2004, 14:35  
Erfahrener Benutzer
 
Registriert seit: 05.04.2004
Beiträge: 150
Ohrwurm83
Ohrwurm83 eine Nachricht über ICQ schicken
Standard

zudem schreibt mal elseif zusammen
__________________
Auch eine Faust war einmal eine offene Hand
Ohrwurm83 ist offline   Mit Zitat antworten
Alt 30.11.2004, 15:59  
PHS
Erfahrener Benutzer
 
Registriert seit: 06.05.2004
Beiträge: 108
PHS
Standard

das semikolon hinter AND lokal = $lokal; muß weg
PHS ist offline   Mit Zitat antworten
Alt 30.11.2004, 17:35  
Gast
 
Beiträge: n/a
Standard

ok fehler jetzt behoben, aber es geht noch immer nicht so wie ich meinte...

Also zur erklärung, der User hat 2 select listen in einer form zur verfügung, in dem einen select wählt er die Tage die er angezeigt haben will...das geht ja mittlerweile mit dem switch... aber in der 2ten select form kann er zwischen den bars wählen (ca. 20 bars)...also soll der user entweder die tage oder die bar oder beides zusammen anzeigen lassen können... das funktioniert aber noch nicht mit dem script unten...

da der user ja auch später mal wieder ALLE bars anzeigen lassen will und das kann ich ja nicht mit einer variable über die form schicken oder?


PHP-Code:
switch($sortday

    case 
1
        
$Xtage 0
        break; 
    case 
3
    case 
7
    case 
14
    case 
31
        
$Xtage $sortday
        break; 
    default: 
        
$Xtage 7
        break; 
}    
$db mysql_connect($hostname$username$password) or die("Unable to connect to MySQL: " mysql_error()); 
mysql_select_db("usr_web745_3") or die("DB not found: " mysql_error()); 
     
$sql "SELECT ev_date, ev_date2, ev_time, ev_bar, ev_title, ev_info, ev_entry FROM events WHERE ev_date BETWEEN CURDATE() AND CURDATE() + INTERVAL $Xtage DAY AND ev_bar = $sortbar order by ev_date Asc"
$res mysql_query($sql) or die(mysql_error()); 
$num mysql_num_rows($res); 
echo 
"
 $num Events gefunden
"
;    
while(
$obj mysql_fetch_object($res)) 

    echo 
"$obj->ev_date2 - $obj->ev_time - $$obj->ev_bar - $obj->ev_title - $obj->ev_info - $obj->ev_entry €
"


mysql_close($db); 
  Mit Zitat antworten
Alt 01.12.2004, 10:34  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Bei den Tagen hast du den Default-Wert 7. Bei den Bars musst du, falls keine (oder auch mehrere) eingegeben wurden, dies noch im Programm abhandeln. Wenn du dabei eine Post-Variable $bars hast (die dann typischerweise ein Array ist), kannst du wie folgt vorgehen;
PHP-Code:
if (!isset($_POST['bars']))  // Keine Bar
{
    
$sel_bar '';
}
elsif(count($_POST['bars']) == 1)    // eine Bar
{
    
$sel_bar "AND ev_bar = '" $_POST['bars'][0] . "'";
}
else   
// mehrere
{
     
$sel_bar "AND ev_bar in ('" implode("', '"$_POST['bars']) . "')";        

und die Abfrage lautet dann:
PHP-Code:
$sql "SELECT ev_date, ev_date2, ev_time, ev_bar, ev_title, ev_info, ev_entry 
           FROM events 
           WHERE ev_date BETWEEN CURDATE() AND CURDATE() + INTERVAL $Xtage DAY 
           $sel_bar
           ORDER BY ev_date Asc"

__________________
Gruss
L
lazydog ist offline   Mit Zitat antworten
Alt 01.12.2004, 16:48  
Gast
 
Beiträge: n/a
Standard

hmm...irgendwie funktioniert das auch nicht... hab ich einen fehler gemacht?

also das mit den Tagen geht normal, nur mit den bars geht noch immer nicht...
hier ist einmal mein script: http://www.univiertel.at/test/ev_showall_3.php
da siehst du dass es nicht geht... und der php code hier...

PHP-Code:
switch($sortday

    case 
1
        
$Xtage 0
        break; 
    case 
3
    case 
7
    case 
14
    case 
31
        
$Xtage $sortday
        break; 
    default: 
        
$Xtage 7
        break; 
}  
if (!isset(
$_POST['sortbar']))  // Keine Bar 

    
$sel_bar ''

elseif(
count($_POST['sortbar']) == 1)    // eine Bar 

    
$sel_bar "AND ev_bar = '" $_POST['sortbar'][0] . "'"

else   
// mehrere 

     
$sel_bar "AND ev_bar in ('" implode("', '"$_POST['sortbar']) . "')";         
}
$db mysql_connect($hostname$username$password) or die("Unable to connect to MySQL: " mysql_error()); 
mysql_select_db("usr_web745_3") or die("DB not found: " mysql_error()); 
     
$sql "SELECT ev_date, ev_date2, ev_time, ev_bar, ev_title, ev_info, ev_entry FROM events WHERE ev_date BETWEEN CURDATE() AND CURDATE() + INTERVAL $Xtage DAY $sel_bar order by ev_date Asc"
$res mysql_query($sql) or die(mysql_error()); 
$num mysql_num_rows($res); 
echo 
"
 $num Events gefunden
"
;    
while(
$obj mysql_fetch_object($res)) 

    echo 
"$obj->ev_date2 - $obj->ev_time - $obj->ev_bar - $obj->ev_title - $obj->ev_info - $obj->ev_entry €
"


mysql_close($db); 
  Mit Zitat antworten
Alt 01.12.2004, 17:12  
PHS
Erfahrener Benutzer
 
Registriert seit: 06.05.2004
Beiträge: 108
PHS
Standard

PHP-Code:
<?
switch($sortday

    case 
1
        
$Xtage 0
        break; 
    case 
3
    case 
7
    case 
14
    case 
31
        
$Xtage $sortday
        break; 
    default: 
        
$Xtage 7
        break; 
}
if(!empty(
$_POST['sortbar']))    // eine Bar 

    
$sel_bar "AND ev_bar = '" $_POST['sortbar'] . "'"

else   
// mehrere 

     
$sel_bar "";          

$db mysql_connect($hostname$username$password) or die("Unable to connect to MySQL: " mysql_error()); 
mysql_select_db("usr_web745_3") or die("DB not found: " mysql_error()); 
      
$sql "SELECT ev_date, ev_date2, ev_time, ev_bar, ev_title, ev_info, ev_entry FROM events WHERE ev_date BETWEEN CURDATE() AND CURDATE() + INTERVAL $Xtage DAY ".$sel_bar." order by ev_date Asc"
$res mysql_query($sql) or die(mysql_error()); 
$num mysql_num_rows($res); 
echo 
"
 $num Events gefunden
"
;     
while(
$obj mysql_fetch_object($res)) 

    echo 
"$obj->ev_date2 - $obj->ev_time - $obj->ev_bar - $obj->ev_title - $obj->ev_info - $obj->ev_entry €
\n"


mysql_close($db);
?>
PHS ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] MySql Frage: Problem mit einer etwas lomplexeren Abfrage tomtaz Datenbanken 5 24.06.2008 22:36
[Erledigt] Kein Ergebnis bei SELECT (MySQL 4.1.9) dr.e. Datenbanken 4 15.06.2008 19:54
MySQL Abfrage als PHP class d3rbastl3r PHP Tipps 2008 2 11.06.2008 15:41
[Erledigt] Mysql Insert Select + Concat Hu5eL Datenbanken 14 10.06.2008 10:39
Frage: richtige SQL Abfrage von einer MySQL Spalte die SET werte besitzt Seb PHP Tipps 2008 2 29.05.2008 11:36
[Erledigt] select Abfrage Datenbanken 6 07.02.2006 17:32
Glossar mit MySQL Abfrage PHP Tipps 2006 1 23.01.2006 10:09
komplizierte mysql abfrage php_frage PHP Tipps 2007 5 28.12.2005 17:55
[Erledigt] mysql abfrage über 4 Tabelle - bis 3 geht, bei der 4. habert Datenbanken 2 08.09.2005 11:59
Suche Tipps für Persormance-Steigerung (Geld für Nützliches) Beitragsarchiv 18 16.08.2005 10:57
einfache mysql abfrage und mysql update haut nicht ganz hin djrace PHP Tipps 2005-2 6 12.08.2005 15:28
SELECT Abfrage.... seh den wald nich... center Datenbanken 8 01.06.2005 14:32
Select abfrage in Schleife PHP Tipps 2004 2 20.07.2004 15:37
komplizierte mySQL Abfrage Datenbanken 6 25.06.2004 15:34
[Erledigt] mysql Abfrage Datenbanken 5 18.06.2004 14:16

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
http://www.php.de/datenbanken/13232-erledigt-geloest-mysql-abfrage-eingrenzen-anhand-einer-select-auswah.html, mysql between date, mysql select case, mysql select if else, mysql abfrage eingrenzen, sql zeitraum eingrenzen, php mysql between, mysql date between, mysql between, mysql select case between, is found() select abfrage php, between case mysql, mysql zeitraum abfragen, mysql case, mysql between dates, select break mysql, mysql select $_post, if abfrage mysql connect, mysql date time mit whre auf stunden eingrenzen, sql query zeit eingrenzen

Alle Zeitangaben in WEZ +2. Es ist jetzt 02:28 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.