php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2010

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 04.02.2010, 10:46  
Neuer Benutzer
 
Registriert seit: 18.01.2010
Beiträge: 13
PHP-Kenntnisse:
Anfänger
_fabi befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Variable undefiniert?!

Hallo,
ich habe mir folgendes Script geschrieben, um Artikel in einer Datenbank upzudaten, doch leider werden die neuen Daten nicht in die Datenbank geschrieben. Wenn ich sie mir allerdings nur ausgeben lasse, werden die neuen Daten mir richtig angezeigt. Kann mir vielleicht jemand helfen?

PHP-Code:
<h2>Artikel bearbeiten</h2>
    <form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">
        <select name="artikel">
            <?php
                
try {
                    
$db = new MySQLi('localhost''root''''rechnungen');
                    
$sql 'SELECT artikel FROM artikelverzeichnis';
                    
$kommando $db->prepare($sql);
                    
$kommando->execute();
                    
                    
$kommando->bind_result($art);
                    
                    while(
$kommando->fetch()) {
                        
printf('<option value="'.$art'">%s</option>',
                            
htmlspecialchars($art)
                        );    
                    }        
                    
$db->close();
                } catch (
Exceptions $e) {
                    echo 
'Fehler: ' htmlspecialchars($e->getMessage());
                }
            
?>
        </select><br />
        <input type="submit" name="bearbeiten" value="Bearbeiten!" />
</form>

<?php 
    
global $idNeu;
    if(isset(
$_POST['bearbeiten'])) {

        try {
            
$db = new MySQLi('localhost''root''''rechnungen');
            
$sql 'SELECT * FROM artikelverzeichnis WHERE artikel = \'' $_POST['artikel'] . '\'';
            
$kommando $db->prepare($sql);
            
$kommando->execute();
            
            
$kommando->bind_result($idNeu$artNrNeu$artNeu$preisNeu$typNeu);
            
            
$kommando->fetch();    
            
$db->close();
        } catch (
Exceptions $e) {
            echo 
'Fehler: ' htmlspecialchars($e->getMessage());
        }
        
?>
        <form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">
            Artikelnummer: <input type="text" value="<?php echo $artNrNeu ?>" name="artnr" /><br />
            Artikel: <input type="text" value="<?php echo $artNeu ?>" name="art" /><br />
            Preis: <input type="text" value="<?php echo $preisNeu ?>" name="preis" /><br />
            Typ: <select name="typ">
                <option value="<?php $typNeu ?>"><?php echo $typNeu ?></option>
                <option value="<?php if ($typNeu == 'pauschal') {
                                        echo 
'stunde';
                                    } else {
                                        echo 
'pauschal';
                                    }
                    
?>"><?php if ($typNeu == 'pauschal') {
                                        echo 
'stunde';
                                    } else {
                                        echo 
'pauschal';
                                    }
                    
?></option>
            </select><br />
            <input type="submit" name="aendern" value="&Auml;ndern" />
        </form>
<?php 
    
}
    
    if(isset(
$_POST['aendern'])) {
        try {
            
$db = new mysqli('localhost''root''''rechnungen');
            
$sql 'UPDATE artikelverzeichnis SET artikelnummer = ?, artikel = ?, einzelpreis = ?, typ = ? WHERE id =\'' $idNeu '\'';
            
$kommando $db -> prepare($sql);
            
$kommando -> bind_param('ssis'$_POST['artnr'], $_POST['art'], $preis$_POST['typ']);
            
$preis = (int)$_POST['preis'];
            
$kommando -> execute();
            
$db -> query($sql);
            
$db -> close();
            echo 
'Artikel erfolgreich ge&auml;ndert';
        } catch (
Exceptions $e){
            echo 
'Fehler: ' htmlspecialchars($e->getMessage());
        }

    }

?>
Vielen Dank
Gruß

_fabi
_fabi ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 04.02.2010, 10:50  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.240
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

1. Bitte beschäftige dich mit SQL-Injection bzw. mysql_real_escape_string u.ä. Alternativ verwende überall immer prepared Statements.
2. Bitte beschäftige dich mit der richtigen Art und Weise der Fehlerbehandlung, dann verrät dir MySQL, wo dein Fehler im SQL liegt.
3. error_reporting einschalten, dann verrät dir sogar PHP, was faul ist.
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline  
Alt 04.02.2010, 11:02  
Neuer Benutzer
 
Registriert seit: 18.01.2010
Beiträge: 13
PHP-Kenntnisse:
Anfänger
_fabi befindet sich auf einem aufstrebenden Ast
Standard

Das ist es ja, mir wird kein Fehler angezeigt.

Gruß

_fabi
_fabi ist offline  
Alt 04.02.2010, 11:14  
Neuer Benutzer
 
Registriert seit: 18.01.2010
Beiträge: 13
PHP-Kenntnisse:
Anfänger
_fabi befindet sich auf einem aufstrebenden Ast
Standard

Ah okay, die variable $idNeu ist anscheint nicht mehr gesetzt, obwohl ich sie als gobal gekennzeichnet habe. Woran kann das liegen?

Gruß

_fabi
_fabi ist offline  
Alt 04.02.2010, 11:23  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.240
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von _fabi Beitrag anzeigen
Ah okay, die variable $idNeu ist anscheint nicht mehr gesetzt, obwohl ich sie als gobal gekennzeichnet habe. Woran kann das liegen?

Gruß

_fabi
Nicht obwohl. Das eine (global) hat mit dem anderen (nicht gesetzt) nichts zu tun, da du dich nicht innerhalb einer Funktion oder Klasse befindest.

Überlege mal, wieso es sein kann, dass die Variable $idNeu nicht gesetzt wird. Die logische Schlussfolgerung wäre ja, dass deiser Teil des Codes nicht durchlaufen wird. Das lässt sich ja prüfen mittels Echo o.ä. oder mittels Logik (Wird das Formular, was sich an gleicher Stelle befindet, ausgegeben?) und voila: Er wird nicht durchlaufen. Nun suchst du nach dem Grund, weshalb dieser Code nicht durchlaufen wird.

Das war nun ein Crashkurs im EinMalEins der Fehlersuche.
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline  
Alt 04.02.2010, 11:31  
Neuer Benutzer
 
Registriert seit: 18.01.2010
Beiträge: 13
PHP-Kenntnisse:
Anfänger
_fabi befindet sich auf einem aufstrebenden Ast
Standard

Okay, schon mal vielen Dank. Ich habe nur jetzt keine Ahnung, wie ich die Variable in den unteren Abschnitt bringen kann.

Gruß

_fabi
_fabi ist offline  
Alt 04.02.2010, 11:37  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.240
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Lies dir meinen Beitrag nochmal durch. Du kannst nichts in den unteren Abschnitt bringen, weil der obere gar nicht ausgeführt wird.
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline  
Alt 04.02.2010, 11:40  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.990
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
3. error_reporting einschalten, dann verrät dir sogar PHP, was faul ist.
Zitat:
Das ist es ja, mir wird kein Fehler angezeigt.
Zitat:
3. error_reporting einschalten, dann verrät dir sogar PHP, was faul ist.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 04.02.2010, 11:42  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.240
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Naja Nikosch, er kam ja schon drauf, dass $idNeu nicht definiert ist. Nur hat er noch nicht durchblickt, wie er das ändern kann bzw. dass ein logischer Fehler in seinem Script ist, weil er relevante Teile gar nicht ausführt.

Um dir noch einen hilfreichen Schubser zu geben. Du hast zwei Formulare. Eines mit Button Bearbeiten, eines mit Button Ändern. Wenn der Button Ändern gedrückt wird, dann wird logischerweise der Button Bearbeiten nicht gedrückt. Folglich: Wenn Button Ändern gedrückt wird, kommt er in den Teil, der für Button Bearbeiten vorgesehen ist, nicht rein und führt ihn nicht aus. Soweit auch völlig OK. Dein Problem: Deine $idNeu wird nur gesetzt, wenn der Button "Bearbeiten" gedrückt wird, nicht beim anderen Button/Formular.
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline  
Alt 04.02.2010, 11:52  
Neuer Benutzer
 
Registriert seit: 18.01.2010
Beiträge: 13
PHP-Kenntnisse:
Anfänger
_fabi befindet sich auf einem aufstrebenden Ast
Standard

Okay, ich habe das Problem jetzt mit einer Session gelöst.

Danke und Gruß

_fabi
_fabi ist offline  
 


Themen-Optionen
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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Datensatz als Variable in CSS hallophp PHP Tipps 2009 2 30.09.2009 19:19
Problem Undefined variable: banbanban PHP Tipps 2009 5 04.03.2009 17:55
Variable per Session übergeben? Spricht etwas dagegen? Lapje PHP Tipps 2008 6 20.10.2008 21:49
Undefined variable Undefined property: block xxJJxx PHP Tipps 2008 16 05.08.2008 15:30
Variable erweitert sich selbst - angeblich undefiniert ? horstenpeter PHP Tipps 2006 2 21.08.2006 12:04
problem mit variable snatch-ic PHP Tipps 2007 5 13.12.2005 13:18
Variable durch 2. Variable bestimmen Quagga PHP Tipps 2005-2 11 26.10.2005 17:34
Session Variable oder Globale Variable ? PHP Tipps 2005-2 3 27.06.2005 21:49
Variable in Objekt php1 HTML, Usability und Barrierefreiheit 2 25.06.2005 08:08
Variable in Variable Matthiasnet PHP Tipps 2005 6 20.03.2005 23:28
[Erledigt] Fehlermeldung unterdrücken wenn keine variable übergeben... PHP Tipps 2005 6 20.03.2005 13:36
Variable in einer Variable Beatbox PHP Tipps 2005 7 15.01.2005 15:55
Warum wird Variable nicht übergeben??? Anuschka PHP Tipps 2005 2 06.01.2005 13:22
[Erledigt] $_SESSION verwandelt variable auf einem Server in ein Array PHP-Fortgeschrittene 2 16.12.2004 13:25
[Erledigt] Variable erst später definieren? PHP Tipps 2004-2 10 04.12.2004 20:23

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
variable ist undefiniert, <?php echo htmlspecialchars($_server[\'php_self\']); ?>, button undefiniert php, java

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:22 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum