2016-11-21 7 views
-1

Hallo da habe ich ein Problem mit meinem Code:

if (!empty($_GET['id'])){ 
    $id = $_GET['id']; 
}else if (!empty($_POST['id'])){ 
    $id = $_POST['id']; 
} 

$get_id = 'SELECT * FROM kunde WHERE id=' . $id; 
$r = mysql_query($get_id); 
$t = mysql_fetch_array($r); 

$_SESSION['id'] = $t['id']; 

ich mein verstecktes Feld auch haben:

<input type="hidden" name="id" value="<?php echo $_SESSION['id']; ?>"> 

Aber ich habe immer den gleichen Fehler:

Notice: Undefined variable: id in C:\xampp\htdocs\Uebungsklausur\PHP\change.php on line 30 

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\Uebungsklausur\PHP\change.php on line 32 

Bitte helfen Sie mir Jungs .. ich will nur die IDs aus der Tabelle „Kunde“ bekommen

EDIT: Danke Jungs, ich habe es gelöst. Das Problem lag im Formular-Tag. Das war der erste Code: <form method="post"> Und jetzt ist es: '<form method="post" action=" change.php?id=' . $row[0] . '">';

+3

Mögliche Duplikat [PHP: "Hinweis: Nicht definierte Variable" und "Hinweis: Undefinierter Index"] (http://stackoverflow.com/questions/4261133/php-notice-undefined-variable-and-notice-undefined-index) – Phiter

+0

Sie sollten 'isset();' verwenden, um zu überprüfen, ob die Variablen '$ _GET ['id']' oder '$ _POST ['id']' existieren oder nicht. –

+0

if (isset ($ _GET ['id'])) { \t \t echo "GET_ID existiert"; \t} sonst { \t \t echo "Fehler"; \t} \t \t if (isset ($ _ POST [ 'id'])) { \t \t echo "post_id existiert"; \t} sonst { \t \t echo "Fehler"; } Ich habe "Fehler", aber ich weiß nicht, warum .. – Syntrax

Antwort

1

Dieser Code ist für jetzt zu kompliziert, da es nicht genug Informationen gibt. Der Code ist zu vage, da ich keine Ahnung habe, was Sie damit machen wollen und wohin der Code Sie führen soll.

Nachfolgend erhalten Sie vielleicht helfen:

wenn Sie versuchen, es in der Tabelle Kunden zu erhalten zu bilden, du bist es falsch zu machen. Sie erhalten es jetzt von der Tabelle 'kunde'. Sie fragen auch nach einer ID in der WHERE-Anweisung, die Sie nicht haben, seit Sie versuchen, es mit der tatsächlichen Aussage zu bekommen?

Der folgende Code ist, was ich denke, dass Sie tun sollten.

Machen Sie eine Eingabe, die die ID mitschickt, falls sie existiert.

Dann auf den folgenden Code überprüfen, ob 'id' gesetzt ist und mit id zurück?

if (isset($_POST['id'])) { 
$id = $_POST['id']; 
// REST OF CODE (The $get_id, $r, $t and setting $_SESSION) 
} 
if (isset($_GET['id'])) { 
$id = $_GET['id']; 
// REST OF CODE (The $get_id, $r, $t and setting $_SESSION) 
} 
0

Lassen Sie uns einige Dinge auf Ihrem bereitgestellten Code-Adresse:
1. Sie verwenden GET und POST zur gleichen Zeit? Ich frage mich, welches ist das, das du tatsächlich benutzt hast?
2. Ich nehme an, dass Sie die ID aus der $ _SESSION ['ID'] bekommen. Ein anderer Weg ist, dass Sie die $ ID direkt von ihm erhalten können.

Mit diesen Dingen im Kopf:

Nehmen wir an, Sie GET verwenden die ID zu holen.

Zuerst dies ändern:

if (!empty($_GET['id'])){ 
    $id = $_GET['id']; 
}else if (!empty($_POST['id'])){ 
    $id = $_POST['id']; 
} 

dieser

if (isset($_GET['id'])){ 
     $id = $_GET['id']; 
    } 
    else if (!isset($GET['id'])) { 
     $id = $_SESSION['id']; 
    } 

Aber bitte deutlich machen, was ihr bittet.

+0

Irgendwelche Gründe für den Downvote? – Ronald

0

Dies geschah, weil $ ID nicht aus der IF-Anweisung deklariert wurde, d. H. Die Variable $ id existiert nur innerhalb der Anweisung if oder else und außerhalb dieser nicht.

es beheben können Sie:

1 # Declare $ id außerhalb des if-Anweisung

, dass Ihr Code laufen

macht
$id; // or $id = null 
    if (!empty($_GET['id'])){ 
     $id = $_GET['id']; 
    }else if (!empty($_POST['id'])){ 
     $id = $_POST['id']; 
    } 

    $get_id = 'SELECT * FROM kunde WHERE id=' . $id; 
    $r = mysql_query($get_id); 
    $t = mysql_fetch_array($r); 

    $_SESSION['id'] = $t['id']; 

2 # Verwenden ternäre Operator

Es ist sehr einfach zu bedienen:

$id = (!empty($_GET['id'])) ? $_GET['id'] : $_POST['id']; 

    $get_id = 'SELECT * FROM kunde WHERE id=' . $id; 
    $r = mysql_query($get_id); 
    $t = mysql_fetch_array($r); 

    $_SESSION['id'] = $t['id']; 

3 # Verwenden $ _REQUEST global

$ _REQUEST global, es ist eine "Zusammenfassung" von $ _POST und $ _GET

$id = $_REQUEST['id']; 

    $get_id = 'SELECT * FROM kunde WHERE id=' . $id; 
    $r = mysql_query($get_id); 
    $t = mysql_fetch_array($r); 

    $_SESSION['id'] = $t['id'];