• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

php zeigt sqlite Einträge richtig doch bei der Übergabe kann mysql nix mit anfangen

andynail

Mitglied
Hallo zusammen

ich erstellte seit geraumer Zeit Menüs per sqlite. Die Einträge der Datenbank werden stets richtig angezeigt und auch können auch in Javascript richtig verwendet werden.

Doch jetzt will ich die Einträge der Menüs zum erstellen von Listen an eine mysql Abfrage übergeben und erhalte stets die Fehlermeldung das die Tabelle Interessante Links bzw. wird angezeigt das die Tabelle 'Interessante' nicht existieren würde. Und lasse ich mir die url der gestarteten LinkListe anzeigen, so steht zwischen Interessante und Links eine riesige Zahlenkombination. Und ich verschlüssele per urlencode die Menü Einträge sofort bei der Abfrage um auch Leerräume zulassen zu können.

Wasn das bitte? Kann ich sqlite Datenbanken Einträge nicht verschlüsseln? Und wie bekomme ich es dann bitte hin das auch Interessante Links der Name der Tabelle sein wird für die mysql Abfrage?

Danke Grus Andreas
 
Zuletzt bearbeitet:
Hi

Und hiermit jetzt Code:

das Erstellen der Menüs:
PHP:
$Result = sqlite_query("SELECT * FROM Entries WHERE Ranges = $i ORDER BY DBID" , $db ,SQLITE_BOTH);
 
while($row = sqlite_fetch_array($Result))
{
$Table = $row['Name'];
$DBName = $arr[$i];
$DBID = $row['ID'];
$Datei = $row['File'];
$Parameter = urlencode("b=$i&db=$DBName&table=$Table");
echo "<tr><td><a href='#' Link='$Datei?$Parameter' onclick='OpenDaten(this)' name='Eintrag'>$Table</a></td></tr>";

das Öffnen der Datei:
Code:
function OpenDaten(Link)
{
var Marker = ""
 Link = Link.getAttribute("Link")
if (Link == null) return false
 top.ActiveLink = undefined
 if (Link.search(/MarkerMode=/) == -1) var Marker = "&MarkerMode=" + top.SetupMode
 top.frames['DatenFrame'].location.href = Link + encodeURIComponent(Marker + "&Sort=" + top.document.getElementsByName("SortMenue")[(top.SortIndex + ((top.SortIndex <2)*2))].getAttribute("Sort"))
}

Das Auslesen in der Datei:
PHP:
$Adresse = urldecode($_SERVER['QUERY_STRING']);
parse_str($Adresse, $Parameter);
$table = $Parameter['table'];
$db = $Parameter['db'];
$Sort = $Parameter['Sort'];
$MarkerMode = $Parameter['MarkerMode'];
echo "<script type='text/javascript'>";
echo "alert('".$_SERVER['QUERY_STRING']."');";
echo "</script>";

Und in der aufgerufenen Datei steht:
Error:
Table 'karriere.interessante' doesn't exist

Vielen Dank für Deine Hilfe.

Gruß Andreas
 
In dem von dir gezeigten Quellcode kommt weder "karriere" noch "interessante" vor. Bist Du sicher, dass das der richtige Quellcode ist?
 
Hallo

aber ja doch. In der db steht ja Karriere Interessante Links. Und wie gesagt steht im Menü auch Interessante Links. Und Texte mit nur einem Wort wie zb. Foren werden ohne Probleme angezeigt.

Danke Gruß Andreas
 
Was ist "Karriere" und was ist "Interessante Links" in der Datenbank? Ist "Karriere" eine Tabelle und "Interessante Links" eine Spalte in der Tabelle?

Selbst wenn es in der Datenbank steht, ist für mich weiterhin nicht ersichtlich wie dein Quellcode nun auf diesen Spaltennamen kommt, wenn er doch gar nicht in dem Quellcode steht?

Welche MySQL-Version verwendest Du genau?
 
Also OK

ich verwende server2go und wohl in der neusten Version. Auskunft über die mysql Version konnte ich nicht finden.
Der Name der Datenbank lautet Karriere und der Name der Tabelle lautet Interessante Links.
sqlite_query("SELECT * FROM Entries WHERE Ranges = $i ORDER BY DBID" , $db ,SQLITE_BOTH);

Und die mysql Abfrage lautet:
mysql_query("SELECT * FROM `$table` order by $Sort") OR die("Error: <br>".mysql_error());

Aber sorry das ich dort nicht die mysql Abfrage geschrieben hatte.

Kann dies jetzt zu Klärung helfen? Würde mich freuen. Denn davon hängt die gesamte Seite ab die auf die Menüs basiert.

Danke Gruß Andreas
 
Ja, das führte tatsächlich zu ausreichend Verwirrung. Ich nehme an das $table wird per Link gesetzt? Und in $table steht dann "interessante links" drinne?

Ändere deinen Code von

PHP:
mysql_query("SELECT * FROM `$table` order by $Sort") OR die("Error: <br>".mysql_error());

zu

PHP:
$sql = "SELECT * FROM `".$table."` order by ".$Sort;
echo "Abfrage: ".$sql."<br />";
mysql_query($sql) OR die("Error: <br>".mysql_error());

und schau dir mal an was dort genau für ein Statement zusammengestellt, ausgegeben und ausgeführt wird. Nach deiner Aussage sollte es ja

Code:
SELECT * FROM `Interessante Links` order by XY

sein. Wenn es so ist, nimm dieses Statement und führe es mal direkt in der Datenbank selbst aus (Stichwort phpmyadmin, sollte dein Hoster zur Verfügung stellen).

Und wie man eine MySQL-Version herausbekommt steht im Manual: MySQL :: MySQL 5.0 Reference Manual :: 2.2 Determining your current MySQL version
 
Hallo

je genau so soll die mysql Anzweisung aussehen. Allerding steht ja immer nur Ineteressante als Tabellenname und nicht der geforderte Interessante Links.

Die Menüs werden so erstellt das die gezeigte Javascript Funktion OpenDaten() drauf zugreifen kann und sich die Dati + den Parametern zum öffnen herausholen kann und setzt es dann wieder mit Parametern zum Öffnen der Datei zusammen.

Und lasse ich mir in der aufgerufenen Datei LinkListe.php per Javascript die Adresse ausgeben, dann steht da nicht Interessante Links, sondern Interessante&#160:Links. Und durch das Und Zeichen wird wohl nur Interessante ausgegeben.

Wie soll ich also bitte vorgehen? Kann ich überhaupt die SQLITE Ausgabe verschlüsseln? Aber wie kann ich dann daraus einen aufrufbaren Link zusammenstellen?

Für mich sieht es so aus als ob man sqlite nicht verschlüsseln kann. Denn schreibe ich an einem anderen Ort auf der Seite den aufzurufenden Link per Hand inklusive urlencvode, dann gibt es keine Probleme.

Freue mich auf Hilfe. Danke Gruß Andreas
 
Ich glaube Du meinst

Code:
Interessante&#160[COLOR=red];[/COLOR]Links

und ja, das muss so aussehen wenn dieser Text mit urlencode() maskiert wird (siehe $Parameter). Wenn ein so kodierter Link aufgerufen wird, sollte der Webserver das allerdings von selbst wieder zurückwandeln, also zu

Code:
Interessante Links

Vermutlich passiert das bei dir nicht - muss nicht am Server liegen. So entsteht vermutlich so ein Statement:

Code:
SELECT * FROM `Interessante&160;Links` order by XY

welches natürlich nicht ausgeführt werden kann.

Wie oben schon gesagt: prüfe woher $table genau kommt, wie dessen Wert in das Statement kommt. Irgendwo bei dieser URL-Übergabe ist die Ursache zu finden denke ich.
 
Hallo und vielen Dank

ich schaute mir mal an was in der Datenbank steht per alert beim durchlaufen und erstellen der Menüs. Und da war es zu sehen. viele Einträge hatte merkwürdige Erscheinungen. Ich weis nicht wie das zu Stande kam. Denn die Menüs wurden ja richtig angezeigt und auch in einer Datei die mir die gesamte Datenbank anzeigt war auch nix zu sehen.

Und jetzt schrieb ich noch einmal in die Datenbank per sql Update und siehe da: Es funktioniert.

Also vielen Dank an Alle!

Gruß Andreas
 
Zuletzt bearbeitet:
Zurück
Oben