php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 07-11-2013, 20:38
Gobo2002
 Registrierter Benutzer
Links : Onlinestatus : Gobo2002 ist offline
Registriert seit: Nov 2013
Beiträge: 17
Gobo2002 befindet sich auf einem aufstrebenden Ast
Standard Bin wohl zu Blond... :(

Hallo, ich bin absoluter Neuling in Sachen PHP und MySQL. Ich habe es inzwischen geschafft eine Datenbank zu erstellen und diese Lustig mit Daten zu füttern. Nun würde ich gerne aus dieser Datenbank bestimmte Datensaätze abfragen und zwar zum Beispiel alle Daten eines bestimmten Tages, zum Beispiel vom 06.11. die in der Zeit zwischen 16:00 und 16:59 eingetragen wurden. Die Spalte heisst starttime. Ich habe es mit
PHP-Code:
SELECT FROM 'datei' WHERE 'starttime' BETWEEN 'Anfang' AND 'Ende'
probiert, es wird auch was gesucht aber kein Ergebnis zurück geliefert. Wie gesagt seht mir bitte die wirklich blöde Frage nach ich bin absolut neu und habe jetzt zwei Stunden im Web und hier im Forum gesucht...

Kann vielleicht jemand nen Stups geben?
Mit Zitat antworten
  #2 (permalink)  
Alt 07-11-2013, 20:47
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.576
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Du solltest Fehlermeldungen, die du vom Datenbankserver bekommst, auch lesen.
Mit Zitat antworten
  #3 (permalink)  
Alt 07-11-2013, 21:19
Gobo2002
 Registrierter Benutzer
Links : Onlinestatus : Gobo2002 ist offline
Registriert seit: Nov 2013
Beiträge: 17
Gobo2002 befindet sich auf einem aufstrebenden Ast
Standard

Ja, wenn da nur welche wären... Er führt die Abfrage kommentarlos aus... Abfragedauer 0,0014 - Das ist alles...
Mit Zitat antworten
  #4 (permalink)  
Alt 07-11-2013, 21:29
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.721
Kropff befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
BETWEEN 'Anfang' AND 'Ende' 
Ich hoffe doch, dass 'Anfang' und 'Ende' korrekte Datumsformate sind. Oder? Zeig doch mal einen echten Query.

Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #5 (permalink)  
Alt 07-11-2013, 21:51
Gobo2002
 Registrierter Benutzer
Links : Onlinestatus : Gobo2002 ist offline
Registriert seit: Nov 2013
Beiträge: 17
Gobo2002 befindet sich auf einem aufstrebenden Ast
Standard

Peter, Genau da fängt ja das Dilemma schon an bei mir... Ich habe dort um das überhaupt zu testen diese Abfrage via PHPadmin gemacht und anstatt der ANfang und Ende Variablen die da später rein sollen die gewünschten Daten eingegeben also: '2013-11-07 16:00:00' und so weiter...

Andre
Mit Zitat antworten
  #6 (permalink)  
Alt 07-11-2013, 22:30
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.721
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Und welches Format hat die Spalte starttime? Ich hoffe doch nicht ein VARCHAR oder dergleichen.

Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #7 (permalink)  
Alt 07-11-2013, 23:27
Gobo2002
 Registrierter Benutzer
Links : Onlinestatus : Gobo2002 ist offline
Registriert seit: Nov 2013
Beiträge: 17
Gobo2002 befindet sich auf einem aufstrebenden Ast
Standard

Nein, die ist DATETIME
Mit Zitat antworten
  #8 (permalink)  
Alt 09-11-2013, 13:06
Guenni61
 Registrierter Benutzer
Links : Onlinestatus : Guenni61 ist offline
Registriert seit: Nov 2011
Ort: Viersen
Beiträge: 128
Guenni61 befindet sich auf einem aufstrebenden Ast
Standard

Hi Gobo,

unter MySQL :: MySQL 5.1 Referenzhandbuch :: 12.5 Datums- und Zeitfunktionen findest du die

verschiedensten Datums-/Zeitfunktionen für mySQL.

date(spalte) z.B. gibt dir das Datum aus '2013-11-07 16:00:00' zurück.
time(spalte) die Uhrzeit.

Good Luck
Günni
Mit Zitat antworten
  #9 (permalink)  
Alt 09-11-2013, 22:55
Gobo2002
 Registrierter Benutzer
Links : Onlinestatus : Gobo2002 ist offline
Registriert seit: Nov 2013
Beiträge: 17
Gobo2002 befindet sich auf einem aufstrebenden Ast
Standard

Hi Günni,

erst mal herzlichen Danke für die Hilfe beim Datensatzlöschen. Klappt super und ich habe den Weg verstanden und inzwischen für meine Anwendung verfeinert! Danke.

Mit der Date und Time Geschichte das ist mir soweit klar. Ich kapier nur im Moment noch nicht so richtig wie ich die schreiben muss, die Abfrage damit der nur die entsprechenden Sätze ausgibt. Ich probier mal weiter...

Puh... In meinem Alter noch soviel lernen...
Mit Zitat antworten
  #10 (permalink)  
Alt 10-11-2013, 07:53
Guenni61
 Registrierter Benutzer
Links : Onlinestatus : Guenni61 ist offline
Registriert seit: Nov 2011
Ort: Viersen
Beiträge: 128
Guenni61 befindet sich auf einem aufstrebenden Ast
Standard

Hi Gobo,

wenn starttime vom Typ datetime ist, so sind ja Datum und Uhrzeit darin enthalten.

Die Abfrage nach Einträgen an einem bestimmten Tag, in einem Zeitraum von Uhrzeit bis Uhrzeit könnte dann so aussehen:

PHP-Code:
select from tabelle WHERE date(starttime) = '2013-12-12' and time(starttimeBETWEEN '12:00' AND '14:00' 
Datum und die Uhrzeiten wären Daten, die von einem Formular gesendet werden:

PHP-Code:
<html>
<head>
<title>Untitled</title>
</head>
<body>
<form action="" method="post">
<input type="text" name="datum" />
<input type="text" name="von" />
<input type="text" name="bis" />
<input type="submit" name="cmd" />
</form>
<?php 
if(isset($_POST['cmd'])){
 
$query 'select * from tabelle where date(starttime)="'.$_POST['datum'].'" and time(starttime) between "'.$_POST['von'].'" and "'.$_POST['bis'].'"';
 
//echo $query.'<br>';
 
$result mysql_query($query);
 if(
mysql_num_rows($result)==0){
  echo 
'Die Anfrage brachte kein Ergebnis';
 exit;
 }else{
  while(
$row mysql_fetch_array($resultMYSQL_ASSOC)){
  echo 
implode(' | '$row).'<br>';
 }
       }
 }
?>
</body>
</html>
Gruß
Günni
Mit Zitat antworten
  #11 (permalink)  
Alt 10-11-2013, 08:50
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.576
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Bitte nicht so einen Schund posten!

Es fehlt der SQL-Escaping und die mysql_* Funktionen sind veraltet. SELECT * sollte nicht verwendet werden. Außerdem hältst du das EVA-Prinzip nicht ein. Ein exit mitten im Programmcode ist böse.


PHP-Code:
<?php

$result 
null;
$error_message '';

if (isset(
$_GET['date'], $_GET['from_time'], $_GET['to_time'])) {
    
$db = new mysqli('localhost''root''''test');
    if (! 
$db) {
        
$error_message 'Datenbankverbindung konnte nicht aufgebaut werden.';
    } else {
        
$db->set_charset('utf8');

        
$from_datetime $_GET['date'] . ' ' $_GET['from_time'];
        
$to_datetime $_GET['date'] . ' ' $_GET['to_time'];
        
        
$sql "
            SELECT foo, bar
            FROM tabelle
            WHERE starttime BETWEEN '" 
$db->escape_string($from_datetime) . "'
            AND '" 
$db->escape_string($to_datetime) . "'
        "
;
        
        
$result $db->query($sql);
        if (! 
$result instanceof mysqli_result) {
            
$error_message 'Datenbankabfrage fehlgeschlagen.';
        }
    }
}

header('Content-Type: text/html; charset=utf-8');

$e = function ($value) {
    return 
htmlspecialchars($valueENT_QUOTES'UTF-8');
};

?><!DOCTYPE html>
<html>
    <head>
        <title>Foobar</title>
    </head>
    <body>
        <form action="" method="get">
            <label>
                Datum: <input type="text" name="date" />
            </label>
            <br />
            <label>
                Von: <input type="text" name="from_time" />
            </label>
            <br />
            <label>
                Bis: <input type="text" name="to_time" />
            </label>
            <br />
            <input type="submit" />
        </form>

        <?php if (! empty($error_message)): ?>
            <p>
                <?php echo $e($error_message); ?>
            </p>
        <?php endif; ?>

        <?php if ($result instanceof mysqli_result): ?>
            <?php if ($result->num_rows == 0): ?>
                <p>
                    Die Suchabfrage brachte ein leeres Ergebnis.
                </p>
            <?php else: ?>
                <ul>
                    <?php while ($row $result->fetch_assoc()): ?>
                        <li>
                            <?php echo $e($row['foo']); ?>;
                            <?php echo $e($row['bar']); ?>
                        </li>
                    <?php endwhile; ?>
                </ul>
            <?php endif; ?>
        <?php endif; ?>
    </body>
</html>
ungetestet

Geändert von h3ll (10-11-2013 um 09:15 Uhr)
Mit Zitat antworten
  #12 (permalink)  
Alt 10-11-2013, 14:14
Gobo2002
 Registrierter Benutzer
Links : Onlinestatus : Gobo2002 ist offline
Registriert seit: Nov 2013
Beiträge: 17
Gobo2002 befindet sich auf einem aufstrebenden Ast
Standard

Hallo h3ll,

funktioniert super. Liefert auch genau mein gewünschtes Ergebnis. Jetzt noch eine Sache an der ich gerade total verzweifel...

Ich lese ja starttime mit aus in der Abfrage der Datenbank. Logischerweise beinhaltet starttime immer den genauen Datumstring: Beispiel: 2013-11-09 14:57:36 - Jetzt möchte ich daraus in der Ausgabe aber nur die Zeit anzeigen und bei der Datumseingabe das richtige, also nicht das Unixdatum eingeben... Ich versuche mich hier mit Dingen wie CONVERT und date_format aber ich glaube ich kapier das nicht. Habe inzwischen alles was ich im Internet gefunden habe durch... Ich versteh einfach nicht was ich falsch mach. Ich bekomme es ja inzwischen hin das er mir die formatierte Ausgabe liefert, aber immmer die aktuelle Zeit, warum übernimmt der das nicht aus starttime... Und wenn immer nunr vom letzten Datensatz... Wuaaaaaahh... Ich werde noch wuschig hier....
Mit Zitat antworten
  #13 (permalink)  
Alt 10-11-2013, 14:28
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Nächstes Mal bitte einen vernünftigen Thread-Titel wählen, der das Problem beschreibt.

Und auch das Problem selber nachvollziehbar beschreiben – in deinem letzten Posting hier bzgl. der Eingabe eines Datums ist wieder viel Gefasel, aber absolut nichts konkretes.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #14 (permalink)  
Alt 11-11-2013, 08:40
Gobo2002
 Registrierter Benutzer
Links : Onlinestatus : Gobo2002 ist offline
Registriert seit: Nov 2013
Beiträge: 17
Gobo2002 befindet sich auf einem aufstrebenden Ast
Standard

Ok wahsaga,

sorry also:

bei meiner Datenbankabfrage bekomme ich alle Daten ausgelesen, möchte aber in der Ausgabe das Datum aus der Variablen starttime formatiert ausgeben, also nur die Uhrzeit.

Bei der Anforderung der Daten, soll der User das deutsche Datumsformat verwenden können, derzeit geht nur das Unixformat, als PHP Neuling bin ich derzeit überfordert.

Ich verwende zur Abfrage den Code oben von h3ll, darum poste ich hier jetzt nicht nochmal den Code.

Wäre für Hilfe sehr dankbar...
Mit Zitat antworten
  #15 (permalink)  
Alt 11-11-2013, 10:57
Gobo2002
 Registrierter Benutzer
Links : Onlinestatus : Gobo2002 ist offline
Registriert seit: Nov 2013
Beiträge: 17
Gobo2002 befindet sich auf einem aufstrebenden Ast
Standard

Ok, das mit dem formatierten Zeitausgabe habe ich gefunden. Wo mache ich jetzt den Fehler? Ich übernehme die Zeit von einem Dropdown. Korrekte Übergabe an PHP funktioniert soweit.

Was ist hier jetzt falsch?

PHP-Code:
    $time $_GET['from_time'];


           if (
$time == 23) {
               
$to_time'23:59';
               }
             else {
                
$to_time++;
            } 
Ich bekomme überhaupt keine Rückmeldung vom Formular, auch keine Fehlermeldung. geht einfach wieder zurück auf die eingabe...

Das oben ist das einzige was ich geändert habe.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
einfach blond schmalle Out of Order 3 10-06-2005 12:25
Wohl erzogen mrhappiness Out of Order 10 20-11-2004 14:26
Ist das weil ich blond bin? mrhappiness Out of Order 9 04-08-2004 11:27
wohl fast schon peinlich...:) zophake SQL / Datenbanken 2 08-06-2002 13:59
ganz einfach -> bin wohl ma wieder zu dumm nicker PHP Developer Forum 3 14-02-2002 16:58

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

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