kostenloser Webspace werbefrei: lima-city


news-submit mit mysql abfrage..

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    qunfolio

    Kostenloser Webspace von qunfolio

    qunfolio hat kostenlosen Webspace.

    hallo ich bin grade am code basteln etwas stecken geblieben.
    Da ich nicht allzu tiefgründiges Wissen in sachen Php und mysql habe , dachte ich dass die Profis mir etwas weiterhelfen könnten

    ich hab mir dass so gedacht.. in der MySql datenbank hab ich eine tabelle namens 'Admin' mit 'username' und 'password'
    mit dem ersten code, also dem formular will ich das ganze an eine newssubmitted.php dranpappen, das formular ist soweit glaube ich auch in ordnung..

    <form action="?site=newssubmitted" method="post">
        <fieldset>	
            <legend>Submit a new news-entry</legend>
    <table border="0" cellpadding="3" cellspacing="0" width="100%">
        <tr>
    	<td align="right"><label>username:</label></td>
    	<td><input type="text" name="username" /></td>
    	<td align="right"><label>password:</label></td>
    	<td><input type="text" name="password"/></td>
    	<td align="right"><label>Titel:</label></td>
    	<td><input type="text" name="Titel" /></td>
        </tr>
        <tr>
    	<td align="right"><label>Inhalt</label></td>
    	<td colspan="3"><textarea name="Inhalt" rows="10" cols="30"></textarea></td>
        </tr>
        <tr>
    	<td align="center" colspan="3"><input type="submit" name="formaction" value="Abschicken" /><td>
        </tr>
    </table>
        </fieldset>
    </form>


    nachdem das formular abgeschickt wurde soll nun bei der newssubmitted.php geprüft werden ob username und password zusammenpassen und dann die neuen news zur tabelle hinzugefügt werden.. soweit die theorie, das was ich dabei fabriziert habe bringt nur errors und mich nicht weiter .

    <?php
    error_reporting(E_ALL);
    
    // die MySQL-Daten entsprechend anpassen
    $db = @new MySQLi('mysql.lima-city.de', 'ich halt', 'mysql-pw und so', 'meine datenbank');
    if (mysqli_connect_errno()) {
        die('Konnte keine Verbindung zu Datenbank aufbauen, MySQL meldete: '.mysqli_connect_error());
    }
    if ($_POST['username'] == $sql = 'SELECT
                                  username
                              FROM
                                  Admin';  and $_POST['password'] == $sql = 'SELECT
                                  password
                              FROM
                                  Admin'; ) {
    if ('POST' == $_SERVER['REQUEST_METHOD']) {
        if (!isset($_POST['username'], $_POST['password'], $_POST['Titel'],$_POST['Inhalt'], $_POST['formaction'])) {
            die ('<p id="error">Benutzen sie nur Formulare von der Homepage.</p>');
        }
        if (('' == $username = trim($_POST['username'])) or 
    	('' == $password = trim($_POST['password'])) or
                ('' == $Titel = trim($_POST['Titel'])) or
                    ('' == $Inhalt = trim('Inhalt'))) {
    		die ('<p id="error">Bitte f&uuml;llen sie das Formular vollst&auml;ndig aus.</p>');
        }
       
        $sql = 'INSERT INTO
                    News(Titel, Datum, Inhalt)
                VALUES
                    (?, NOW(), ?)';
        $stmt = $db->prepare($sql);
        
        if (!$stmt) {
            die ('Es konnte kein SQL-Query vorbereitet werden: '.$db->error);
        }
        $stmt->bind_param('ss', $Titel, $Inhalt);
        if (!$stmt->execute()) {
            die ('Query konnte nicht ausgef&uuml;hrt werden: '.$stmt->error);
        }
        echo '<p class="info">Newseitrag hinzugef&uuml;gt. <a href="?site=news">Zur&uuml;ck zu den News</a>.</p>';
    } 
    ?>


    ich bitte um etwas aufklärende worte von fachmännischen personal .

    euer qunfolio

    Beitrag zuletzt geändert: 28.7.2010 1:02:06 von qunfolio
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Den PHP-Quelltext habe ich aktuell nur überflogen. Auffällig ist aber bereits der Aufruf des Formularziels:

    <form action="?site=newssubmitted" method="post">

    Hier sollte auch die Seite (newssubmitted.php) als Ziel benannt werden und nicht der Parameter einer GET-Methode. Wenn Du auch den Wert site=newssubmitted mitliefern möchtest, soltest Du das bei POST mit einem versteckten Formularfeld tun.

    Beitrag zuletzt geändert: 28.7.2010 7:56:41 von althaus
  4. qunfolio schrieb:

    nachdem das formular abgeschickt wurde soll nun bei der newssubmitted.php geprüft werden ob username und password zusammenpassen und dann die neuen news zur tabelle hinzugefügt werden.. soweit die theorie, das was ich dabei fabriziert habe bringt nur errors und mich nicht weiter .

    ich bitte um etwas aufklärende worte von fachmännischen personal .

    euer qunfolio


    Normalerweise haben Errors und Fehlermeldungen einen Sinn, wenn du dir diese also genauer anschaust solltest du den Fehler finden.

    Alternativ könntest du auch mal die Fehlermeldungen hier posten (Falls dabei Zeilennummer enthalten sind, dann mitteilen wo diese Zeilen in deinem Code sind).

    Dann kann dir hier vlt auch jmd zuverlässig weiterhelfen :)
  5. Autor dieses Themas

    qunfolio

    Kostenloser Webspace von qunfolio

    qunfolio hat kostenlosen Webspace.

    <form action="?site=newssubmitted" method="post">

    Hier sollte auch die Seite (newssubmitted.php) als Ziel benannt werden und nicht der Parameter einer GET-Methode.


    meine Index-Datei liest diesen GET-Wert aus und ruft dann die zugehörige Php damit auf .. daher dieser Teil.


    Parse error: syntax error, unexpected ';' in /home/webpages/lima-city/qunfolio/html/newssubmitted.php on line 14


    besagt die Fehlermeldung , also denke ich mal dass es etwas mit diesem Abschnitt im Code zu tun hat

    if ($_POST['username'] == $sql = 'SELECT
                                  username
                              FROM
                                  Admin';  and $_POST['password'] == $sql = 'SELECT
                                  password
                              FROM
                                  Admin'; ) {


    leider ist da auch mein Php / MySql wissen nicht ausreichend um zu wissen wie ich diese Abfrage stelle oder ob es einen besseren Weg gäbe, da bräuchte ich Eure Hilfe.

    qunfolio

    Beitrag zuletzt geändert: 28.7.2010 12:49:53 von qunfolio
  6. In diesem Codeabschnitt hast du ein Semikolon, welches besagt, dass der String endet. Danach geht er aber offensichtlich weiter. Das kann natürlich nicht funktionieren. Außerdem gibt es Probleme, wenn man Formular, welches Daten per POST übertragen soll, an eine Adresse, die GET-Variablen beinhalten, richtet. Das muss vermieden werden.
  7. Autor dieses Themas

    qunfolio

    Kostenloser Webspace von qunfolio

    qunfolio hat kostenlosen Webspace.

    . Außerdem gibt es Probleme, wenn man Formular, welches Daten per POST übertragen soll, an eine Adresse, die GET-Variablen beinhalten, richtet. Das muss vermieden werden.


    also ich habe mit dieser Art von GET und POST schon ein Gästebuch auf meiner Seite implementiert und es funktioniert einwandfrei, deswegen hab ich da eigentlich kein problem gesehen .

    In diesem Codeabschnitt hast du ein Semikolon, welches besagt, dass der String endet. Danach geht er aber offensichtlich weiter. Das kann natürlich nicht funktionieren.


    soll ich nun also die semikoli(wie ist da eig die mehrzahl ?) weglassen ? also :
    if ($_POST['username'] == $sql = 'SELECT
                                    username
                              FROM
                                    Admin'
                      and $_POST['password'] == $sql = 'SELECT
                                    password
                              FROM
                                    Admin' ) {


    denn dann bringt er mir ein unerwartetes ende
    Parse error: syntax error, unexpected $end in /home/webpages/lima-city/qunfolio/html/newssubmitted.php on line 45


    quni


    Beitrag zuletzt geändert: 28.7.2010 13:11:25 von qunfolio
  8. Also vorab: Ich habe noch nie so etwas chaotisches gesehen. Du arbeitest noch nicht lange mit PHP und/oder MySQL, oder?

    Wie dem auch sei... Vielleicht bin ich aus deinem Code ja doch schlau geworden...

    index.php:

    <form action="index.php" method="post">
    <input type="hidden" name="site" value="newssubmitted">
        <fieldset>	
            <legend>Submit a new news-entry</legend>
    <table border="0" cellpadding="3" cellspacing="0" width="100%">
        <tr>
    	<td align="right"><label>username:</label></td>
    	<td><input type="text" name="username" /></td>
    	<td align="right"><label>password:</label></td>
    	<td><input type="text" name="password"/></td>
    	<td align="right"><label>Titel:</label></td>
    	<td><input type="text" name="Titel" /></td>
        </tr>
        <tr>
    	<td align="right"><label>Inhalt</label></td>
    	<td colspan="3"><textarea name="Inhalt" rows="10" cols="30"></textarea></td>
        </tr>
        <tr>
    	<td align="center" colspan="3"><input type="submit" name="formaction" value="Abschicken" /><td>
        </tr>
    </table>
        </fieldset>
    </form>


    newssubmitted:

    <?php
    // Config
    $dbuser = "XXX";
    $dbpass = "YYY";
    $dbhost = "mysql.lima-city.de";
    $db = "ZZZ";
    // Config Ende
    
    $conn = @mysql_connect($dbhost, $dbuser, $dbpass) or die ("Verbindungsversuch fehlgeschlagen");
    @mysql_select_db($db, $conn) or die("Konnte die Datenbank nicht w&auml;hlen.");
    
    // Post Daten vorbereiten
    $username = $_POST['username'];
    $password = $_POST['password'];
    $title = trim($_POST['Titel']);
    $content = trim($_POST['Inhalt']);
    // Ende
    
    // Post Daten prüfen
    if(empty($username) || empty($password) || empty($title) || empty($content))
    {
    	die("<p id=\"error\">Bitte f&uuml;llen sie das Formular vollst&auml;ndig aus.</p>");
    }
    // Ende
    
    // Username und Passwort vergleichen
    $query = @mysql_query("SELECT * FROM Admin where username = '".$username."' AND password = '".$password."'");
    if(@mysql_num_rows($query) > 1)
    {
    	die("<p id=\"error\">Benutzername oder Passwort nicht korrekt.</p>");
    }
    // Ende
    
    // News in Datenbank speichern
    $query = @mysql_query("INSERT INTO News(Titel, Datum, Inhalt) VALUES ('".$title."', '".time()."', '".$content."')") or die("Query konnte nicht ausgef&uuml;hrt werden: ".mysql_error());
    //Ende
    
    echo "<p class=\"info\">Newseitrag hinzugef&uuml;gt. <a href=\"?site=news\">Zur&uuml;ck zu den News</a>.</p>";
    ?>


    Beitrag zuletzt geändert: 28.7.2010 16:48:24 von fabo
  9. drafed-map schrieb:
    In diesem Codeabschnitt hast du ein Semikolon, welches besagt, dass der String endet.


    Ich denke, ich weiß, welchen Fehler er gemacht hat.

    Kann es sein, dass du vorher nicht mit MySQL, sondern mit SQLite gearbeitet hast? Sofern ich das aus meinen Lernzeiten noch im Kopf habe, kann man in SQLite mit einem Semikolon mehrere Abfragen aneinanderketten.
  10. Das kann man in MySQL auch, jedoch muss das Semikolon dazu in dem String stehen und ihn nicht beenden.
  11. Autor dieses Themas

    qunfolio

    Kostenloser Webspace von qunfolio

    qunfolio hat kostenlosen Webspace.

    Also vorab: Ich habe noch nie so etwas chaotisches gesehen. Du arbeitest noch nicht lange mit PHP und/oder MySQL, oder?


    nei,n da hast du Recht und irgendwie hat mich mein Code selber ziemlich stark verwirrt .. Ich hab mir deins mal angesehen und muss sagen gut das es Leute gibt die sachen Ordnen können :D ne Schmarn, Ich sollte mir angewöhnen Soetwas auch geordneter zu schreiben da Ich sonst irgendwann selbst nichtmehr durchblicke, so wie du es geschrieben hast macht es für mich auch einen Sinn... Ich wusste bei mir einfach nichtmehr weiter.

    <input type="hidden" name="site" value="newssubmitted">


    kann ich das dann auch über GET rausholen oder muss ich da meine index umschreiben?

    Beitrag zuletzt geändert: 29.7.2010 13:43:39 von qunfolio
  12. Wenn du die Formularvariablen ganz normal über GET Versendest, kannst du das entsprechende Feld logischerweise auch über

    $_GET['newssumitted']


    abfragen. probieren geht über studieren. allerdings heißt es newssumbitted. :)
  13. Autor dieses Themas

    qunfolio

    Kostenloser Webspace von qunfolio

    qunfolio hat kostenlosen Webspace.

    // Username und Passwort vergleichen
    $query = @mysql_query("SELECT * FROM Admin where username = '".$username."' AND password = '".$password."'");
    if(@mysql_num_rows($query) > 1)
    {
    	die("<p id=\"error\">Benutzername oder Passwort nicht korrekt.</p>");
    }


    also ich habe deinen Code soweit übernommen, nur dieser Abschitt funktioniert nicht richtig, er bringt zwar keinen Error, lässt mich aber jegliche username und password -Kombination unabhängig von der Datenbank benutzen.

    sollte es nicht > 1 oder 0 sein ?
    kann man das so schreiben ?
    if(!@mysql_num_rows($query)  ==  1)

    von der Logik her sollte doch auch wenn weniger als 1 Treffer gefunden wird das ganze Falsch sein oder ?

    EDIT: Ja so klappts :D

    Beitrag zuletzt geändert: 29.7.2010 22:17:42 von qunfolio
  14. Da hast du Recht, war mein Fehler. Sollte "kleiner als" werden ;) Also Klammer anders herum.

    // Username und Passwort vergleichen
    $query = @mysql_query("SELECT * FROM Admin where username = '".$username."' AND password = '".$password."'");
    if(@mysql_num_rows($query) < 1)
    {
    	die("<p id=\"error\">Benutzername oder Passwort nicht korrekt.</p>");
    }


    Von mir aus kannste auch == 0 verwenden :-)

    Beitrag zuletzt geändert: 30.7.2010 1:13:28 von fabo
  15. robbmaster schrieb:
    Wenn du die Formularvariablen ganz normal über GET Versendest, kannst du das entsprechende Feld logischerweise auch über

    $_GET['newssumitted']


    abfragen. probieren geht über studieren. allerdings heißt es newssumbitted. :)


    Muss mich verbessern, Der Wert des hidden Inputs war name. Daher.

    $_GET['site']
  16. Autor dieses Themas

    qunfolio

    Kostenloser Webspace von qunfolio

    qunfolio hat kostenlosen Webspace.

    öh ja ne die Formularvariablen kommen mit POST . Mit GET möchte ich nur wissen , wo auf meiner HP ich mich gerade befinde ...

    wollte auch nur wissen ob ich dieses type=hidden über GET auslesen kann , aber wenns n input ist wird der denke mal auch eher über POST laufen , hat mich mein Gehirn überzeugt.

    vielen dank nochmal , Quni

    Beitrag zuletzt geändert: 31.7.2010 2:10:57 von qunfolio
  17. hiddenfields werden wie normale Formularfelder behandelt d.h. wird ein Formular per Post versendet, werden hiddenfields auch per Post versendet. Selbiges gilt für Get.

    In deiner Signatur fehlt übrigens noch der Grundwert von $übrig, sonst gehts nicht auf, da 0 Kaffe - 1 Kaffe = -1 Kaffe

    :megarofl:

    Beitrag zuletzt geändert: 31.7.2010 6:16:42 von fabo
  18. es brauch keinen Grundwert für übrig, da übrig ja aus benutzer - kaffee generiert wird..
    allerdings wenn wir hier schon beim Klugscheißen sind..
    das ü ist in nem Variablennamen nicht gestattet..
    und 2. reicht $kaffee++; anstelle von $kaffee = $kaffee+1; :D
  19. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!