+ Antworten
Seite 3 von 5 ErsteErste 1 2 3 4 5 LetzteLetzte
Ergebnis 21 bis 30 von 41
  1. #21
    Benutzer Meilensteine
    Tobi44 befindet sich auf einem aufstrebenden Ast
    Registriert seit
    05.03.2009
    Ort
    RLP
    Beiträge
    78
    Renommee-Modifikator
    2

    Standard

    Stimmt auch wieder, klappt aber nun.

    Nun möchte ich aber, dass in zwei Feldern (name & text) was stehen muss, ansonsten soll eine Fehlermeldung kommen.

    Nur wie?

    if ($_POST['absenden']){ if(empty($_POST['name']) || empty($_POST['text'])){die("Bitte Name und / oder Nachricht eingeben.")}}
    Damit klappt es nicht.

  2. #22
    Erfahrener Benutzer Meilensteine
    Furien ist zur Zeit noch ein unbeschriebenes Blatt Avatar von Furien
    Registriert seit
    28.06.2008
    Ort
    Kuhkaff in Niedersachsen
    Beiträge
    246
    Blog-Einträge
    1
    Renommee-Modifikator
    0

    Standard

    Code:
    if (isset($_POST['submit'])) {
        if (empty($_POST['irgendwas']) OR empty($_POST['irgendwas2'])) die("");
    }
    

  3. #23
    Benutzer Meilensteine
    Tobi44 befindet sich auf einem aufstrebenden Ast
    Registriert seit
    05.03.2009
    Ort
    RLP
    Beiträge
    78
    Renommee-Modifikator
    2

    Standard

    Ich krieg die Krise, das klappt nicht.

    Der von dir gepostete Codeschnipsel ist nun verbaut, aber wenn nix eingetragen wird, wird die Meldung angezeigt (Namen und Text eingeben) und der Eintrag dennoch in die DB geschrieben. Schei*e!
    Code:
    if($_POST['absenden']) {
      $eintragen = mysql_query("INSERT INTO guestbook
      (name, text, hp, email, ip, timestamp) VALUES
      ('$name', '$text', '$hp', '$email', '$ip', '$timestamp')");
      if (empty($_POST['name']) OR empty($_POST['text'])) die("<div style=\"margin-left:30px;\"><span class=\"gen2\">Bitte Namen und Text eingeben :-)</span></div>");  
      echo "<div style=\"margin-left:30px;\"><span class=\"gen2\"><img src=\"img/info.png\">&nbsp;Eintrag erfolgreich. Vielen Dank.</span></div>";
    	}
    

  4. #24
    Erfahrener Benutzer Meilensteine
    Furien ist zur Zeit noch ein unbeschriebenes Blatt Avatar von Furien
    Registriert seit
    28.06.2008
    Ort
    Kuhkaff in Niedersachsen
    Beiträge
    246
    Blog-Einträge
    1
    Renommee-Modifikator
    0

    Standard

    Du hast els fasch eingebaut ^^
    Du musst es so machen:

    Code:
    if($_POST['absenden']) {
        if (empty($_POST['name']) OR empty($_POST['text'])) die("<div style=\"margin-left:30px;\"><span class=\"gen2\">Bitte Namen und Text eingeben :-)</span></div>"); 
        $eintragen = mysql_query("INSERT INTO guestbook
        (name, text, hp, email, ip, timestamp) VALUES
        ('$name', '$text', '$hp', '$email', '$ip', '$timestamp')");
    }
    
    Bei deinem Code wird ja schon in die DB geschrieben, bevor das Skript mit die abgebrochen wird.

  5. #25
    Benutzer Meilensteine
    Tobi44 befindet sich auf einem aufstrebenden Ast
    Registriert seit
    05.03.2009
    Ort
    RLP
    Beiträge
    78
    Renommee-Modifikator
    2

    Standard

    Soweit klappt deine Version nun aber, allerdings fehlt (warum auch immer) der Footer der Seite. Die Seite endet aprubt mit der Ausgabe der Meldung "Bitte Namen und Text eingeben". Keine Ahnung warum.

    Danke

  6. #26
    HTML-Guru Meilensteine
    Gilles befindet sich auf einem aufstrebenden Ast Avatar von Gilles
    Registriert seit
    20.07.2009
    Ort
    Düsseldorf
    Alter
    24
    Beiträge
    1.272
    Renommee-Modifikator
    3

    Standard

    Edit:
    Oh wieso habe ich die 3. Seite nicht gesehen? Komisch. Aber der Beitrag unten sollte dir trotzdem helfen.
    Und wegen deines Problems. Wir bräuchten den aktuellen Quellcode. Und wenn das Problem gelöst ist, klären wir dich über SQL Injection auf Denn dein Code ist unsicher. Und zwar sehr
    --------------

    Zitat Zitat von Tobi44 Beitrag anzeigen
    Hi,

    nun habe ich versucht, ein "Gästebuch" zu erstellen. Die DB besteht auch mit einigen Feldern (name, text, hp, email, ip, timestamp) und die Daten werden auch erfolgreich durch das Formular eingetragen, allerdings kriege ich die Ausgabe nicht richtig hin. Beim ersten Eintrag klappt es, aber sobald ein neuer kommt, ist alles durcheinander.

    Wie kriege ich jeden Eintrag geordnet?

    Momentan sieht es so aus:
    Code:
    <?php
      $name = mysql_query("SELECT name FROM guestbook ORDER BY cid DESC LIMIT 100");
      while($row = mysql_fetch_object($name))
      echo "<b>Name:</b> ".$row->name." - ";
      
      $hp = mysql_query("SELECT hp FROM guestbook ORDER BY cid DESC LIMIT 100");
      while($row2 = mysql_fetch_object($hp))
        echo "<b>Homepage:</b> <a href=\"http://$row2->hp\" class=\"gengb\">".$row2->hp."</a><br />";
        
      $text = mysql_query("SELECT text FROM guestbook ORDER BY cid DESC LIMIT 100");
      while($row3 = mysql_fetch_object($text))
      echo "<b>Text:</b> ".$row3->text."<br />";
    
      ?>
    
    Dazu stand in dem hier verlinkten PHP/MySQL-Tutorial nur, dass es zu aufwendig sei und daher nicht beschrieben sei. Schade.
    Oh mein Gott. 3 Abfragen ? Wieso?
    Ich glaube dir fehlt noch die Logik für PHP.
    Wenn nach einem if, einer schleife oder ähnlichen kein {} folgt, wird nur der erste Befehl, der danach steht ausgeführt.
    Deswegen machst du 3 Abfragen?
    Vorerst merke dir bitte den unterschied zwischen Datenbank, Tabelle und Feldern. In einer Datenbank befinden sich Tabellen. Tabellen beinhalten Felder, welche Werte enthalten, die du dann auslesen willst. Also:
    PHP-Code:
    <?php

    mysql_select_db
    ("datenbank"); // Datenbank
    mysql_query("SELECT `feld1`, `feld2` FROM `tabelle1`");

    ?>
    Die `` schreib ich nur, damit es klar ist, dass ein Name gemeint ist und es nicht mit einem SQL-Befehl verwechselt werden kann. In deinem fall gibt es nämlich den Befehl TIMESTAMP und somit könnte da etwas schief gehen. Somit rate ich dazu Tabellennamen und Felder immer in `` zu schreiben.

    Nun zu deinem Statement.
    Du kannst ein Select für alle 3 Felder machen. Und wie Furien schon sagte: cid existiert nicht bei dir
    Schau dir den Query an, den ich für dich geschrieben habe und probiere daraus zu lernen
    PHP-Code:
    <?php
      $query 
    mysql_query("SELECT `name`, `hp`, `text`  FROM `guestbook` ORDER BY `timestamp` DESC LIMIT 100");
      while(
    $row mysql_fetch_object($query)) {
          echo 
    "<b>Name:</b> ".$row->name." - ";
          
          
    // Abfragen, ob eine HP eingetragen wurde
          
    if($row->hp && $row->hp != "")
          echo 
    "<b>Homepage:</b> <a href=\"$row->hp\" class=\"gengb\">".$row->hp."</a><br />";
          echo 
    "<b>Text:</b> ".$row->text."<br />";
      }

      
    ?>
    Denke so wolltest du es auch haben, denn bei deinem Query hätte es folgendermaßen ausgesehen

    Name: Johnny - Homepage: <a href="http://http://meinepageusw.de" class="gengb">http://meinepageusw.de</a>
    Text: Mein Link funktioniert irgend wie nicht.
    Bei deiner Version hätte er immer probiert einen Link auszugeben, auch wenn keiner da gewesen wäre. Und was ist wenn jemand http mit ausgibt. Dann sieht es schlecht aus. Meine geschrieben Variante ist noch nicht perfekt. Ich würde an deiner Stelle mit einem regulären Ausdruck da drüber laufen
    Aber das sollte es vorerst tun. Hoffe konnte dir helfen.
    Zitat Zitat von Gilles
    Vieel Sgaen cIh knan nihct shcriebn! Alels Shcwachsnin
    Suche Leute für ein RPG-Browser-Game

    Wie benutze ich die Code-Tags im Forum

  7. #27
    Benutzer Meilensteine
    Tobi44 befindet sich auf einem aufstrebenden Ast
    Registriert seit
    05.03.2009
    Ort
    RLP
    Beiträge
    78
    Renommee-Modifikator
    2

    Standard

    Danke, das andere Problem (Post 25) ist nun gelöst.

    Der Code sieht nun folgendermaßen aus:

    PHP-Code:
    $abfrage mysql_query("SELECT * FROM guestbook ORDER BY timestamp DESC LIMIT 100");
      while(
    $row mysql_fetch_array($abfrage)){
          
    $name $row['name'];
          
    $email $row['email'];
          
    $hp $row['hp'];
          
    $date date('d.m.Y - H:i',$row['timestamp']);
          
    $text $row['text'];

          echo 
    "<div style=\"border: solid #aaaaaa 1px; padding:5px; width:347px;\"><span class=\"gen5\">$date - von: <a href=\"mailto:$email\" class=\"gengb\">$name</a> - 
                <a href=\"http://$hp\" class=\"gengb\" target=\"_blank\">$hp</a></span><br />
                <span style=\"font-family:Lucida Console; font-size:10pt; line-height:15pt;\"><img src=\"http://pics-upload.de/img/ar2.png\">&nbsp;$text</span></div><br />
                "
    ;
      } 
    und zur Ausgabe der Einträge sieht es so aus:

    HTML-Code:
    <td valign="top" width="450px"><ul id="headlinep"><center><span class="gen2"><b>Eintragen</b></span></center></ul><br />
    <div style="margin-left:30px;">
    <form action="gb.php" method="post">
    <table><tr>
    <td><span class="gen5">Name</span></td>
    <td><input type="text" name="name" maxlength="15" style="font-family:Tahoma; font-size:8pt; border: solid #aaaaaa 1px;" size="25"></td>
    </tr><tr>
    <td><span class="gen5">E-Mail</span></td>
    <td><input type="text" name="email" style="font-family:Tahoma; font-size:8pt; border: solid #aaaaaa 1px;" size="25"></td>
    </tr><tr>
    <td><span class="gen5">HP <u>www.</u></span></td>
    <td><input type="text" name="hp" maxlength="26" style="font-family:Tahoma; font-size:8pt; border: solid #aaaaaa 1px;" size="25"></td>
    </tr><tr>
    <td valign="top"><span class="gen5">Text</span></td>
    <td><textarea name="text" style="font-family:Tahoma; font-size:8pt; border: solid #aaaaaa 1px;" cols="40" rows="5"></textarea></td>
    </tr><tr>
    <td></td>
    <td><input type="submit" style="font-family:Tahoma; font-size:8pt;font-weight:bold;border: solid #aaaaaa 1px; background-color:#ffffff;" name="absenden" value="Eintrag absenden" /></td>
    </tr></table>
    </form> 
    Und ich muss sagen, ich wüsste nicht, wo ich den Code zur Abfrage, ob eine HP existiert oder nicht, hintun muss Aber habe es ja nun so gelöst, dass anstelle von "Homepage" dort direkt der Domainname steht, und wenn keiner eingegeben wurde, steht halt nichts da. Und im Formular habe ich vor das Feld "HP www." geschrieben, sodass nur noch die Domain selbst eingegeben werden muss.

    Zur Sache mit cid - eine solche Zeile existiert. "Primärschlüssel" steht daneben. Wollte das eigentlich mal für die Durchnummerierung der Einträge nehmen, aber wenn man einen Eintrag löscht wird ja einfach weitergezählt, nun ist der Wert da schon bei 50 durch meine ganzen wieder gelöschten Testeinträge...

    Gruß

    Danke & Gruß
    Geändert von Tobi44 (21.07.2010 um 10:23 Uhr)

  8. #28
    Erfahrener Benutzer Meilensteine
    Furien ist zur Zeit noch ein unbeschriebenes Blatt Avatar von Furien
    Registriert seit
    28.06.2008
    Ort
    Kuhkaff in Niedersachsen
    Beiträge
    246
    Blog-Einträge
    1
    Renommee-Modifikator
    0

    Standard


    echo
    "<div style=\"border: solid #aaaaaa 1px; padding:5px; width:347px;\"><span class=\"gen5\">$date - von: <a href=\"mailto:$email\" class=\"gengb\">$name</a> -
    <a href=\"http://$hp\" class=\"gengb\" target=\"_blank\">$hp</a></span><br />
    <span style=\"font-family:Lucida Console; font-size:10pt; line-height:15pt;\"><img src=\"http://pics-upload.de/img/ar2.png\">&nbsp;$text</span></div><br />
    "
    ;
    Span-Tag ist veraltet und ich an deiner Stelle würde alles ordentlich mit einer
    Css-Datei formatieren.
    Zu dem fehlenden Footer.
    Ich weiß zwar nicht wie du es gelöst hast, aber das ist der Sinn
    von die("");, dass danach das ganze Skript sofort abgebrochen wird.
    Damit auch der Footer include und alle Ausgaben die danach kommen.

    Nun dein jetziges Problem versteh ich nicht ganz.
    Du weiß nicht, wo du
    PHP-Code:
    if (empty($_POST['hp'])) die("Bitte gib deine HP ein"); 
    hintun sollst?

    mfg furien

  9. #29
    Benutzer Meilensteine
    Tobi44 befindet sich auf einem aufstrebenden Ast
    Registriert seit
    05.03.2009
    Ort
    RLP
    Beiträge
    78
    Renommee-Modifikator
    2

    Standard

    Span-Tag ist veraltet und ich an deiner Stelle würde alles ordentlich mit einer
    Css-Datei formatieren.
    Danke, aber so blöd bin ich nun auch wieder nicht. Natürlich existiert eine CSS-Datei, allerdings war ich zu faul, diese für diese eine kleine Textformatierung zu erweitern...

    Problem mit fehlendem Seitencontent & Footer nach der Fehlermeldung ist behoben.

    Und zu dem HP Zeugs Code. Von dem von dir genannten Code war nie die Rede. Der User MUSS keine Hp eingeben. Viel mehr wurde hier von Gilles angesprochen, dass bei der Ausgabe des Eintrages bei meinem Code grundsätzlich der Link "Homepage" angezeigt wird, ob eine eingegeben wurde oder nicht. Wenn keine eingegeben wurde, wird halt ins Leere verlinkt, wenn eine eingegeben wurde, wird diese verlinkt.
    Habe das Problem nun so gelöst, dass ich anstelle des Link-Textes "Homepage" bei der Eintragsausgabe einfach die HP/Domain einfach als Linktext genommen habe, sodass nur dann etwas als Homepage angezeigt wird, wenn was eingegeben wurde. Zwar nicht die beste Lösung, aber klappt.

    Gruß

  10. #30
    HTML-Guru Meilensteine
    Gilles befindet sich auf einem aufstrebenden Ast Avatar von Gilles
    Registriert seit
    20.07.2009
    Ort
    Düsseldorf
    Alter
    24
    Beiträge
    1.272
    Renommee-Modifikator
    3

    Standard

    Guten Morgen.
    Also zunächst einmal eine Sache. Du lässt die Email des Users öffentlich ausgeben? Denke das ist keine gute Idee (Ich sag nur Spambots).
    Doch mal zu deinem Link Problem. Als Ausgabe hast du ein komplettes echo genommen.
    Dabei kannst du das doch splitten. Nur mal als grobe Anschauung dieses Beispiel:
    PHP-Code:
      echo "Name: $name";
      
      
    // Abfrage ob Email angegeben wurde
      
    if($email && $email != "") {
        echo 
    " - Email: $email";
      } 
      echo 
    "<br/>";
      
      
    // Abfrage für Homepage
      
    if($hp && $hp != "") {
        echo 
    "Homepage: $hp <br/>";
      }

      
    // Nun Nachricht ausgeben
      
    echo $nachricht
    Du darfst nicht alles in ein echo packen, wenn du nach Konditionen gehen willst, ob etwas dargestellt wird oder nicht.
    Zitat Zitat von Gilles
    Vieel Sgaen cIh knan nihct shcriebn! Alels Shcwachsnin
    Suche Leute für ein RPG-Browser-Game

    Wie benutze ich die Code-Tags im Forum

Aktive Benutzer

Aktive Benutzer

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

     

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 12.07.2010, 11:48
  2. Antworten: 2
    Letzter Beitrag: 28.10.2008, 10:55
  3. [Delphi] Daten aus einer Excel Tabelle auslesen
    Von krumme im Forum C/C++/C#, Java, Visual Basic
    Antworten: 8
    Letzter Beitrag: 11.10.2007, 19:20
  4. DB auslesen und in PHP wiedergeben
    Von FireDuck im Forum PHP
    Antworten: 20
    Letzter Beitrag: 02.01.2006, 22:42
  5. HTML - Datei als Schrift wiedergeben
    Von FireDuck im Forum HTML und XHTML
    Antworten: 6
    Letzter Beitrag: 27.09.2005, 14:19

Stichworte

Berechtigungen

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