Tascha Geschrieben 27. Juli 2009 Geschrieben 27. Juli 2009 Guten Morgen, ich bin jetzt schon seit längerem an ein und dem gleichen Thema dran: Ich möchte durch $_GET['ip'] eine IP-Adresse aus der Adressleiste ziehen. Die IP-Adresse möchte ich dann in einer Datenbankabfrage verwenden. Und diese Abfrage wird dann in einem Grid mithilfe von ExtJS dargestellt. Ich habe keine Fehlermeldungen. [highlight]Das ganze Problem an der Sache ist, dass die Variable nicht an die Funktion übergeben wird[/highlight](erkennbar daran, dass die Ausgabe leer ist, probiert mit echo $ip_num in der Funktion). Ich habe es mit einer globalen Variable und mit Parameterübergabe an die Funktion ausprobiert. 1. Abfrage der IP-Adresse und Speicherung in Variable: if (isset($_GET['ip'])) { $ip_num = $_GET['ip']; } [/php] 2. Aufruf der Funktion in Switch-Anweisung [php] switch($task){ case "GETIP": get_ip_Cicle($ip_num); break; ............................... ............................... default: echo "{failure:true}"; break; } Und 3. Die eigentliche Funktion, hier mit Parameterübergabe: echo $ip_num; //Ausgabe vorhanden function get_ip_Cicle($ip_num){ echo $ip_num; //Ausgabe leer $query = "select inet_ntoa( ipv4 ) as ipv4_addr, hostname from ******* where inet_ntoa(ipv4) ='$ip_num'"; /*habe auch ausprobiert, ob die Abfrage korrekt ist, indem ich manuell eine IP-Adresse eingetragen hab, alles korrekt*/ $result = mysql_query($query) OR die (mysql_error()); $nbrows = mysql_num_rows($result); if($nbrows>0){ while($rec = mysql_fetch_array($result)){ $arr[] = $rec; } $jsonresult = JEncode($arr); echo '({"total":"'.$nbrows.'","results":'.$jsonresult.'})'; } else { echo '({"total":"0", "results":""})'; } } ............................... ............................... //Hier ist eine JEncode- Funktion .............................. [/php] Ich weiß nicht, was ich noch versuchen soll, kann mir jemand helfen? Wenn irgendwas blöd ausgedrückt ist oder was fehlt, bitte Bescheid geben. Liebe Grüße Tascha Zitieren
flashpixx Geschrieben 27. Juli 2009 Geschrieben 27. Juli 2009 Ich möchte durch $_GET['ip'] eine IP-Adresse aus der Adressleiste ziehen. Schau Dir mit var_dump einmal an, was in dem Array von Get drin steht bzw überlege ob der Aufruf Deines Forms / Links mit den Parametern korrekt ist Im Moment sehe ich keinen Fehler. Man kann aber auch die IP des Clients, der die Anfrage stellt auch automatisch ermitteln Phil Zitieren
T3D Geschrieben 27. Juli 2009 Geschrieben 27. Juli 2009 Mach die ausgabe der ip_num variable mal vor dem Funktionsaufruf, also im switch, und nicht vor die Deklaration. wenn du naemlich die funktion am anfang der Datei machst, kann es ja passieren das du die im laufe der datei noch einmal ueberschreibst. Wenn die variable da schon leer is, setz sie an verschiedene stellen im Quellcode zur ausgabe hin, dann siehst du wo du diese ueberschreibst oder was auch immer du damit ausversehn machst. Manchmal passiert es auch das du in nem IF ein = vergisst und somit ungewollt die Variable ueberschreibst. Ted Zitieren
Tascha Geschrieben 27. Juli 2009 Autor Geschrieben 27. Juli 2009 Hallo und danke erstmal für die Antwort. Habs mir mit var_dump mal ausgeben lassen: array(2) { ["ip"]=> string(12) "12.345.67.89" ["view"]=> string(4) "true" } Alles korrekt, aber sonst würde mir die Variable $ip_num, wenn ich sie ausserhalb der Funktion mit echo ausgebe, doch auch nichts Korrektes anzeigen oder? Bloß warum ist die Variable in der Funktion leer bzw warum übergebt der die nicht vernünftig? Blöd wenn man durch eine Kleinigkeit immer soviel Zeit verliert Zitieren
T3D Geschrieben 27. Juli 2009 Geschrieben 27. Juli 2009 kannst du evtl mal die komplette seite zeigen? an welcher stelle machst du das vardump? switch($task){ case "GETIP": /* FÜGE HIER MAL VARDUMP AUF IP_NUM EIN */ get_ip_Cicle($ip_num); break; [/PHP] ich nehme einfach an das die variable da schon leer is Ted Zitieren
Tascha Geschrieben 27. Juli 2009 Autor Geschrieben 27. Juli 2009 Hmm wenn ich sie in der Switch-Anweisung ausgeben lasse, ist auch nix mehr drin: switch($task){ case "GETIP": echo $ip_num; get_ip_Cicle($ip_num); ...... ..... [/php] Mit dem '='-Zeichen hab ich eben schon überall geschaut. Also: Ich habe keine Ausgabe in der Switch-Anweisung und direkt in der Funktion, sonst überall bei mir im Code. Zitieren
T3D Geschrieben 27. Juli 2009 Geschrieben 27. Juli 2009 probier bitte mal dieses var_dump($task ,$ip_num); switch($task){ case "GETIP": echo $ip_num; get_ip_Cicle($ip_num); [/PHP] ich glaube die funktion wird gar nicht aufgerufen und "$task" ist leer Ted Zitieren
Tascha Geschrieben 27. Juli 2009 Autor Geschrieben 27. Juli 2009 (bearbeitet) Okayyy, jetzt bin ich noch verwirrter.... Hab natürlich die Funktion gar nicht aufgerufen, da ich die ganze Zeit direkt meine Database.php in der Adresszeile ausgeführt hab. Der kam ja gar nicht dazu was in $task zu schreiben, um die Funktion aufzurufen. :upps :old Anzeigen tut er mir die Ip-Adresse im Grid trotzdem nicht, ich glaub ich muss mal zum ExtJS- Forum wandern, oder kennt sich jemand damit aus? Das hier ist meine Oberfläche Ext.onReady(function(){ teest(); var TabPanel = new Ext.TabPanel({ region: 'center', activeTab:0, layoutOnTabChange: true, items:[{ title: 'Startseite', closable:false, autoScroll:true },{ //Darum gehts eigentlich nur: title: '***********', layout:'fit', items: [test_ListingEditorGrid], //Weiter unten wird das item beschrieben closable:true, // }], listeners: { tabchange: function(newLoad){ newLoad.doLayout(); } } }); var item1 = new Ext.Panel({ title: 'Administration', html: '*********;', layout:'accordion', animate: true, icon: '.gif' }); var item2 = new Ext.Panel({ title: '*********', html: '***********;', layout:'accordion', cls:'empty' }); var viewport = new Ext.Viewport({ layout: 'border', renderTo: Ext.getBody(), items: [{ region: 'north', html: '<h1 class="x-panel-header">title</h1>', icon: '/Icons/magnifier.gif', iconCls: 'border', autoHeight: true, border: false, margins: '0 0 5 0' },{ region: 'west', layout: 'accordion', layoutConfig: { animate: true }, collapsible: true, split: true, width: 210, margins: '0 0 0 5', items: [{ title: 'Settings', html: 'Some settings in here.', border: false, icon: '***********' },{ title: 'testtest', html: '<p>Some settings in here.</p>', border: false, iconCls: 'settings' }] },{ region: 'south', xtype: 'panel', html: 'Status' }, TabPanel ] }); //Viewport close }) [/php] Hier die Funktion teest() die am Anfang ausgeführt wird: [php] var test_DataStore; var test_ColumnModel; var test_ListingEditorGrid; function teest(){ test_DataStore = new Ext.data.Store({ id: 'test_DataStore', proxy: new Ext.data.HttpProxy({ url:'database.php', method: 'POST' }), baseParams:{task: "GETIP"}, //Hier wird $task beschrieben autoLoad: true, reader: new Ext.data.JsonReader({ root:'results', totalProperty:'total', id: 'id' },[ {name: 'hostname', type:'string', mapping:'hostname'}, {name: 'ipv4_addr', type:'string', mapping:'ipv4_addr'}, {name: 'ipv6', type:'string', mapping:'ipv6'}, ]), sortInfo: {field: 'hostname', direction: "ASC"} }); test_ListingEditorGrid = new Ext.grid.GridPanel({ //Hier ist das Item id: 'test_ListingEditorGrid', store: test_DataStore, columns: [ {header: 'hostname', dataIndex: 'hostname', width: 160}, {header: 'ipv4_addr', dataIndex: 'ipv4_addr', width: 130}, {header: 'ipv6', dataIndex: 'ipv6', width: 60}, ], viewConfig: {forceFit: false} }); } Es läuft soweit alles. Nur, dass die Grids leer sind Hat jemand ne Ahnung davon? Ansonsten werd ich dann mal abwandern. Danke nochmal Bearbeitet 27. Juli 2009 von Tascha Zitieren
Tascha Geschrieben 28. Juli 2009 Autor Geschrieben 28. Juli 2009 so ich starte jetzt noch einen Versuch. Ich glaube, ich kann das Problem jetzt mal kurz und knapp schildern: Ob ich die Datenbankabfrage mit einer Variablen, wie $ip_num mache oder ob mit 12.345.67.89. Mit beiden bekomme ich bei Aufruf der Funktion die richtige Ausgabe. Wenn ich das aber mit einem Grid verwende, bekomme ich bei $ip_num keine Ausgabe...( Hääääää? Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.