Seite 2 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 21 bis 40 von 69

Thema: Mein PHP-Frage-Thread

  1. #21
    Andere Möglichkeit gib das ganze Formular als echo aus dann müsste das auch so funktionieren

  2. #22
    Hast recht, daran hab ich gar nicht gedacht. Aber jetzt bin ich zu faul, das noch umzuschreiben, das mach ich höchstens, wenn sowas nochmal auftritt

    Ich hab aber noch eine Frage. Und zwar bin ich sehr stolz drauf, dass ich jetzt ein Feld für den Namen, einen für den Vornamen und einen für den Eintrag hab. Die werden mir auch alle drei ausgegeben. Und ich habs geschafft, einen Index zu erstellen, um so den ältesten Beitrag nach unten zu packen.
    Hatte aber erst überlegt, es übers Datum zu machen, was ich aber gar nicht kann, weil ich nicht weiß, wie das geht. Mit meiner Lösung bin ich jetzt zufrieden, sie funktioniert ja auch. Aber die tolle Idee mit dem Datum hat sich jetzt leider festgesetzt und jetzt wüsste ich gern, ob es geht (naja wird sicherlich gehen *g*), dass die aktuelle Zeit gespeichert wird, wenn jemand einen Eintrag macht und die hinterher auch mit angezeigt wird, wenn man den Eintrag ausgibt. Aber das möcht ich nur, wenns nicht zuuuuuuu kompliziert und zu viel unübersichtlicher code ist (kann ich mir aber gar nicht wirklich vorstellen). Bis jetzt ist mein Skript nämlich irgendwie schön klein und übersichtlich und ich versteh alles, was ich da tue und das macht mich froh, dann kann ich dem wenigstens hinterher schöne Kommentare in den Code packen *g*
    hoffe, dass mir das jemand (bis) morgen beantworten kann, heute werd ich daran sicher nichts mehr machen, hab keine Lust mehr *g* Aber wär cool, wenn ich das ganze Ding morgen abschließen kann, fehlt dann ja nur noch das Äußere *freu*

  3. #23
    Grundformat:

    PHP-Code:
    $datum date(d.m.Y);
    $uhrzeit date(H:i);
    echo 
    $datum" - ",  $uhrzeit"Uhr"
    Das kann man dann auch noch in einer Variabele speichern und dies dann mit auf die DB packen

    PHP-Code:
    $datum date(d.m.Y);
    $uhrzeit date(H:i);
    $sql "INSERT INTO `wasweissich` (datum, uhrzeit) VALUES ('$datum', '$uhrzeit')";
    $query mysql_query($sql); 

    Geändert von fanrpg (15.07.2005 um 22:11 Uhr)

  4. #24
    -.- nur so am rande es gibt ne erfindung die nent man Timestamp
    damit wird das ganze viel Dynamischer und wenn sie die sekunden angezeigt haben will kann sie das machen oder lassen

  5. #25
    dann halt mit timestamp

    PHP-Code:
    $timestamp time();
    $datum date(d.m.Y$timestamp); 
    $uhrzeit date(H:i$timestamp); 
    $sql "INSERT INTO `wasweissich` (datum, uhrzeit) VALUES ('$datum', '$uhrzeit')"
    $query mysql_query($sql); 

  6. #26
    -.- dann muss ich es Deutlicher sagen

    2 Möglichkeiten

    1,Man nutz den msql internen Timestamp
    2,Man Speicher in die sql db time()

    So das währe doch viel schöner brauch nur 1 feld und ist Variable/Dynamisch

    edit:

    Zitat Zitat
    Aber meine Möglichkeit tuts auch
    Joa aber meine ist Dynamisch ^^

    Geändert von dadie (15.07.2005 um 22:54 Uhr)

  7. #27
    sowas gibts? o.ô



    Aber meine Möglichkeit tuts auch

  8. #28
    Zitat Zitat von fanrpg
    sowas gibts? o.ô



    Aber meine Möglichkeit tuts auch
    Dadies ist aber allgemeingültige Konvention.
    So hätte es auch kein "Index" gebraucht, wovon July sprach.
    Man hätte einfach ab- oder aufsteigend, je nach Gusto nach Timestamp sortieren können da der Timestamp ein kontinuierlich im Wert steigender Integer ist. Kein String ohne Möglichkeit ihn sinnvoll zu sortieren.

    Genug theoretisches Blahblah, hier die Scriptschnipsel:
    Für's Eintragen des Timestamps in die DB-Tabelle:
    PHP-Code:
    $values "'$_POST[name]','$_POST[message]',time()";
    $fields "name,message,timestamp";
    $einfuegen "INSERT INTO comments ($felder) VALUES($inhalt)"
    Ich bin mir jetzt nicht 100% sicher ob time() da an der Stelle funktioniert. Notfalls einfach vorher den Wert von time() (welches immer den aktuellen Timestamp zurückgibt) an eine Variable übergeben und diese dann mit zu den values zu packen.
    Und natürlich noch die Feld- und Variablennamen anpassen. ich hab ja keine Ahnung wie die heißen und welche es gibt.

    Beim Auslesen dann einfach dies tun:
    Angenommen du hast den Timestamp mit mysql_result() aus der Datenbank ausgelesen in die Variable $timestamp hinein.
    PHP-Code:
    echo(date("d.m.Y H:i",$timestamp)); 
    Du siehst, im Grunde sinds nur eine Handvoll mehr Zeilen Code.
    Denk dran in dem DB- und Tabellenerstellungsteil auch das Feld 'timestamp' anlegen zu lassen.


    Hier noch ein "kleiner" Tipp, beachte ihn nur wenn du noch Lust hast dich eingehender mit der Materie zu befassen:
    Soweit ich weiß ist mysql_result() innerhalb einer While-Schleife sehr Performancefressend. Überhaupt ist deine Lösung eher ungünstig.
    Ein besonderes Merkmal deines SELECTs ist ja, das du im Grunde auf alle Felder in deiner Tabelle zugreifst. Also empfehl ich dir mysql_fetch_array.
    Das sähe dann in etwa so aus:
    PHP-Code:
    while($output=mysql_fetch_array($res)){
      echo 
    "$output[na]$output[vn] am date("d.m.Y H:i",$output[timestamp]) <br>
      
    $output[message]";

    Die while()-Schleife ersetzt deine for()-Schleife.
    mysql_fetch_array() liest also alles, was du zuvor mit deinem SELECT in der Datenbanktabelle zum Auslesen angesprochen hast, aus, so lange bist der Lesezeiger beim letzten auszugebenen Datensatz angekommen ist, überschreitet der Lesezeiger den letzten Datensatz, gibt die Funktion mysql_fetch_array() FALSE zurück und beendet damit automatisch die while-Schleife.

    mysql_fetch_array() liest jeweils einen Datensatz in einen sogenannten Array.
    Ich weiß nicht inwieweit du dich bereits mit Arrays auskennst, aber ich unterstell dir einfach mal mangelnde Kenntnisse.
    Ein Array ist im Grunde eine Variable die mehrere Werte haben kann. Stell dir vor eine Variable ist ein Blatt auf das du nur einen Wert schreiben kannst. Ein Array ist dann ein Stapel Blätter und auf jedes dieser Blätter kannst du einen Wert schreiben. Du kannst die einzelnen Blätter auch direkt ansprechen über den sogenannten Key. Der Key ist das, was in der Eckigen Klammer steht. Er bezeichnet jeweils einen Wert.
    mysql_fetch_array() verwendet als key jeweils den Feldnamen. Du kannst nun also mit dem Array jedes Feld ansprechen, solange es auch im SELECT-Statement angewählt wurde. Du brauchst die Felder nicht noch einzelnd mit mysql_result() auslesen.
    Da du alle Felder mit dem * innerhalb des SELECT-Statements ansprichst, kannst du auch auf jedes Feld über den Array zugreifen.

    Wenn du vielelciht noch nach Timestamp sortieren möchtest, also aktuellste Beiträge zuerst oder ältester Beitrag zuerst, mach es so:
    PHP-Code:
    $ausgabe "SELECT * FROM personen ORDER BY personen.timestamp ASC"
    ASC steht für Ascending, aufsteigend.
    DESC steht für Descending, absteigend.

    BTW:
    $ausgabe = "select * from personen;";
    Das Semikolon innerhalb des Strings ist überflüssig, wenn nicht sogar falsch.
    $ausgabe = "SELECT * FROM personen";
    reicht vollkommen.

    BTW²:
    Du machst noch einige Fehler die typisch für mangelnde Erfahrung und Übung sind. Aber ich rieche großes Potential. Auch wenn es eher eine aufs Auge gedrückte Aufgabe ist, scheinst du dich mit Eigeninteresse damit zu beschäftigen. Hör bloß nicht auf mit PHP zu arbeiten.

  9. #29
    Irgendwie klappt das mit der Zeit nicht so ganz. Als Ausgabe hab ich immer 01.01.1970 01:00.
    Ich habs so gemacht, dass ich erst gesagt habe $zeit=time();
    Um zu gucken, ob das auch funktioniert, hab ich mir die Variable ausgeben lassen, da kommt dann ja son schöner Sekundenwert raus, die seit 1970 vergangen sind.
    Aber scheinbar hat er Probleme, das in die Tabelle zu speichern, wieso auch immer?!
    Hab mir die Tabelle in phpmyadmin angeguckt und da steht immer bei jedem Eintrag 0000-00-00 00:00:00.

    Vielleicht hab ich ja auch irgendwo im Code nen Fehler und blick das grad nicht ganz >_<
    Liegt aber vielleicht auch daran, dass ich bei Chocis Variablen teilweise das Gefühl hatte, er hätte sich bei den Namen vertan.

    PHP-Code:
    <html>
    <head>
    </head>
    <body>
    Geben Sie einen vollständigen Datensatz ein und senden Sie das Formular ab:
    <form action = "<?php $PHP_SELF ?>" method = "post">
        <input type="text" name="na"> Name<p>
        <input  name="vn"> Vorname<p>
        <textarea cols="30" rows="4" name="kommentar">
        </textarea><p>
        <input type="submit" name="gesendet">
        <input type="reset">
        </form>
    <?php
    if ($gesendet)
    {
        
    $db mysql_connect("localhost""root");
        
    $db_name gbtest;
        
    $createdb="CREATE DATABASE IF NOT EXISTS " .$db_name;
        
    mysql_query($createdb) or die (mysql_error());
        
    mysql_select_db($db_name);
        
    $ct="CREATE TABLE IF NOT EXISTS personen (nummer INT NOT NULL AUTO_INCREMENT, name VARCHAR(30), vorname VARCHAR(30), `timestamp` TIMESTAMP NOT NULL, eintrag TEXT, INDEX(nummer))";
        
    mysql_query($ct) or die (mysql_error());
             
    $zeit=time();
        
    $arguments "'$_POST[na]','$_POST[vn]', '$zeit', '$_POST[kommentar]'";
        
    $fields "name, vorname, timestamp, eintrag";
             
    $na=trim($na);
        
    $vn=trim($vn);
             
    $kommentar=trim($kommentar);
        if(empty(
    $na)){$fehler="Bitte gib einen Namen ein!";}
        if(empty(
    $vn)){$fehler.="Bitte gib einen Vornamen ein!";}
             if(empty(
    $kommentar)){$fehler.="Bitte erstelle einen Eintrag!";}
        if(
    $fehler)
        {echo 
    $fehler;}
             else
             {
            
    $einfuegen "INSERT INTO personen ($fields) VALUES($arguments)";
            
    mysql_query($einfuegen)or die (mysql_error());
                 
    $ausgabe "select * from personen ORDER BY nummer DESC";
            
    $res mysql_query($ausgabe) or die (mysql_error());
            
    $num mysql_num_rows($res);
               echo 
    "$num Datensätze gefunden<br>";
                 for (
    $i=0$i<$num$i++)
               {
                         
    $na mysql_result($res$i"name");
                         
    $vn mysql_result($res$i"vorname");
                                
    $kommentar mysql_result($res$i"eintrag");
                             
    $datum mysql_result($res$i"timestamp");
                         echo 
    "$na$vn$kommentar";
                             echo(
    date("d.m.Y H:i",$datum));
                             echo 
    "<br>";
               }
             }
    }
    ?>
    </body>
    </html>
    Das mit dem mysql_fetch_array() werd ich wohl erst zum Schluss ändern, wenn der Rest läuft. Hab davon schon gelesen, hatte das nur erstmal so gemacht, weil das das erste war, was mir über den Weg gelaufen ist und mir die Ausgabe präsentiert hatte, wollte ja testen, ob alles klappt und habs dann erstmal drin gelassen ^^
    Ich denke, das mit dem Array werd ich hinkriegen, hoffe ich jedenfalls Wir hatten Arrays auch in Java schonmal.

  10. #30
    Das Problem ist wenn du den SQL Timestamp nimmst musst du den SQL befehlt NOW() nehmen für die jetzige zeit.

    oder du machst aus dem SQL Timestamp ein Intg Feld mit 255 und speicherrst darin den time() code

  11. #31
    Zitat Zitat von dadie
    oder du machst aus dem SQL Timestamp ein Intg Feld mit 255 und speicherrst darin den time() code
    Dir ist bewusst, dass ein (halbwegs aktueller) UNIX-Timestamp nur 10 Stellen hat? Demnach braucht man nur eine INT der Länge 10.

  12. #32
    Zitat Zitat von masterquest
    Dir ist bewusst, dass ein (halbwegs aktueller) UNIX-Timestamp nur 10 Stellen hat? Demnach braucht man nur eine INT der Länge 10.
    Die Sekunden bleiben aber nicht stehn dann währe script für die nägsten paar tausenjahre lauffähig

  13. #33
    Zitat Zitat von dadie
    Die Sekunden bleiben aber nicht stehn dann währe script für die nägsten paar tausenjahre lauffähig
    10-stellige Timestamps sind noch etwas über 9 Jahre lang "aktuell". In ein paar tausend Jahren hast du schon wieder ganz andere Software. Wahrscheinlich hast du die schon lange, bevor du nicht mehr mit 10-stelligen Timestamps auskommst. Notfalls kann man die Tabelle immer noch modifizieren.

  14. #34
    @ July:
    Jo, wie die Kollegen schon sagten musst du den Feldtyp ändern.
    Nur ist ein SQL-Timestamp kein UNIX-Timestamp.
    Schaut euch mal diesen SQL-Timestamp an: 20050716163931
    Wem fällt was auf?
    Tipp: 2005.07.16 16:39:31
    Also nur ein lächerlicher Timestamp-Abklatsch.
    Ich empfehle also INT oder auch TINYTEXT(11) wenn du dich mulmig fühlen würdest mit den lediglich 10 INT-Stellen.

  15. #35
    Man kann trotzdem einfach die MySQL-Funktion UNIX_TIMESTAMP() zum Einfügen des Timestamps benutzen, was ich persönlich sehr viel einfacher finde, als immer eine Variable mit time() zu erstellen und die dann im Query zu verbauen.

    @Topic:
    Welches von den Problemen besteht jetzt noch? o_o
    Ich blick da net so ganz durch...

  16. #36
    Zitat Zitat von dead_orc
    @Topic:
    Welches von den Problemen besteht jetzt noch? o_o
    Ich blick da net so ganz durch...
    Bezüglich des Gästebuch gar keins mehr Die sind soweit alle gelöst. Jetzt muss ich nur noch meine Bilddatenbank erstellen, da hat Choci mir aber in MSN schon was zu gesagt und ihm hab ich vorhin ne PN geschrieben, da werd ich erstmal sehen, was da noch so kommt *hust*
    Danach kommen bestimmt auch hier neue Fragen
    Und danke nochmal an alle, die mir so schön geholfen haben Ist echt klasse, dass man hier so schnell Antworten bekommt.

  17. #37
    Zitat Zitat von dead_orc
    Man kann trotzdem einfach die MySQL-Funktion UNIX_TIMESTAMP() zum Einfügen des Timestamps benutzen, was ich persönlich sehr viel einfacher finde, als immer eine Variable mit time() zu erstellen und die dann im Query zu verbauen.
    Warum ne variable o.O?

    also ich schreibe das immer so
    PHP-Code:
    $query =  "INSERT INTO `tabele` (`feld1`,`feld2`) VALUES('1111','".time()."')"
    wo muss man da ne Variable verschwenden und wie ich oben schon sage es ist ne frage was man lieber hat SQL oder PHP das ergebniss ist aber gleich

  18. #38
    *thread wieder rauskramt*

    Habe eine Frage

    Und zwar muss ich ja noch mein Bilderskript machen. Hab jetzt wieder eine Datenbank angelegt, eine Tabelle und will da einfach den Namen des Bildes einspeichern, bild1.jpg und bild2.jpg und so.
    Hab das auch alles schön mit "INSERT INTO bildpfad (dateiname) VALUES ('bild1.jpg')"
    gemacht, funktioniert auch alles, hab hinterher eine Tabelle mit meinen Bilder drin. Wenn ich aber das Skript aktualisiere, dann speichert der die alle nochmal da rein.
    Kann ich das umgehen? Wenn ja, wie *g*

  19. #39
    Zitat Zitat von July
    *thread wieder rauskramt*

    Habe eine Frage

    Und zwar muss ich ja noch mein Bilderskript machen. Hab jetzt wieder eine Datenbank angelegt, eine Tabelle und will da einfach den Namen des Bildes einspeichern, bild1.jpg und bild2.jpg und so.
    Hab das auch alles schön mit "INSERT INTO bildpfad (dateiname) VALUES ('bild1.jpg')"
    gemacht, funktioniert auch alles, hab hinterher eine Tabelle mit meinen Bilder drin. Wenn ich aber das Skript aktualisiere, dann speichert der die alle nochmal da rein.
    Kann ich das umgehen? Wenn ja, wie *g*
    Überprüfen ob es bereits in die Tabelle eingetragen wurde. Es reicht ja einmal abzufragen ob überhaupt schon etwas in der Datenbanktabelle steht.

    z.B.:
    PHP-Code:
    $get "SELECT * FROM tabelle";
    if(
    mysql_num_rows($get)==0){
      
    // Bilddaten eintragen

    Das Dingen schaut nun ob bereits Datensätze in der Tabelle tabelle existieren. Wenn nicht, werden die Bilddaten eingetragen.
    Es gibt aber noch unzählige andere Vorgehensweisen. Auch elegantere, sicherere, schönere, ...

  20. #40
    Hm, das funktioniert nicht so ganz. Aber da hier mal wieder der Fehler auftaucht, den ich immer habe, wenn ich irgendwo mysql_num_rows() verwende, kann ich die Frage ja auch mal stellen *g*

    Das ist jetzt mein PHP-Code. Ohne das, was Chocwise da gepostet hat, gings, er hat eben nur alles beim aktualisieren neu eingetragen. Vielleicht kann man das mit dem Einfügen auch eleganter oder kürzer oder so lösen, aber das is ja erstmal egal.

    Jedenfalls meint er, dass in der Zeile "if(mysql_num_rows($get)==0)" ein Fehler ist.
    Und die Meldung, die er ausspuckt ist die:
    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C... (pfadangabe halt)

    Das hab ich immer, wenn ich irgendwie diese Funktion benutze, hatte das beim Gästebuch auch schon, die scheint irgendwie zu haken, wenn es eben noch keine Einträge gibt.
    Ich mein, er trägt dann meine Daten da zwar ein, aber wenn da immer erst ne Fehlermeldung kommt, find ich das nicht so schön.
    Kann man da nicht was gegen machen?
    Hab nämlich das gleiche Problem auch bei meinem Gästebuch. Wenn ich da noch nichts eingetragen habe, dann krieg ich auch diese tolle Meldung, also hab ichs am Ende so gelöst, dass man erstmal das formular sieht, und die einträge, die dann kommen, erst da sind, wenn mans abschickt, damit mindestens ein Eintrag vorhanden ist.
    Sehr nervig irgendwie >_>


    Das ist jetzt der PHP-Code von meiner bilddatenbank. variablen-Namen sind erstmal nur provisorisch, die müssen eh noch angepasst werden, weil der Dozent da so eigenwillig ist >_<
    PHP-Code:
    <?php
    $database
    =mysql_connect("localhost""root");
    $name=bilder;
    $erstellen="CREATE DATABASE IF NOT EXISTS " .$name;
    mysql_query($erstellen) or die (mysql_error());
    mysql_select_db($name);
    $ct="CREATE TABLE IF NOT EXISTS bildpfad (dateiname TINYTEXT)";
    mysql_query($ct) or die (mysql_error());
    $get "SELECT * FROM bildpfad";
    if(
    mysql_num_rows($get)==0)
    {
        
    $einfuegen="INSERT INTO bildpfad (dateiname) VALUES ('bild1.jpg')";
        
    mysql_query($einfuegen);
        
    $einfuegen2="INSERT INTO bildpfad (dateiname) VALUES ('bild2.jpg')";
        
    mysql_query($einfuegen2);
        
    $einfuegen3="INSERT INTO bildpfad (dateiname) VALUES ('bild3.jpg')";
        
    mysql_query($einfuegen3);
        
    $einfuegen4="INSERT INTO bildpfad (dateiname) VALUES ('bild4.jpg')";
        
    mysql_query($einfuegen4);
        
    $einfuegen5="INSERT INTO bildpfad (dateiname) VALUES ('bild5.jpg')";
        
    mysql_query($einfuegen5);
    }

    ?>

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •