ilch Forum » Allgemein » HTML, PHP, SQL,... » Datensatz ausgeben mir einer Übersicht.

Geschlossen
  1. #1
    User Pic
    Oldemuche Mitglied
    Registriert seit
    11.04.2006
    Beiträge
    1.027
    Beitragswertungen
    44 Beitragspunkte
    Hallo,
    ich wollte mal fragen wie es funktioniert eine Übersicht von Datensätzen zu machen.

    also zb.: man kommt auf eine Seite da steht dann

    - Gamingtreffen...
    - Designertreffen...

    und weitere Datensätze werden aufgelistet. Und wenn man auf die sachen draufklickt, das man dann die richtige Ansicht mit text etc sehen kann.

    Also standart auslesung mache ich immer so:

    <?
     $tabellenname = "";
     
     $localhost    = "";
     $user         = "";
     $datenbank    = "";
     $password     = "";
    
             $db_link = mysql_connect($localhost,$user,$password);
              mysql_select_db($datenbank,$db_link);
    $result = mysql_query("SELECT * FROM $tabellenname",$db_link);
    ?>
    
    <? while ($daten = mysql_fetch_array($result)) { ?>
    <div style="text-align:center;"><? echo $daten[txt]; ?></div>
    <? } ?>


    Wie muss ich es dann erweitern?
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Oldemuche Mitglied
    Registriert seit
    11.04.2006
    Beiträge
    1.027
    Beitragswertungen
    44 Beitragspunkte
    Bitte helft mir ich wäre euch sehr dankbar.
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    lordrepha Mitglied
    Registriert seit
    11.03.2006
    Beiträge
    1.362
    Beitragswertungen
    22 Beitragspunkte
    naja ich würde die id des datensatzes mit anhängen zb.

    <div style="text-align:center;"> <a href="include/includes/blabla...".$row['id].">$daten[txt];
    </a></div>


    und dann beim draufklicken prüfen mit
    if (is_numeric($menu->get(1)))
    {
    $id = intval($menu->get(1));
    
    datenbank abfrage die eben nur den eintrag der im Browser angeziegten id abfragt
    }



    Zuletzt modifiziert von lordrepha am 04.10.2008 - 16:20:27
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    Oldemuche Mitglied
    Registriert seit
    11.04.2006
    Beiträge
    1.027
    Beitragswertungen
    44 Beitragspunkte
    Ehm kannst du mir nen bisschen erklären wie das Finktioniert? ich wills ja auch nen bisschen lernen. Weil irgendwie verstehe ich das gerade nicht. THX im voraus....
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    lordrepha Mitglied
    Registriert seit
    11.03.2006
    Beiträge
    1.362
    Beitragswertungen
    22 Beitragspunkte
    also ich habe es so verstanden du hast eine eigene Seite gemacht mit.


    link1
    link2
    link3

    wenn du auf den jeweiligen link klickst soll alles andere was eben dazu gehört auch ausgelesen werden.

    dazu machst du einfach die db abfrage (wie das geht weißt du ja hast du ja geschrieben)

    jetzt übergibts du an die links jeweils die id aus deiner datenbank

    <a href="include/includes/blabla...-".$row['id].">


    das machst du mit $row['id] (siehe oben)

    das heist dein link schaut nachher in der Browserzeile für link 1 mit id1 so aus:

    www.deine url.de/index.php?seitenname-1


    um an die 1 zu kommen benutzt du
    if (is_numeric($menu->get(1)))


    was dann am ende ungefähr so aussieht
    if (is_numeric($menu->get(1)))
    {
    $id = intval($menu->get(1));
    
    datenbank abfrage die eben nur den eintrag der im Browser angeziegten id abfragt
    }


    beachte auch die dokumentation dazu

    www.ilch.de/doku-entwickler11.html#menue
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    Oldemuche Mitglied
    Registriert seit
    11.04.2006
    Beiträge
    1.027
    Beitragswertungen
    44 Beitragspunkte
    Das heißt später sieht das ganze so aus:

    <?
     $tabellenname = "";
     
     $localhost    = "";
     $user         = "";
     $datenbank    = "";
     $password     = "";
    
             $db_link = mysql_connect($localhost,$user,$password);
              mysql_select_db($datenbank,$db_link);
    $result = mysql_query("SELECT * FROM $tabellenname",$db_link);
    ?>
    
    <? while ($daten = mysql_fetch_array($result)) { ?>
    <a href="www.deine url.de/index.php?seitenname-".$row['id]."></a>
    <? 
    } 
    
    if (is_numeric($menu->get(1)))
    {
    $id = intval($menu->get(1));
    
    datenbank abfrage die eben nur den eintrag der im Browser angeziegten id abfragt
    }
    
    ?>
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    lordrepha Mitglied
    Registriert seit
    11.03.2006
    Beiträge
    1.362
    Beitragswertungen
    22 Beitragspunkte
    so ähnlich.... fang das doch an zu coden dann wirste sehen was passiert...
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.320
    Beitragswertungen
    376 Beitragspunkte
    Naja wenn er kein ilch benutzt, wie es ja aussieht, muss er wohl auf $_GET zurück greifen.
    Sprich Link wäre dann z.b. meineseite.php?id=5
    und dann kannst du über $_GET['id'] diesen Parameter abfragen, allerding solltest du solche Eingaben nicht blind übernehmen, sondern prüfen, ob es auch wirklich eine Zahl ist usw.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    lordrepha Mitglied
    Registriert seit
    11.03.2006
    Beiträge
    1.362
    Beitragswertungen
    22 Beitragspunkte
    naja ich gehe davon aus das wenn er hier postet das er ILCh hat... oder liege ich da falsch???
    0 Mitglieder finden den Beitrag gut.
  10. #10
    User Pic
    XxMaTzExX Mitglied
    Registriert seit
    28.05.2008
    Beiträge
    1.037
    Beitragswertungen
    14 Beitragspunkte
    muss nicht sein

    "HTML, PHP, SQL,...
    Alles rund ums Thema Webprogrammierung."
    0 Mitglieder finden den Beitrag gut.
  11. #11
    User Pic
    lordrepha Mitglied
    Registriert seit
    11.03.2006
    Beiträge
    1.362
    Beitragswertungen
    22 Beitragspunkte
    verstehe..... dann sorry
    0 Mitglieder finden den Beitrag gut.
  12. #12
    User Pic
    Oldemuche Mitglied
    Registriert seit
    11.04.2006
    Beiträge
    1.027
    Beitragswertungen
    44 Beitragspunkte
    Nich sry danke trotzdem... also wie meinst du das prüfen ob es ne zahl ist in id kommt immer ne zahl.
    0 Mitglieder finden den Beitrag gut.
  13. #13
    User Pic
    Balthazar3k Mitglied
    Registriert seit
    23.04.2006
    Beiträge
    422
    Beitragswertungen
    7 Beitragspunkte
    bsp. wenn ich nun auf deiner seite meineseite.php?id=banane eintragen würde ist der Parameter keine Zahl mehr. du würdest ein Fehler bei der datenbankabfrage bekommen.

    So war das doch gemeint oder wenn nicht korrigiert mich ^^
    Kein Support für den Raidplaner über PM.
    0 Mitglieder finden den Beitrag gut.
  14. #14
    User Pic
    dastiii Mitglied
    Registriert seit
    27.12.2005
    Beiträge
    2.354
    Beitragswertungen
    84 Beitragspunkte
    das stimmt schon... doch das ist im Grunde nicht das Problem lachen

    Das Problem ist einfach eine schwere Sicherheitslücke und für eine SQL-Injection BESTENS geeignet lächeln

    => also Inhalt vorher prüfen und nicht direkt in die mysql Abfrage rein
    0 Mitglieder finden den Beitrag gut.
  15. #15
    User Pic
    lordrepha Mitglied
    Registriert seit
    11.03.2006
    Beiträge
    1.362
    Beitragswertungen
    22 Beitragspunkte
    aber prüfe ich es nicht schon mit

    is_numeric($menu->get(1)))



    ?????
    0 Mitglieder finden den Beitrag gut.
  16. #16
    User Pic
    dastiii Mitglied
    Registriert seit
    27.12.2005
    Beiträge
    2.354
    Beitragswertungen
    84 Beitragspunkte
    es war nicht an dich -.-
    0 Mitglieder finden den Beitrag gut.
  17. #17
    User Pic
    Oldemuche Mitglied
    Registriert seit
    11.04.2006
    Beiträge
    1.027
    Beitragswertungen
    44 Beitragspunkte
    Erlichgesagt checke ich grade ma nix. Also wie muss ich es machen wenn ich nicht ilch nurze. Und wäre es möglich, das ihr mir auch erklärt wie ...
    thx schonmal
    0 Mitglieder finden den Beitrag gut.
  18. #18
    User Pic
    Balthazar3k Mitglied
    Registriert seit
    23.04.2006
    Beiträge
    422
    Beitragswertungen
    7 Beitragspunkte
    ZitatZitat geschrieben von DaStIaC

    das stimmt schon... doch das ist im Grunde nicht das Problem lachen

    Das Problem ist einfach eine schwere Sicherheitslücke und für eine SQL-Injection BESTENS geeignet lächeln

    => also Inhalt vorher prüfen und nicht direkt in die mysql Abfrage rein



    kk habs gelesen "http://de.wikipedia.org/wiki/SQL-Injection" ... wust garnicht das das geht traurig wieder was dazu gelernt!
    Kein Support für den Raidplaner über PM.
    0 Mitglieder finden den Beitrag gut.
  19. #19
    User Pic
    Oldemuche Mitglied
    Registriert seit
    11.04.2006
    Beiträge
    1.027
    Beitragswertungen
    44 Beitragspunkte
    Tut mir leid ich bin noch nicht so ein PHP freak. Ich will es lernen und bestelle mir gerade nen paar Bücher. Aber was ihr hier erzählt von SQL-Injection verstehe ich mal gar nicht. Und weiß auch nicht wie ich sowas einbaue....
    0 Mitglieder finden den Beitrag gut.
  20. #20
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.320
    Beitragswertungen
    376 Beitragspunkte
    Also SQL Injections nennt man das wenn man Benutzereingaben, also alles was von $_POST oder $_GET (beides zusammen wäre $_REQUEST) oder $_COOKIE benutzt, ohne vorher zu prüfen was da drin steht.

    Wenn man z.B. eine Abfrage hat
    SELECT name FROM table WHERE id = $_GET['id'];

    Dann könnte jemand in $_GET['id'] eintragen was er will und damit unter Umständen Schäden anrichten, weil er auch SQL Code einbinden kann, meistens kann man es entschärfen indem man Parameter in Anführungszeichen setzt und die Eingaben escapt, dafür gibt es den Befehle mysql_real_escape_string oder mysql_escape_string.

    Als Tipp warte noch bis die Bücher da sind zwinker
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  21. #21
    User Pic
    Oldemuche Mitglied
    Registriert seit
    11.04.2006
    Beiträge
    1.027
    Beitragswertungen
    44 Beitragspunkte
    Danke dir Mairu werde auf die Bücher warten. Aber wäre es möglich das du mir so eine abfrage schreibst mit übersicht, die ich dann nur an meinen zweck anpasse? Ich weiß das ist eine große bitte aber ich wäre dir echt sehr dankbar da ich es dringend brauche.
    0 Mitglieder finden den Beitrag gut.
  22. #22
    User Pic
    OloX Hall Of Fame
    Registriert seit
    25.02.2006
    Beiträge
    990
    Beitragswertungen
    23 Beitragspunkte
    Hey Olde,
    was gib es den für Daten die du ausgeben willst, wenn man auf den Link geklickt hat? Noch ein paar infos wären toll, dann kann ich dir weiter helfen wenn du willst.
    MfG OloX
    PHP, JavaScript, CSS
    0 Mitglieder finden den Beitrag gut.
  23. #23
    User Pic
    Oldemuche Mitglied
    Registriert seit
    11.04.2006
    Beiträge
    1.027
    Beitragswertungen
    44 Beitragspunkte
    Also es gibt einmal "name". Wenn man draufklickt dann soll dann ein "text" ausgegeben werden. Aber ist nicht für Ilch.de...

    Olox danke das du mir weiterhelfen willst!

    mfg: oLde
    0 Mitglieder finden den Beitrag gut.
  24. #24
    User Pic
    OloX Hall Of Fame
    Registriert seit
    25.02.2006
    Beiträge
    990
    Beitragswertungen
    23 Beitragspunkte
    so Olde,
    ich habe für dich mal ein beispiel gebastelt, was mir schon nen bissel Zeit gekostet hat zwinker

    1. Erstelle eine neue PHP Datei mit dem Namen db.Class.php
    <?php
    
    function escape($query)
      {
    	 return mysql_escape_string($query);
      }
    
    class DB_Result
    {
    	var $_result;
    
    	function DB_Result($result)
    	{
    		$this->_result = $result;
    	}
    	
    	function FetchArray()
    	{
    		return @mysql_fetch_array($this->_result);
    	}
    	
    	function dataseek() {
    		return @mysql_data_seek($this->_result);
    	}
    	
    	function fetchrow_assoc() {
     		return @mysql_fetch_assoc($this->_result);
     	}
    	
    	function FetchAssocArray()
    	{
    		return @mysql_fetch_assoc($this->_result);
    	}
    	
    	function FetchObject()
    	{
    		return mysql_fetch_object($this->_result);
    	}
    	
    	function FetchRow()
    	{
    		return @mysql_fetch_object($this->_result);
    	}
    	
    	function NumRows()
    	{
    		return @mysql_num_rows($this->_result);
    	}
    	
    	function smysql_version() {
    		return  mysql_get_server_info($this->_result);
    	}
    	
    	function NumFields()
    	{
    		return mysql_num_fields($this->_result);
    	}	
    	
    	function FieldName($i)
    	{
    		return mysql_field_name($this->_result, $i);
    	}
    	
    	function close()
    	{
    		$r = @mysql_free_result($this->_result);
    		unset($this);
    		return $r;
    	}
    }
     
    class DB
    {
    	var $_handle;
    	
    	function DB($host, $user, $pass, $db)
    	{
    		$this->_handle = @mysql_connect($host, $user, $pass);
    		if(!$this->_handle)
    		{
    			$this->Error('connect');
    			return false;
    		}
    		
    		if(!@mysql_select_db($db, $this->_handle))
    		{
    			$this->Error('selectdb');
    			return false;
    		}
    		
    		return true;
    	}
    	
    	function Query($query)
    	{
    		$res = @mysql_query($query, $this->_handle);
    		if(!$res)
    		{
    			$this->Error('query', $query);
    		}
    		
    		return new DB_Result($res);
    	}
    	
    		function Error($type, $query = '')
    	{
    		global $pref;
    		$error = mysql_error();
    		$errno = mysql_errno();
    		
    		if($errno != 1091 && $errno != 1050 && $errno != 1062)
    		{
    			die("MySQL Error! "."\nQuery\n".addslashes($query)."\n\nError\n".addslashes($error));
    		}
    		return true;
    		
    	}
    	
    	function Disconnect()
    	{
    		mysql_close($this->_handle);
    	}
    }
    ?>


    2. Und nun die daten.php ( muss so heißen ! )
    <!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=utf-8" />
    <title>Daten</title>
    <style type="text/css">
     <!--
    
    body {
      margin:0px;
      background:#141414;
      font-size:10px;
      font-family:Arial, Helvetica, sans-serif;
    }
    
    .daten {
      width:502px;
      margin:5px;
      float:left;
      padding:1px;
      background-color:#00CCFF;
      border:1px solid #3e5e84;  
    }
    
    .daten_read {
      width:494px;
      height:394px;
      float:left;
      margin-left:5px;
      margin-top:5px;
      padding:3px;
      background-color:#00CCFF;
      border:1px solid #3e5e84;  
    }
    .daten ul{
      padding:0px;
      margin: 0px 0px 0px 0px;
      list-style-type:none;
      border:1px solid #3e5e84;
      background:#66FFFF;
      width:500px;
    }
    
    .daten ul li {
      background-color:#00CCFF;
      border: 1px dashed #333300;
      margin: 1px;
      padding: 2px 0px 2px 5px;	
    }
    
    .daten ul li a {
      color: #000000;
      text-decoration: none;
    }
    
    
    .daten ul li:hover{
      font-size:12px;
    
    }
    -->
    </style>
    </head>
    
    <body>
    <?php
    require_once('db.Class.php');
    
    $tabellenname = "DATEN????????"; 
    $dbhost = " ";
    $dbuser = " ";
    $dbpass = " ";
    $dbname = " ";
    $db = new DB($dbhost, $dbuser, $dbpass, $dbname);
    
    switch($_REQUEST['do'])
    {
      case 'read' :
    
      echo '<div class="daten_read">';
    
      if ( is_numeric($_REQUEST['id']) ) {
     
         $id = escape($_REQUEST['id']);
         $abf = "SELECT text 
                 FROM $tabellenname 
    		     WHERE id = '".$id."'";
         $erg = $db->Query($abf);
         $row = $erg->fetchrow();
     
           if ($erg->NumRows() > 0) {
               echo $row->text;
           } else {
               echo 'Kein eintrag gefunden !'."\n"; 
           }	
     
       } else {
          echo 'ID ist keine Zahl!'."\n"; 
       }
        
      echo '</div>';
    
      break;
      default :
      
      echo '<div class="daten"><ul>'."\n";
        $abf = 'SELECT id, title 
    	        FROM '.$tabellenname.'
    		    ORDER BY id DESC
    		    LIMIT 0,30';
    	  $erg = $db->Query($abf);
          while ($row = $erg->FetchAssocArray()) {
          echo '<li><a href="http://'.$_SERVER['SERVER_NAME'].'/daten.php?do=read&id='.$row['id'].'">'.$row['title'].'</a></li>'."\n"; 
    	  }
    	  
      echo '</ul></div>'."\n"; 	
    	
      break;
    }	
    ?>
    </body>
    </html>

    Beide Files müssen in dem selben Ordner sein.
    Jetzt musst du natürlich noch die Variablen anpassen...( DB name, DB Host, DB PW und den $tabellenname zwinker
    Als Spalten habe ich id, title und text genommen zwinker
    Wenn du noch fragen hast...frage einfach lächeln

    MfG OloX


    Zuletzt modifiziert von OloX am 10.10.2008 - 23:38:24
    PHP, JavaScript, CSS
    0 Mitglieder finden den Beitrag gut.
  25. #25
    User Pic
    Oldemuche Mitglied
    Registriert seit
    11.04.2006
    Beiträge
    1.027
    Beitragswertungen
    44 Beitragspunkte
    Fragen habe ich erstmal keine nur nen GROßES LOB! wenn ich dir irgendwie behilflich sein kann dann sag bitte bescheid!..
    0 Mitglieder finden den Beitrag gut.
  26. #26
    User Pic
    Oldemuche Mitglied
    Registriert seit
    11.04.2006
    Beiträge
    1.027
    Beitragswertungen
    44 Beitragspunkte
    Bei mir kommt irgendwie ein fehler:


    Fatal error: Call to undefined method: db->error() in /homepages/31/d41018999/htdocs/presse/db.Class.php on line 99
    0 Mitglieder finden den Beitrag gut.
  27. #27
    User Pic
    OloX Hall Of Fame
    Registriert seit
    25.02.2006
    Beiträge
    990
    Beitragswertungen
    23 Beitragspunkte
    Ich habe die db.class.php mal geupdatet...lade sie bitte nochmal neu hoch und verrate uns den Fehler zwinker
    MfG OloX
    PHP, JavaScript, CSS
    0 Mitglieder finden den Beitrag gut.
  28. #28
    User Pic
    Oldemuche Mitglied
    Registriert seit
    11.04.2006
    Beiträge
    1.027
    Beitragswertungen
    44 Beitragspunkte
    Und nun kommt das raus.

    MySQL Error! Query SELECT id, title FROM presse ORDER BY news_time DESC LIMIT 0,30 Error Unknown column \'news_time\' in \'order clause\'
    0 Mitglieder finden den Beitrag gut.
  29. #29
    User Pic
    OloX Hall Of Fame
    Registriert seit
    25.02.2006
    Beiträge
    990
    Beitragswertungen
    23 Beitragspunkte
    Ändere einfach in der Daten.php Zeile 109
    news_time zu id .
    Dann sollte es klappen zwinker
    MfG OloX


    Zuletzt modifiziert von OloX am 11.10.2008 - 00:17:40
    PHP, JavaScript, CSS
    0 Mitglieder finden den Beitrag gut.
  30. #30
    User Pic
    Oldemuche Mitglied
    Registriert seit
    11.04.2006
    Beiträge
    1.027
    Beitragswertungen
    44 Beitragspunkte
    BOAAA.... Danke Olox!!!.... also wenn ich dir mal helfen kann dann sag bescheit....
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu HTML, PHP, SQL,...

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten