Shop-Hilfe.com
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 26.09.2007, 23:45   #1
TP-Senior
 
Registriert seit: Jul 2007
Ort: Bobingen
Marki87 ist auf einem guten Weg

Link in Variable "schreiben"


Guten Abend,
ich bräuchte eure Hilfe bei folgender Sache. Eine Deutschlandkarte wurde von mir in mehrere Links (also die Bundesländer) unterteilt. Nun will ich, dass auf einer nachfolgenden Suchergebnisseite alle Datenbanktreffer, die zu einem Bundesland gehören, bei Klick auf den Link angezeigt werden.
Also WHERE bundesland LIKE Variable
Wie schaffe ich es, dass in meiner Variable nun automatisch das richtige Bundesland eingetragen wird, wenn der User bspw. auf die Fläche "Saarland" klickt?
Diese Fläche habe ich übrigens als sog. Hotspot mittels DW erstellt.

Vielen Dank für eure Antworten.
__________________
Herzlichst, euer Markus

http://www.studio-bewertungen.de/
http://www.uni-bewertungen.de/
Marki87 ist offline   Mit Zitat antworten


Alt 27.09.2007, 17:22   #2
TP-Supporter
 
Benutzerbild von Spin
 
Registriert seit: Sep 2002
Ort: Zürich
Spin macht alles soweit korrekt
Hallo Marki

Eigentlich ganz einfach in dem du an den Link des Hotspots einfach noch eine Variable hinhängst und die nachher auswertest.

So in dem Stil
PHP-Code:
<a href="verarbeiten.php?bundesland=saarland">
<
a href="verarbeiten.php?bundesland=bayern">
usw
Auf der Seite verarbeiten kannst du ja dann die Variable Bundesland mittels $_GET['bundesland'] holen und dementsprechend dein SQL Statement generieren.

Etwa so:

PHP-Code:
$bundesland $_GET['bundesland'];
$sql "SELECT spalte1, spalte2 FROM Tabelle1 WHERE bundesland ="'.$bundesland.'""
Ist doch ganz isi

Gruss: Spin
Spin ist offline   Mit Zitat antworten
Alt 27.09.2007, 18:32   #3
TP-Senior
 
Registriert seit: Jul 2007
Ort: Bobingen
Marki87 ist auf einem guten Weg
Vielen Dank Spin, jetzt funktioniert es!!!
__________________
Herzlichst, euer Markus

http://www.studio-bewertungen.de/
http://www.uni-bewertungen.de/
Marki87 ist offline   Mit Zitat antworten
Alt 28.09.2007, 09:30   #4
DSB
TP-Veteran
 
Benutzerbild von DSB
 
Registriert seit: Mar 2005
Ort: Weyhe
DSB hilft, wo's gehtDSB hilft, wo's gehtDSB hilft, wo's gehtDSB hilft, wo's geht
Um MySQL-Injection zu verhindern, würde ich Zahlenwerte übergeben. Diese lassen sich leicht auf Manipulation überprüfen. So kann man wirkungsvoll Manipulationsversuchen vorbeugen.

Beispiel:
PHP-Code:
<a href="verarbeiten.php?bundesland=0"
<
a href="verarbeiten.php?bundesland=1">
... 
Auswertung mit Validierung:
PHP-Code:
$bundeslaender=array('saarland','bayern','...'); // Vorgabe erlaubter Werte
$bundesland = isset($_GET['bundesland']) ? intval($_GET['bundesland']):0// durch intval wird zwangsweise eine Zahl aus der uebergebenen Variablen gemacht. Textmanipulationen bleiben dadurch ohne Wirkung
if (isset($bundeslaender[$bundesland])) // Pruefen -> gibt es den Index? Wenn nicht hat einer rumgepfuscht
$sql "SELECT spalte1, spalte2 FROM Tabelle1 WHERE bundesland ="'.$bundeslaender[$bundesland].'"";  
else die(
"Du gemeiner Hacker! Lass das Manipulieren der Variablen sein oder ich sags Deiner Mutti!"); 
__________________
Gruß, DSB
Einfaches Backup/ Restore Deiner MySQl-Datenbank
DSB ist offline   Mit Zitat antworten
Alt 28.09.2007, 11:28   #5
TP-Senior
 
Registriert seit: Jul 2007
Ort: Bobingen
Marki87 ist auf einem guten Weg
Danke für den Tip, die Abfrage scheint auch schon richtig zu sein, allerdings habe ich noch eine Verständnisfrage zu <a href= :
Gibst du den Links aufsteigende Zahlen (von 0-15 hier) und ordnest jedem Bundesland dann eine Zahl zu oder habe ich das jetzt falsch verstanden?
Wenn ich es nämlich so mache, müsste ja im Saarland-Link "0" stehen
(dies funktioniert allerdings nicht, dann werden keine Treffer angezeigt).
__________________
Herzlichst, euer Markus

http://www.studio-bewertungen.de/
http://www.uni-bewertungen.de/
Marki87 ist offline   Mit Zitat antworten
Alt 28.09.2007, 12:18   #6
DSB
TP-Veteran
 
Benutzerbild von DSB
 
Registriert seit: Mar 2005
Ort: Weyhe
DSB hilft, wo's gehtDSB hilft, wo's gehtDSB hilft, wo's gehtDSB hilft, wo's geht
Die Nummer entspricht dem Index des Arrays - also wie Du richtig vermutest, entspricht 0 dann "saarland".
Zum Test gebe ich Dir das Array einmal auf dem Bildschirm aus:
PHP-Code:
$bundeslaender=array('saarland','bayern','...'); // Vorgabe erlaubter Werte
print_r($bundeslaender);
$bundesland = isset($_GET['bundesland']) ? intval($_GET['bundesland']):0// durch intval wird zwangsweise eine Zahl aus der uebergebenen Variablen gemacht. Textmanipulationen bleiben dadurch ohne Wirkung
// Pruefen -> gibt es den Index? Wenn nicht hat einer rumgepfuscht
if (isset($bundeslaender[$bundesland]))
{
    
$sql="SELECT spalte1, spalte2 FROM Tabelle1 WHERE bundesland ='".$bundeslaender[$bundesland]."'";
}
else die(
"Du gemeiner Hacker! Lass das Manipulieren der Variablen sein oder ich sags Deiner Mutti!"); 
Beim Querystring hatte ich gerade Hochkommas und Gänsefüßchen vertauscht. Jetzt passt es.

Generell ist es aber kein gutes Datenbankdesign wenn in der Spalte für jeden Datensatz "saarland" als Text in der DB steht. Das verbraucht unnötig Speicherplatz in der DB und macht die Abfragen zusätzlich langsamer (ein Textvergleich ist immer wesentlich langsamer, als ein Vergleich von Ganzzahlen). Stell Dir vor, Du hast 2000 Datensätze für das Saarland und in jedem dieser Datensätze steht dieser String "saarland". Das sind 8 Bytes pro Eintrag mal 2000 Datensätze=16.000 Bytes Speicherplatzverbrauch in der Datenbanktabelle.

Wenn Du auch in der DB Zahlen speicherst (Typ Tinyint (1) ), dann verbraucht die gleiche Information nur 2000 Bytes. Das entspricht einer Ersparnis von 14.000 Bytes oder 87,5 Prozent. Mit "Mecklenburg-Vorpommern" darfst Du die Ersparnis jetzt selbst ausrechnen.

Das mag zunächst kleinlich klingen, wirkt sich aber bei größeren Projekten erheblich auf die Performance und den Speicherplatzbedarf aus. Man sollte da von Anfang an drauf achten.
Das nur so als Denkanstoß.
__________________
Gruß, DSB
Einfaches Backup/ Restore Deiner MySQl-Datenbank
DSB ist offline   Mit Zitat antworten
Alt 28.09.2007, 13:35   #7
TP-Senior
 
Registriert seit: Jul 2007
Ort: Bobingen
Marki87 ist auf einem guten Weg
Das habe ich jetzt geändert, leider werden aber immer noch keine Ergebnisse angezeigt.
Sicherlich habe ich deinen Codeteil nicht richtig eingesetzt.
Hier mal mein Versuch:
PHP-Code:
mysql_select_db($database_Studios$Studios);
$bundeslaender=array('bayern','hes','badenw','berl','nieder');

$bundesland = isset($_GET['bundesland']) ? intval($_GET['bundesland']):0;
$query_Abfrage_studios "SELECT id, name, plz, ort, freigeben FROM tbl_studios WHERE bundesland LIKE '".$bundeslaender[$bundesland]."' ORDER BY studioname ASC";
$Abfrage_studios mysql_query($query_Abfrage_studios$Studios) or die(mysql_error());
$row_Abfrage_studios mysql_fetch_assoc($Abfrage_studios);
$totalRows_Abfrage_studios mysql_num_rows($Abfrage_studios); 
Wie du siehst habe ich bei den Bundesländern Kürzel benutzt, das dürfte aber sicherlich nicht der Grund sein...
Wäre super wenn du mir sagen könntest wo der Fehler liegt!
__________________
Herzlichst, euer Markus

http://www.studio-bewertungen.de/
http://www.uni-bewertungen.de/
Marki87 ist offline   Mit Zitat antworten
Alt 28.09.2007, 19:01   #8
DSB
TP-Veteran
 
Benutzerbild von DSB
 
Registriert seit: Mar 2005
Ort: Weyhe
DSB hilft, wo's gehtDSB hilft, wo's gehtDSB hilft, wo's gehtDSB hilft, wo's geht
Warum bei Dir jetzt keine Ergebnisse angezeigt werden kann ich nur vermuten, da ich weder Deine MySQl-Tabellen besitze, noch deren genauen Aufbau kenne.
Lass Dir den Query einfach mal ausgeben und gebe ihn händisch zur Überprüfung im MySQLDumper im SQLBrowser oder in PHPMyAdmin ein. Klappt der Query dort? Ich habe z.B. mal den Spaltennamen "name" in Backticks gesetzt, da dies in höheren MySQL-Versionen ein reserviertes Wort ist.

Warum benutzt Du LIKE anstatt =?
Wenn Du den erwarteten Wert genau kennst, benötigst Du das langsamere LIKE nicht. LIKE macht nur in Verbindung mit Wildcards Sinn wenn man Teile von Inhalten finden muss.

PHP-Code:
mysql_select_db($database_Studios$Studios);
$bundeslaender=array('bayern','hes','badenw','berl','nieder');
$bundesland = isset($_GET['bundesland']) ? intval($_GET['bundesland']):0;
$query_Abfrage_studios "SELECT id, `name`, plz, ort, freigeben FROM tbl_studios WHERE bundesland='".$bundeslaender[$bundesland]."' ORDER BY studioname ASC";
echo 
"<br>Query: <br>".$query_Abfrage_studios."<br>";
$Abfrage_studios mysql_query($query_Abfrage_studios$Studios) or die(mysql_error());
$row_Abfrage_studios mysql_fetch_assoc($Abfrage_studios);
$totalRows_Abfrage_studios mysql_num_rows($Abfrage_studios); 
__________________
Gruß, DSB
Einfaches Backup/ Restore Deiner MySQl-Datenbank
DSB ist offline   Mit Zitat antworten
Alt 28.09.2007, 19:14   #9
TP-Senior
 
Registriert seit: Jul 2007
Ort: Bobingen
Marki87 ist auf einem guten Weg
Jetzt habe ich mal den Code so von dir übernommen.
Ausgegeben hat er mir folgendes:
Code:
<br>Query: <br>SELECT id, `name`, plz, ort, freigeben FROM tbl_studios WHERE bundesland='bayern' ORDER BY studioname ASC<br>
Obwohl er bayern erkennt (und im Feld bundesland bayern drinsteht) gibt er mir keine Ergebnisse/Treffer aus.

