Problem mit links.php

Diskutiere mit über: Problem mit links.php im Web-Programmierung Forum

  1. Augustiner

    Augustiner Thread Starter MacUser Mitglied

    Beiträge:
    133
    Zustimmungen:
    0
    Registriert seit:
    25.10.2004
    Hallo zusammen,
    bin absoluter PHP-Anfänger und bräuchte mal eure Hilfe.
    Bei dem Script handelt es sich um eine einfach Linkliste.
    D.h. einfach URL und Titel eines Links in ein Script eingeben, das es dann in meine MySQL-Datenbank schreibt.
    Dabei hab ich nun folgenden Code geschrieben. Das Problem ist nur, dass nichts (bzw. nur leere Felder) in die Db eingetragen wird / werden.
    Hier der Code:
    PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    <title>Untitled Document</title>
    </head>

    <body>
    <?php
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <
    html xmlns="http://www.w3.org/1999/xhtml">
    <
    head>
    <
    meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    <
    title>Untitled Document</title>
    </
    head>

    <
    body>
    <?
    php
      
    /* Verbindungsaufbau */
      
    $verbindung mysql_connect("xxx","xxx","xxx");
     
      
    /* Auswahl der Db */
      
    mysql_select_db("datenbank");
     
      
    /* Daten schreiben in Tabelle links */
      
    mysql_query("INSERT INTO links (url,beschreibung) VALUES ('$link','$descr')");
     
      
    /* Verbindungsende */
      
    mysql_close($verbindung);
    ?>

    <form action="write.php" method="post" name="eingabe">
      <table border="0">
        <tr>
          <th colspan="3" class="headline"> Post a new Link!
        </tr>
        <tr>
          <th class="linie" colspan="3"></th>
        </tr>
        <tr>
          <td class="Header">URL: </td>
          <td rowspan="2" class="linehh"></td>
          <td><input name="link>" type="text" value="<?php $link ?>" size="50" />
          </td>
        </tr>
        <tr>
          <td class="Header">Beschreibung:</td>
          <td><input name="descr" type="text" value="<?php $descr ?>" size="50" /></td>
        </tr>
        <tr>
          <td><input name="senden" type="submit" value="add" /></td>
        </tr>
      </table>
    </form>

    </body>
    </html>
    Für ein wenig Hilfe wäre ich euch sehr dankbar!

    Gruß
    Augustiner
     
  2. 2nd

    2nd MacUser Mitglied

    Beiträge:
    8.902
    Zustimmungen:
    242
    Registriert seit:
    25.07.2004
    Das kann so nicht funktionieren. Dein Scriptablauf ist so:

    1. DB Verbindung öffnen
    2. In die Datenbank Variablen schreiben, die keinen Inhalt haben
    3. Formular darstellen
    4. Nach Abschicken das Script write.php aufrufen und alles wieder von vorne

    Du musst:

    1.) die Daten aus dem Post Array des Formulars übernehmen
    2.) nur in die DB schreiben, wenn auch Daten vorliegen

    Beispielhaft für eine Variable:

    HTML:
    if (isset($_POST['link'])) {
       $link = $_POST['link'];
       mysql_query("INSERT INTO links (url,beschreibung) VALUES('$link','$descr')");
    }

    So fkt. es prinzipiell erstmal. Ich möchte aber noch anmerken, dass:

    • man Formulardaten nicht ungeprüft in eine Datenbank schreiben sollte (Sicherheit, Validität)
    • Du 2 Doctypes/HEADS in Deinem Dokument hast
    • der Verbindungsaufbau zur DB in eine externe PHP Datei ausgelagert werden sollte, die per INCLUDE eingebunden wird

    Ich tu übrigens die PHP Teile immer (sofern es geht) an den Anfang der Datei. Die Variablen stehen Dir im HTML Bereich per <?=$varName?> zur Verfügung. Sonst wird es sehr unübersichtlich ;)

    2nd
     
  3. 2nd

    2nd MacUser Mitglied

    Beiträge:
    8.902
    Zustimmungen:
    242
    Registriert seit:
    25.07.2004
    Ich nochmal, ich habe Deine Seite gerade mal umgebaut. Irgendwas stimmt mit Deiner Tabelle nicht, der hat die Variablen aus dem Post Array nicht übernommen, keine Ahnung warum. Ich habe die Tabelle rausgenommen, das musst Du selber nochmal umbauen und im Netz nachlesen, ich habe leider keine Zeit mehr.

    Jedenfalls funktioniert es jetzt erstmal:

    PHP:
    <?php
        
    if (isset($_POST["link"]) && $_POST["link"] != '') {
           
            
    /* Verbindungsaufbau */
            
    $verbindung mysql_connect("xxx","xxx","xxx");
         
            
    /* Auswahl der Db */
            
    mysql_select_db("datenbank");
          
            
    $link_tmp $_POST["link"];
            
    $desc_tmp $_POST["descr"];
            echo 
    "Link = ".$link_tmp;
            echo 
    "Desc = ".$desc_tmp;
       
            
    mysql_query("INSERT INTO links (url,beschreibung) VALUES('$link_tmp','$desc_tmp')");
        } else echo 
    "Bitte einen Link eingeben";

       
    /* Verbindungsende */
      ##mysql_close($verbindung);
    ?>


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    <title>Untitled Document</title>
    </head>

    <body>
        <form action = "formular-db.php" method = "post">
              Link: <input name="link" type="text" value="<?=$link_tmp?>" size="50" /><br />
              Description:<input name="descr" type="text" value="<?=$desc_tmp?>" size="50" />
            <input type="submit" value="add" />
        </form>
    </body>
    Unten ist die Datei angehängt. Ich habe es übrigens umbenannt in "formular-db.php" und Deine Datenbank Verbindung muss eingetragen werden.


    2nd
     
    Zuletzt bearbeitet: 02.09.2006
  4. Augustiner

    Augustiner Thread Starter MacUser Mitglied

    Beiträge:
    133
    Zustimmungen:
    0
    Registriert seit:
    25.10.2004
    Hey vielen Dank schonmal. :)
    Jedoch bekomme ich leider einen Parser-Error:
    Parse error: parse error, unexpected T_STRING in /var/www/web53/html/bassment/write.php on line 2

    Weiterhin hab ich das mit den Links schonmal geschafft; also das Script war so ähnlich wie das von mir gepostete (s.o.). Gibts also noch ne Möglichkeit?
     
  5. 2nd

    2nd MacUser Mitglied

    Beiträge:
    8.902
    Zustimmungen:
    242
    Registriert seit:
    25.07.2004
    Hmm, wo kriegst Du den PARSE ERROR? Mit meinem oder Deinem Dokument? Ich habe keinen, bei mir sind nur die DB Zugriffe auskommentiert... Nimm das File, dass ich angehängt habe.

    Und was für eine Möglichkeit brauchst Du noch?

    2nd
     
  6. Augustiner

    Augustiner Thread Starter MacUser Mitglied

    Beiträge:
    133
    Zustimmungen:
    0
    Registriert seit:
    25.10.2004
    ich bekomme den Fehler in meinem File. Deines kann ich nicht runterladen. Zugriff verwehrt :rolleyes: .. Keine Ahnung woran das liegt. Es kommt das Logi-Fenster, ich logge mich ein und dann kommt es wieder.

    Das Orginalscript von mir (das mal funktioniert hat), habe ich von einer Shoutbox abgeleitet. Stör dich nicht an der fehlenden Ausgabe; die hab ich zur Vereinfachung mal rausgemacht.
    Auf jeden Fall funktionierte das Script einwandfrei. Jedoch ist das Folgende eine bearbeitet Version, die eben (auch) nicht mehr funktioniert. Ich weiß aber, als ich das Orginal vor rund 2 Monaten geschrieben hab, dass das eigentlich auch so ausgesehen hat.

    Der Code:
    PHP:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>Untitled Document</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <?php 
        
    /* Verbindungsaufbau (= $link) mit PHP MyAdmin */
        
    $link mysql_connect("xxx","xxx","xxx");
        
        
    /* Auswahl der Datenbank */
         
    mysql_select_db("db");
         
        
    /* Anfrage definieren */
        
    $anfrage mysql_query("SELECT * FROM links");
        
        if(
    $linkbeschreibung!="" && $linkurl!=""){
        
    mysql_query("INSERT INTO links (beschreibung, url) VALUES('$linkbeschreibung', '$linkurl')");
        }
        
        
    /* VerbindungsENDE (= $link) */
        
    mysql_close($link);
    ?>
    </head>

    <body>
        <table border="0">
        <form action="<?=$PHP_SELF?>" method="post" name="eingabe">
        <tr>
         <td><table border="0" height="1" width="100%" bgcolor="#000000"></table></td>
         <td>Post new Link:</td>
        </tr>
         <tr>
          <th><td>Link Titel:</td></th>
          <th><td><input name="linkbeschreibung" type="text" value="<?php $linkbeschreibung ?>" size="20"></td></th>
         </tr>
         <tr>
          <th><td>Link URL:</td></th>
          <th><td><input name="linkurl" type="text" value="http://<?php $linkurl ?>" size="20"></td>
              <td><input type="submit" name="senden" value="go for it!"></td></th>
         </tr>
         <tr>
         asda
         </tr>
         </table>
         </form>
        
        <br>
        <br>
        Hier fängt die Ausgabe der Datenbank an:
        <br>
        <br>
        
        

    </body>
    </html>

     
  7. 2nd

    2nd MacUser Mitglied

    Beiträge:
    8.902
    Zustimmungen:
    242
    Registriert seit:
    25.07.2004
    Augustiner, ich habe oben schon geschrieben, dass Du Deine Werte aus dem Formular aus dem superglobalen Array $_POST auslesen musst. Du kannst nicht direkt auf diese zugreifen, wenn Du das Formular mit action="POST" abschickst.

    $_POST["varName"]

    ist Dein Freund. Du kannst auch aus meinem Script oben das Zeug rauskopieren (APFEL-V -> APFEL-C).

    Unter Umständen fkt. das Auslesen direkt per $varName, wenn die Formularvariablenname dieselben Namen haben, dafür muss aber REGISTER_GLOBALS auf ON stehen. Das ist aber schon länger aus Sicherheitsgründen obsolet und meiner Meinung nach auch tierisches Gehacke/Fehlerquelle. Wenn man Variablen mit action = "post" in das Array $_POST übergibt, sollte man dieses prüfen, die Variablen von dort dann übernehmen und dann in die Datenbank tun. Wahrscheinlich funktioniert es wegen den REGISTER_GLOBALS bei Dir nicht (mittlerweile aus)...

    2nd
     
    Zuletzt bearbeitet: 02.09.2006
  8. Augustiner

    Augustiner Thread Starter MacUser Mitglied

    Beiträge:
    133
    Zustimmungen:
    0
    Registriert seit:
    25.10.2004
    Ja ok, der Code funktioniert nun.
    So wie du's grad beschrieben hast, hab ich's auch gemacht.
    Aber nun funktioniert die Ausgabe auch nicht mehr.
    Wie müsste ich das machen?
     
  9. Augustiner

    Augustiner Thread Starter MacUser Mitglied

    Beiträge:
    133
    Zustimmungen:
    0
    Registriert seit:
    25.10.2004
    hat sich erledigt.
    Vielen Dank nochmal!
     
    Zuletzt bearbeitet: 03.09.2006
  10. Augustiner

    Augustiner Thread Starter MacUser Mitglied

    Beiträge:
    133
    Zustimmungen:
    0
    Registriert seit:
    25.10.2004
    Ich nochmal :(
    Hab nun ein neues Problem.
    Ich möchte nun noch zwei href-Links hinzufügen mit den Titeln "edit" und "delete". Diese beiden Links sollen jeweils neben einem Eintrag stehen stehen.
    * Edit soll den Datensatz an edit.php schicken und die einzelnen Spalten dann dort als values in ein Formular schreiben.
    * Delete soll einfach den ganzen Datensatz löschen
    Nun weiß ich aber absolut gar nicht wie ich an diese Aufgabe herangehen muss, bzw. wie ich es mit einem href-Tag überhaupt schaffe eine bestimmte php-Funktion ausführen zu lassen.

    Und hier der Code von write.php:
    PHP:
    <?php /* Verbindungsaufbau */
        
        /* Variable für Benutzerdaten */
        
    mysql_connect("xxx","xxx","xxx");
        
        
      
    /* Auswahl der Datenbank */
      
        /* Db-Name */    
        
    $db "dbname";
        
    /* Db-select */
        
    mysql_select_db($db);
      
      function 
    eintragen() {

        
        
      
    /* Kriterien für Eintrag in die Datenbank */    
        
        
        
    $url $_POST["link"];
        
    $titel $_POST["descr"];
        
    mysql_query("INSERT INTO links (url,beschreibung) VALUES ('$url','$titel')");
        echo 
    "Der Link (<a href='$url' target='_blank'>$titel</a>) wurde erfolgreich hinzugefügt!";
        }
        
            if (isset(
    $_POST["link"]) && $_POST["link"] && isset($_POST["descr"]) && $_POST["descr"] != '')
          { 
    eintragen(); }
          
        if (isset(
    $_POST["link"]) && $_POST["link"] == '' && isset($_POST["descr"]) && $_POST["descr"] == '')
          { echo 
    "Du hast weder eine <b>URL</b> noch einen <b>Titel</b> eingegeben!<br>Bitte fülle beide Felder aus!
                 <br /><br /><a href='index.php'><< back</a>"
    ; }
          
        if (isset(
    $_POST["link"]) && $_POST["link"] == '' && isset($_POST["descr"]) && $_POST["descr"] != '')
          { echo 
    "Es wurde keine <b>URL</b> angegeben!<br>Zum Abschicken des Formulars musst du beide Felder ausfüllen
                 <br /><br /><a href='index.php'><< back</a>"
    ; }
          
        if (isset(
    $_POST["link"]) && $_POST["link"] != '' && isset($_POST["descr"]) && $_POST["descr"] == '')
          { echo 
    "Es wurde kein <b>Titel</b> angegeben!<br>Zum Abschicken des Formulars musst du beide Felder ausfüllen
                 <br /><br /><a href='index.php'><< back</a>"
    ; }
     
     
    $abfrage "SELECT * FROM links ORDER BY beschreibung";
     
    $ergebnis mysql_query($abfrage);
      
    $anzahl mysql_num_rows($ergebnis);
      
      
      
     
     
      
      
    /* Verbindungsende */      
      ##mysql_close($connect);
    ?>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    <title>(( SHOW LINKS ))</title>
    <style type="text/css">
    <!--
    body,td,th {
        font-family: Arial, Helvetica, sans-serif;
        color: #000000;
        font-size: 11px;
        padding-left: 10px;
    }
    .tisch {
        font-weight: bold;
    }
    .trtr {
        padding-left: 100px;
    }
    a {
        font-size: 10px;
        color: #FF0CC;
        font-weight: bold;
    }
    a:link {
        text-decoration: none;
        color: #FF00CC;
    }
    a:visited {
        text-decoration: none;
        color: #FF00CC;
    }
    a:hover {
        text-decoration: underline;
    }
    a:active {
        text-decoration: none;
    }
    -->
    </style>
    </head>

    <body>
    <br />
    <br />
    <br />
    <?php echo "In der Datenbank befinden sich bereits <b>$anzahl</b> Links."?>
    <br />
    <br />
    <br />
    <table border="0">

      <tr>
        <td></td>
        <td class="tisch">TITEL</td>
        <td width="50px"></td>
        <td class="tisch">URL</td>
        <td width="50px"></td>
        <td class="tisch">VISIT</td>
      </tr>
      
      <tr>
        <td height="5px"></td>
      </tr>
      
    <?php 
      
    while($row mysql_fetch_object($ergebnis))
      { 
    ?> 
      <tr>
        <td>>></td>
        <td><?php echo $row->beschreibung;?></td>
        <td width="50px"></td>
        <td><font color="#666666"><?php echo $row->url;?></font></td>
        <td width="50px"></td>
        <td><a href='http://<?php echo $row->url;?>' target='_blank'>click</a></td>
        <td width="50px"></td>
        <td><a href="edit.php?edit <font color="#666666">|</font> delete</td>
    <?php 
      
    }
    ?>
      <tr>
        <td><br /><a href="index.php">>> add new link</a></td>
      </tr>
      
    </table> 
    <br />
    <br />

    </body>
    </html>
    Für euren Rat wär ich echt dankbar! :)

    P.S:
    Tschuldigung für den chaotischen Code; den wollte ich erst am Schluss ordnen =)
     
    Zuletzt bearbeitet: 05.09.2006
Die Seite wird geladen...
Ähnliche Themen - Problem links php Forum Datum
XAMPP Problem mit Zugriffsrechte Web-Programmierung 30.04.2014
Syntax Problem PHP Variable an JS-Funktion Web-Programmierung 12.09.2013
Swiftmailer Problem mit der Danke-Seite Web-Programmierung 03.07.2013
PHP anfänger Problem Web-Programmierung 17.05.2013
Problem mit Klassen und protected... Web-Programmierung 04.03.2013

Diese Seite empfehlen

Benutzerdefinierte Suche