php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 21-06-2007, 17:24
jana_777
 Newbie
Links : Onlinestatus : jana_777 ist offline
Registriert seit: Jun 2007
Beiträge: 9
jana_777 ist zur Zeit noch ein unbeschriebenes Blatt
Standard Undefinierte Variable

Hallo Zusammen!

Habe eine Frage wie kann ich ($id) wo definieren.

Fehlermeldung
Code:
Notice: Undefined variable: id in C:\xampp\htdocs\PHP03\bestellung.php on line 9
Column count doesn't match value count at row 1
Die Skripte dazu:
artikel.php
PHP-Code:
<?php
    
include("dbconnect.php");    
    
$sql "select
                id,
                name,
                preis
            from
                artikel
            order by
                preis DESC;"
;            
    
$result mysql_query($sql) or die (mysql_error());
?>
<html>
<head><title>Artikelseite</title></head>
<body>
<h1>Artikelseite</h1>
Folgende Artikel können Sie bestellen
<table cellpadding="4" cellspacing="2" border="0">
<tr bgcolor="#FFFF00">
<th>Artikel</th><th>Preis</th><th> </th>
</tr>
<?php
    
while($row mysql_fetch_assoc($result))
    {
        print 
"<tr bgcolor='#cccccc'>";
        print 
"<td>".$row['name']."</td>";
        print 
"<td>".$row['preis']." Euro</td>";
        print 
"<td><a href='bestellung.php?id=".$row['id']."'>bestellen</a></td>";
        print 
"</tr>";
    }
?>
</table>
</body>
</html>

bestellung.php
PHP-Code:
<?php error_reporting(E_ALL);
    include(
"dbconnect.php");
    
//Bestelldaten in die Datenbank schreiben
    //Da das bestellid-Feld auf auto-increment
    //gesetzt wurde, muss es nicht angegeben werden
    
$sql "insert into bestellungen 
                    (artikelid)
                values
                    ($id)"
;
    
mysql_query($sql) or die (mysql_error());
    
//Jetzt die Artikeldaten zwecks Anzeige selektieren
    
$sql "select
                name,
                preis,
                bestand
            from 
                artikel
            where
                id=$id"
;
    
$result mysql_query($sql) or die (mysql_error());
    
$row mysql_fetch_assoc($result);
    
//Bestanddaten des bestellten Artikels aktualisieren
    
$sql "UPDATE artikel SET
                bestand="
.($row['bestand']-1)
                .
" where
                    id=$id"
;
    
$result mysql_query($sql) or die(mysql_error());
    
?>
<html>
<head><title>Bestellseite</title></head>
<body>
<h1>Vielen Dank für Ihre Bestellung</h1>
Folgende Artikel haben Sie bestellt
<table cellpadding="4" cellspacing="2" border="0">
<tr bgcolor="#FFFF00">
<th>Artikel</th><th>Preis</th>
</tr>
<?php
    
//Die mysql_fetch_assoc, die hier stand, wird jeetzt schon vorhere aufgerufen 
    //$row = mysql_fetch_assoc($result);
    
    
print "<tr bgcolor='#cccccc'>";
    print 
"<td>".$row['name']."</td>";
    print 
"<td>".$row['preis']." Euro</td>";
    print 
"</tr>";
?>
</table>
<a href="artikel.php">Zurück zur Artikelseite</a>
</body>
</html>
Mit Zitat antworten
  #2 (permalink)  
Alt 21-06-2007, 17:26
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

du musst die datenbank entsprechend einrichten, bevor du dieses skript benutzst.
wie das geht, verrät die seite, von der du dieses skript hast.
Mit Zitat antworten
  #3 (permalink)  
Alt 21-06-2007, 18:03
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Gar nicht war, du solltest dieses Script direkt in die Tonne drücken oder überarbeiten lassen.

Alternativ darfst du dich über register_globals informieren. Aber das müssen wir hier nicht noch mal erklären. Das gehört zu den Grundlagen der PHP-Programmierung (hoffentlich nicht mehr lange).
EDIT:
*verschieb*
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #4 (permalink)  
Alt 21-06-2007, 22:02
brauni54
 Member
Links : Onlinestatus : brauni54 ist offline
Registriert seit: Feb 2005
Beiträge: 345
brauni54 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

$id = $row["id"]; geht wohl nicht jana_777 ?
Mit Zitat antworten
  #5 (permalink)  
Alt 21-06-2007, 22:10
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von brauni54
$id = $row["id"]; geht wohl nicht jana_777 ?
Mit Zitat antworten
  #6 (permalink)  
Alt 21-06-2007, 22:23
brauni54
 Member
Links : Onlinestatus : brauni54 ist offline
Registriert seit: Feb 2005
Beiträge: 345
brauni54 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

definiere die id doch nach dem select in artikel.php in der while schleife

und wenn du die variable aus der letzten seite, welches die artikel.php war, holen willst dann probier $_REQUEST

^^war wohl zu schnell
Mit Zitat antworten
  #7 (permalink)  
Alt 22-06-2007, 09:29
RanzigeMilch
 Registrierter Benutzer
Links : Onlinestatus : RanzigeMilch ist offline
Registriert seit: May 2005
Ort: Darmstadt
Beiträge: 757
RanzigeMilch ist zur Zeit noch ein unbeschriebenes Blatt
RanzigeMilch eine Nachricht über ICQ schicken
Standard

Zitat:
Original geschrieben von brauni54
$id = $row["id"]; geht wohl nicht jana_777 ?
omg

sie übergibt die id per uri (GET)
der hinweis von tobiaz war also DER hinweis

jana wie liest man den werte aus die per uri übergeben wurden?
__________________
Die Milch bleibt ranzig!
Mit Zitat antworten
  #8 (permalink)  
Alt 23-06-2007, 21:55
brauni54
 Member
Links : Onlinestatus : brauni54 ist offline
Registriert seit: Feb 2005
Beiträge: 345
brauni54 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

PHP-Code:
# artikel.php
print "<td><a href='bestellung.php?id=".$row['id']."'>bestellen</a></td>"
hier übergibt sie den wert in der url, welches ein teil von uri ist
also kann sie doch auch folgendes tun
PHP-Code:
    while($row mysql_fetch_assoc($result))
    {
$id $row["id"];
...
print 
"<td><a href="bestellung.php?id=$id">bestellen</a></td>";
        print 
"</tr>";
    }
# und in bestellung.php dann so vor dem insert-befehl
$id$_GET["id"]; 
oder verstehe ich euch falsch?
Mit Zitat antworten
  #9 (permalink)  
Alt 23-06-2007, 22:38
ArSeN
 Registrierter Benutzer
Links : Onlinestatus : ArSeN ist offline
Registriert seit: Feb 2006
Ort: Berlin
Beiträge: 1.052
ArSeN ist zur Zeit noch ein unbeschriebenes Blatt
ArSeN eine Nachricht über ICQ schicken ArSeN eine Nachricht über AIM schicken ArSeN eine Nachricht über Yahoo! schicken
Standard

PHP-Code:
print "<td><a href=\"bestellung.php?id=$id\">bestellen</a></td>"
Strings sind schon schwer.
__________________
Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.
Mit Zitat antworten
  #10 (permalink)  
Alt 23-06-2007, 22:39
brauni54
 Member
Links : Onlinestatus : brauni54 ist offline
Registriert seit: Feb 2005
Beiträge: 345
brauni54 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

habs vergessen , hätte halt eine parse error gegeben
Mit Zitat antworten
  #11 (permalink)  
Alt 25-06-2007, 09:47
RanzigeMilch
 Registrierter Benutzer
Links : Onlinestatus : RanzigeMilch ist offline
Registriert seit: May 2005
Ort: Darmstadt
Beiträge: 757
RanzigeMilch ist zur Zeit noch ein unbeschriebenes Blatt
RanzigeMilch eine Nachricht über ICQ schicken
Standard

...
sie arbeitet doch richtig mit $row["id"]
du hast das problem nicht verstanden und versuchst nu dich rauszuwinden.
warum sollte Sie die id nochmal in eine andere variable speichern wenn Sie schon drauf zugreifen kann?

Sie wusste nicht wie Sie in bestellung.php an die id rankommt, was natürlich in diesem Fall per $_GET geschehen muss wie jetzt schon mehrere bemerkt haben...
__________________
Die Milch bleibt ranzig!
Mit Zitat antworten
  #12 (permalink)  
Alt 25-06-2007, 20:59
brauni54
 Member
Links : Onlinestatus : brauni54 ist offline
Registriert seit: Feb 2005
Beiträge: 345
brauni54 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

wieso soll ich es nicht verstanden haben?!
schau mal hoch...
auch wenn ich mit $_GET['id'] als variable rumgefuchtelt habe, was man ja nicht muss, da sie es auch gleich direkt verwenden kann
Zitat:
PHP-Code:
# und in bestellung.php dann so vor dem insert-befehl
$id$_GET["id"]; 
Mit Zitat antworten
  #13 (permalink)  
Alt 25-06-2007, 21:33
Koala
 PHP Junior
Links : Onlinestatus : Koala ist offline
Registriert seit: Jan 2006
Beiträge: 887
Koala ist zur Zeit noch ein unbeschriebenes Blatt
Standard

so was ist Quark:

$id= $_GET["id"];

wenn register globals = on ist und Du z.B. die Variablen hast: $_SESSION['id'] und $_GET['id'];
woher weißt Du dann welche Variable mit $id gemeint ist ?

wenn register globals = off ist, dann umgehst Du die register globals - Einstellung mit $id = $_GET['id']

Also:
solange der Inhalt von POST oder GET-Variablen nicht geprüft ist,
schreibt man immer $_POST['id'] und $_GET['id'].

Und auch nach der Prüfung sollte man das Ergebnis dann anders benennen als die ursprüngliche POST- oder GET-Variable, z.B.

$p_id = mysql_real_escape_string($_POST['id'])
oder
$p_id = htmlentities($_POST['id'])

Das ist einfach übersichtlicher.
Mit Zitat antworten
  #14 (permalink)  
Alt 25-06-2007, 21:47
brauni54
 Member
Links : Onlinestatus : brauni54 ist offline
Registriert seit: Feb 2005
Beiträge: 345
brauni54 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

da hast du sicher recht @Koala, auch wenn von sessions keine rede war
mir ging es ja nur darum, dass ich sehr wohl verstanden habe um welches problem es ging

mysql_real_escape_string zu verwenden ist natürlich sicherer zwecks SQL-Injections
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

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