Zum Inhalt springen

Parameterübergabe in PHP


Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 :(

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 :rolleyes:

Hat jemand ne Ahnung davon? Ansonsten werd ich dann mal abwandern.

Danke nochmal :)

Bearbeitet von Tascha
Link zu diesem Kommentar
Auf anderen Seiten teilen

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ääääää?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...