Glossar Script

Hallo,

ja PDO wurde mir hier im Forum bei meinen Start mit PHP empfohlen. Ich verstehe es auch nicht, ich habe den ganzen Tag mehr oder weniger probiert. Hin und Her, aber ich finde nicht warum PHP nicht mag.

MFG
Silvio
 
ich kann dir nur empfehlen mal alle Variablen mit var_dump($variable); auszugeben um zu schauen ob vllt. irgendwo nicht der richtige Wert drin ist.
 
Morgen,


mmh ganze Zeit probiert, den Code drei mal neu geschrieben, aber will nicht klappen. Ich habe das einmal probiert und var_dump($_GET) und var_dump($list) gesetzt, es kommt nur folgende Meldung,

array(1) { ["list"]=> string(1) "h" } string(1) "h"

was meiner Meinung nach aussieht, als wenn es korrekt ist.


MFG
Silvio
 
Moin,

PHP:
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);
require ("inc/db/db.html");
$site = "tabs.html";


/* Built the menu */
// Set ABC in Array for the menu
$abc = array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z");


// Give out the menu
echo "<ul class=\"lexikon_menu\">\n";
foreach($abc as $menu)
{
	echo "<li><a href=\"".$site."?list=".$menu."#index\">".strtoupper($menu)."</a></li>\n";
}
echo "</ul>\n";
/* Menu is build */

/* Load the entrys from database as index */
// Build the statement for Database with PDO
$query = $db->prepare("SELECT id, erster, title, beschreibung FROM `glossar` ORDER BY erster");
if (!$query)
{
	die("Execute query error, because: " . $db->errorInfo());
}
$query->execute();

// Give out the Index of Table
while ($row = $query->fetch(PDO :: FETCH_ASSOC))
{
	echo "<ul>\n";
	echo "<li>".htmlspecialchars($row['title'])."</li>\n";
	echo "<li>".htmlspecialchars($row['beschreibung'])."</li>\n";
	echo "</ul>\n";
}
/* Index is loaded */

/* Load the Entys for activated character */
$list =	(isset($_GET['list']))
			? $_GET['list']
			: '';
 // hier prüfst du auf $list weil du $_GET['list'] bereits "darein" geschrieben hast :D			
if(!empty($list) && $list != '')
{
	print_r($_GET);

    // Database Statement and handle the connection
    $query = $db->query("SELECT id, erster, title, beschreibung FROM `glossar` WHERE erster='".addslashes($list)."'");
    if (!$query)
	{
		die("Execute query error, because: " . $db->errorInfo());
	}
    $query->execute();

	/* den teil hier hab ich mal vorrübergehend rausgenommen
    // Give out the Database Entrys
    while($row = $query->fetch(PDO :: FETCH_ASSOC))
	{
        echo "<ul>\n";
        echo "<li>".htmlspecialchars($row['title'])."</li>\n";
        echo "<li>".htmlspecialchars($row['beschreibung'])."</li>\n";
        echo "</ul>\n";
    }
	*/
	echo '<pre>$query->fetch(PDO :: FETCH_ASSOC) = <br>';
	var_dump($query->fetch(PDO :: FETCH_ASSOC));
	echo '</pre>';

}
/* The character Entrys from database is loaded */

/* At end we close active connections */
$row = null;
$query = null;
$db = null;
?>

Was spuckt der denn bei diesem Code aus?
 
Zuletzt bearbeitet:
Mal eine anderer Aufhänger.
Du schreibst, dass dein Query-Log das folgende ausgibt
Code:
110609 15:02:40   153 Connect   root@localhost on fundi
          153 Query SELECT id, erster, title, beschreibung FROM `glossar` ORDER BY erster
          153 Query SELECT id, erster, title, beschreibung FROM `glossar` WHERE erster='e'
          153 Query SELECT id, erster, title, beschreibung FROM `glossar` WHERE erster='e'
          153 Quit  
110609 15:02:41   154 Connect   root@localhost on fundi
          154 Query SELECT id, erster, title, beschreibung FROM `glossar` ORDER BY erster
          154 Query SELECT id, erster, title, beschreibung FROM `glossar` WHERE erster='p'
          154 Query SELECT id, erster, title, beschreibung FROM `glossar` WHERE erster='p'
          154 Quit
Funktionieren denn diese Queries wenn du sie mir phpMyAdmin testest?
SQL:
SELECT id, erster, title, Beschreibung FROM `glossar` WHERE erster='e'
Wenn das keine Daten ausgibt, dann:
Ist `erster`immer klein geschrieben?
Verscuhe sonst mal
SQL:
SELECT id, erster, title, Beschreibung FROM `glossar` WHERE LOWER(erster)='e'
 
Zuletzt bearbeitet von einem Moderator:
Morgen,

@gordonk

Die Ausgabe von var_dump lautet wie folgt:

Code:
Array ( [list] => i )
$query->fetch(PDO :: FETCH_ASSOC) = 
array(4) {
  ["id"]=>
  string(2) "12"
  ["erster"]=>
  string(1) "i"
  ["title"]=>
  string(20) "Investiertes Kapital"
  ["beschreibung"]=>
  string(125) "Tatsächliche verzinste und kostenverursache Kapital des Unternehmens (Eigenkapital + Langfristige Rückstellungen + Kredite)"
}

Zweiter Buchstabe:

Code:
Array ( [list] => e )
$query->fetch(PDO :: FETCH_ASSOC) = 
array(4) {
  ["id"]=>
  string(1) "1"
  ["erster"]=>
  string(1) "e"
  ["title"]=>
  string(4) "EBIT"
  ["beschreibung"]=>
  string(31) "Ergebnis vor Zinsen und Steuern"
}
Aber die Website bleibt auch hier bei den kompletten Angaben, Sie lädt also nicht nur den entsprechenden Buchstaben.

@Yaslaw

Die Abfragen funktionieren beide, wie du in den Bildern siehst. Ich habe hier im Forum den Tipp gelesen, auch bekommen vorher die SELECT Anweisungen mit phpmyadmin zu testen.


MFG
Silvio
 

Anhänge

  • SELECT1.png
    SELECT1.png
    34 KB · Aufrufe: 8
  • SELECT2.png
    SELECT2.png
    32,3 KB · Aufrufe: 4
Zuletzt bearbeitet:
PHP:
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);
require ("inc/db/db.html");
$site = "tabs.html";


/* Built the menu */
// Set ABC in Array for the menu
$abc = array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z");


// Give out the menu
echo "<ul class=\"lexikon_menu\">\n";
foreach($abc as $menu)
{
    echo "<li><a href=\"".$site."?list=".$menu."#index\">".strtoupper($menu)."</a></li>\n";
}
echo "</ul>\n";
/* Menu is build */

/* Load the entrys from database as index  // WARUM ? versteh ich nicht , ich denk das soll nur für den ausgesuchten buchstaben passieren
// Build the statement for Database with PDO
$query = $db->prepare("SELECT id, erster, title, beschreibung FROM `glossar` ORDER BY erster");
if (!$query)
{
    die("Execute query error, because: " . $db->errorInfo());
}
$query->execute();

// Give out the Index of Table
while ($row = $query->fetch(PDO :: FETCH_ASSOC))
{
    echo "<ul>\n";
    echo "<li>".htmlspecialchars($row['title'])."</li>\n";
    echo "<li>".htmlspecialchars($row['beschreibung'])."</li>\n";
    echo "</ul>\n";
}
*/
/* Index is loaded */

/* Load the Entys for activated character */
$list =    (isset($_GET['list']))
            ? $_GET['list']
            : '';
 // hier prüfst du auf $list weil du $_GET['list'] bereits "darein" geschrieben hast :D            
if(!empty($list) && $list != '')
{
    print_r($_GET);

    // Database Statement and handle the connection
    $query = $db->query("SELECT id, erster, title, beschreibung FROM `glossar` WHERE erster='".addslashes($list)."'");
    if (!$query)
    {
        die("Execute query error, because: " . $db->errorInfo());
    }
    $query->execute();


    // Give out the Database Entrys
    while($row = $query->fetch(PDO :: FETCH_ASSOC))
    {
        echo "<ul>\n";
        echo "<li>".htmlspecialchars($row['title'])."</li>\n";
        echo "<li>".htmlspecialchars($row['beschreibung'])."</li>\n";
        echo "</ul>\n";
    }

//    echo '<pre>$query->fetch(PDO :: FETCH_ASSOC) = <br>';
//    var_dump($query->fetch(PDO :: FETCH_ASSOC));
//    echo '</pre>';

}
/* The character Entrys from database is loaded */

/* At end we close active connections */
$row = null;
$query = null;
$db = null;
?>

Hey, wolltest das wohl so haben ?
Sonst glaub ich reden wir aneinander vorbei :d
 
Hallo,

ja ist richtig so. Ich muss also den Index irgendwie ausblenden, wenn auf einen Buchstaben geklickt wird. Das wird wohl mit PHP nicht möglich sein. Oder gibt es einen Weg?

Eigentlich war der Plan von allen Einträgen heraus sollen dann die Buchstaben bei Wahl einzeln gezeigt werden. Zurzeit sind es noch nicht sehr viele Einträge, aber es wird noch erweitert.

Aber zumindest funktioniert es jetzt.

Silvio
 
Hallo,


wenn dir Seite tabs.html (die heisst später lexikon.html) aufgerufen wird erscheinen die ersten 30 Einträge der Datenbanktabelle glossar. Wenn man dann auf einen Buchstaben klickt, werden nur die Einträge angezeigt, die dem Buchstaben (erster = a,b,c, etc.) zugewiesen sind.

Könnte man das ganze nicht in ein IF Konstrukt packen? Wenn die tabs.html ausgeführt wird, rufe den Index auf, wenn $list übergeben wird zeige nur diese Einträge an? Ich bin zwar nicht gerade stark im logisch denken, aber wäre es damit machbar. Ich mag Java nicht unbedingt, damit lässt sich der Index ausschalten und die entsprechenden Einträge einschalten.

Was denkt Ihr?

MFG
Silvio
 
Zurück