Das Echo wird ganz normal so ausgegeben:
PHP-Code:
<?php echo $row_Abfrage_studios['name']; ?>
Ich weiß wirklich nicht weiter...
__________________
Herzlichst, euer Markus

http://www.studio-bewertungen.de/
http://www.uni-bewertungen.de/
Marki87 ist offline   Mit Zitat antworten
Alt 28.09.2007, 20:11   #10
DSB
TP-Veteran
 
Benutzerbild von DSB
 
Registriert seit: Mar 2005
Ort: Weyhe
DSB hilft, wo's gehtDSB hilft, wo's gehtDSB hilft, wo's gehtDSB hilft, wo's geht
Steht denn "bayern" auch exakt so in der Datenbanktablle?
Groß-/ Kleinschreibung beachtet?
__________________
Gruß, DSB
Einfaches Backup/ Restore Deiner MySQl-Datenbank
DSB ist offline   Mit Zitat antworten
Alt 28.09.2007, 20:52   #11
TP-Senior
 
Registriert seit: Jul 2007
Ort: Bobingen
Marki87 ist auf einem guten Weg
Genau so steht es drin.
Dann kann es doch nur an einem falschen Echo liegen, da ja der Query eigentlich besagt, dass sonst alles funktioniert...?
__________________
Herzlichst, euer Markus

http://www.studio-bewertungen.de/
http://www.uni-bewertungen.de/
Marki87 ist offline   Mit Zitat antworten
Alt 28.09.2007, 22:02   #12
DSB
TP-Veteran
 
Benutzerbild von DSB
 
Registriert seit: Mar 2005
Ort: Weyhe
DSB hilft, wo's gehtDSB hilft, wo's gehtDSB hilft, wo's gehtDSB hilft, wo's geht
Ach Markus, sei doch nicht so unbeholfen. Du musst als Programmierer schon in der Lage sein ein Problem einzugrenzen und durch Überprüfung feststellen können an welcher Stelle es schief läuft.
Ich schrieb weiter oben z.B., dass Du den Query einmal in MySQLDumper oder PhpMyAdmin ausführen sollst, um zu überprüfen, ob dieser überhaupt korrekt ist und Ergebnisdatensätze liefert. Falls ja, kannst Du das als Fehlerquelle ausschließen.
Dann wäre im nächsten Schritt zu überprüfen, was genau in $row_Abfrage_studios drinsteht. Da es sich um ein assoziatives Array handelt, mach eine Testausgabe mittels
PHP-Code:
print_r($row_Abfrage_studios); 
so wie ich es weiter oben auch gemacht habe.
Du musst die Werkzeuge nur richtig einsetzen, um dem Fehler auf die Spur zu kommen. Also Gehirnzellen frisch geputzt und jetzt selbst ran ans Werk.
__________________
Gruß, DSB
Einfaches Backup/ Restore Deiner MySQl-Datenbank
DSB ist offline   Mit Zitat antworten
Alt 28.09.2007, 23:48   #13
TP-Senior
 
Registriert seit: Jul 2007
Ort: Bobingen
Marki87 ist auf einem guten Weg
So jetzt läuft es, ich hatte in meiner Suchergebnisseite noch ein 2. echo stehen, also ein wahnsinnig dummer Fehler, der nur einem Anfänger passieren kann.
Trotzdem vielen, vielen Dank für deine engagierte Hilfe und die nützlichen Tips.
__________________
Herzlichst, euer Markus

http://www.studio-bewertungen.de/
http://www.uni-bewertungen.de/
Marki87 ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
Link in Variable "schreiben" Link in Variable "schreiben"
« Anbieter für SMS-Benachrichtigung | Shell-Skript per PHP ausführen »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:56 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56