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 22-11-2006, 16:13
Fisi
 Newbie
Links : Onlinestatus : Fisi ist offline
Registriert seit: Nov 2006
Ort: Nürnberg
Beiträge: 19
Fisi ist zur Zeit noch ein unbeschriebenes Blatt
Standard Wertübergabe bei Formularen

Hallo alle miteinander.

Ich bin ganz neu im Forum und auch noch dazu ein totaler Anfänger in PHP (ok, das steht ja in fast jedem 2. Thread =P ).

Ich habe ein Problem mit der Übergabe von Werten aus einem Formular:

Ich lasse eine MySQL-Tabelle auslesen und anzeigen mit der Zusatzoption, dass am Ende jeder Zeile ein 'Bestell'-Button ist, der die jeweilige Zeile zu einer neuen Tabelle hinzufügen soll. Eine Auswahl findet durch Radio-Buttons statt.

Zur Veranschaulichung:

Nummer* | Bezeichnung* | Größe-klein# | Größe-mittel# | Größe-groß#

* = Die Daten dazu werden aus der Tabelle ausgelesen
# = Hier gibt es 3 Radio-Buttons; einer ist zu markieren

Damit ich die Daten übertragen kann, die aus der Tabelle eingelesen werden, habe ich mich für 'unsichtbare' Buttons entschieden ('type=hidden').

Wie ich in diesem Thread gelesen habe, liegt mein Problem daran, dass ich die Werte bei jedem Schleifendurchlauf wieder überschreibe und ich ein Array nutzen muss.

Bei Quakenet steht, dass hinter das name-Attribut '[]' hinmüssen, um die Daten in einem Unterarray zu speichern, aber irgendwie habe ich das nicht so ganz gecheckt.


Mein Problem ist jetzt eigentlich folgendes:
Der Wert für den Radio Button wird korrekt übergeben, nur die hidden-Felder eben nicht.

Kann mir vielleicht jemand weiterhelfen?

Hier ein Ausschnitt meines Quelltextes:

Die Übergabe von bestellung.php

PHP-Code:
for ($i=0$i $num_results$i++) 
{
            
$row mysqli_fetch_assoc($result);

            echo 
"<tr>\n <td align='left'>" .  
            
stripslashes($row['sp_nr']) .     
            
"<input type='hidden' name='sp_nr' value='" $row['sp_nr'
            . 
" '>" "</td>\n";
            echo 
"\n <td align='left'>" .
            
stripslashes($row['bezeichnung']) . 
            
"<input type='hidden' name='bezeichnung' value='" .
            
$row['bezeichnung'] . "'>" "</td>\n";
 } 
Und die Seite, auf die die Werte übergeben werden:

PHP-Code:
$db = new mysqli(MYSQL_HOSTMYSQL_USER
MYSQL_PASSMYSQL_DATABASE);

    if (
mysqli_connect_errno()) {
    echo 
'Fehler: Verbindung zur Datenbank nicht möglich!';
    exit;
    }

    
$groesse $_POST['groesse'];
    
$sp_nr $_POST['sp_nr'];
    
$bezeichnung $_POST['bezeichnung']; 

Geändert von Fisi (22-11-2006 um 16:21 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 22-11-2006, 16:19
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 hast das problem richtig erkannt und eine lösung gefunden. jetzt nur noch umsetzen.

setze das "[]" hinter die namen deiner input-felder und lasse dir den inhalt von $_POST auf der ziel-seite mittels print_r() ausgeben, dann wirst du verstehen, wie du die daten richtig empfängst und verarbeitest.
Mit Zitat antworten
  #3 (permalink)  
Alt 22-11-2006, 16:20
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

name='sp_nr' wird zu name='sp_nr[]' oder name='sp_nr[n]'
__________________
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 22-11-2006, 16:36
Fisi
 Newbie
Links : Onlinestatus : Fisi ist offline
Registriert seit: Nov 2006
Ort: Nürnberg
Beiträge: 19
Fisi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Wow, danke für die superschnellen Antworten. =)

Also ich habe jetzt den name in 'sp_nr[]' geändert und mir alles mit print_r() ausgeben lassen.

Ich habe folgende Ausgabe:
Array ( [sp_nr] => Array ( [0] => 100 [1] => 101 [2] => 102 [3] => 103 )

Daraus nehme ich mir, dass die Daten nacheinander in das Array gespeichert werden, also auf Platz 0 kommt die sp_nr 100 usw.

Um jetzt den richtigen Wert auszugeben müsste ich das richtige Element aus dem Array aufrufen, oder?

Mit
PHP-Code:
$sp_nr $_POST['sp_nr[]']; 
funktioniert das aber leider nicht, auch wenn ich einen relativen Wert (z.B. 'i' aus der Zählschleife (siehe oben)) oder gar einen absoluten Wert (z.B.[2]) angebe, wird immer nur der letzte Datensatz ausgegeben.

Ich gehe davon aus, dass die anderen Datensätze jetzt nicht mehr überschrieben werden, nur mit der Ausgabe stimmt etwas nicht, sehe ich das richtig?
Mit Zitat antworten
  #5 (permalink)  
Alt 22-11-2006, 17:09
3DMax
 PHP Senior
Links : Onlinestatus : 3DMax ist offline
Registriert seit: Jan 2004
Beiträge: 1.916
3DMax ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Fisi
Ich gehe davon aus, dass die anderen Datensätze jetzt nicht mehr überschrieben werden, nur mit der Ausgabe stimmt etwas nicht, sehe ich das richtig?
$_POST musst du als ein mehrdimensionales array ansprechen, also 'sp_nr' ist ein unterarray:

$_POST['sp_nr'][0]
Mit Zitat antworten
  #6 (permalink)  
Alt 22-11-2006, 17:44
Fisi
 Newbie
Links : Onlinestatus : Fisi ist offline
Registriert seit: Nov 2006
Ort: Nürnberg
Beiträge: 19
Fisi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ok, danke!
Soweit funktioniert das erstmal.

Aber eigentlich wollte ich ja keinen absoluten Wert in das Array eingeben, wie $_POST['sp_nr'][0] .

Ich habe versucht meine Variable 'i' zusätzlich zu übergeben und diese dann als relativen Arraywert einzutragen, aber erstens wird nun nichts ausgegeben und zweitens bekomme ich folgende Fehlermeldung:

Warning: Illegal offset type

In der Zeile, in der nun der relative i-Wert steht.

Irgendwo habe ich sicher noch einen totalen Denkfehler!
Tut mir leid, wenn ich euch damit nerve =(
Mit Zitat antworten
  #7 (permalink)  
Alt 22-11-2006, 18:39
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

welches ist der erste benutzte i wert? 0 oder 1?
__________________
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
  #8 (permalink)  
Alt 22-11-2006, 19:32
Fisi
 Newbie
Links : Onlinestatus : Fisi ist offline
Registriert seit: Nov 2006
Ort: Nürnberg
Beiträge: 19
Fisi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Der erste benutzte i-Wert ist laut Ausgabe '0'.
Mit Zitat antworten
  #9 (permalink)  
Alt 22-11-2006, 19:56
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

dann zeig mal nen codeauszug und die genaue fehlermeldung.

die zeile mit dem Fehler bitte markieren
__________________
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
  #10 (permalink)  
Alt 22-11-2006, 20:18
Fisi
 Newbie
Links : Onlinestatus : Fisi ist offline
Registriert seit: Nov 2006
Ort: Nürnberg
Beiträge: 19
Fisi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Also ich habe jetzt noch als Zusatzwert i übergeben und wollte den im Array auslesen lassen:

Die bestellung.php

PHP-Code:
            for ($i=0$i $num_results$i++) 
           {

            
$row mysqli_fetch_assoc($result);

            echo 
"<tr>\n <td align='left'>" .  stripslashes($row['sp_nr']) .  "
            <input type='hidden' name='sp_nr[]' value='" 
$row['sp_nr'] . "'>" "</td>\n";

            echo 
"\n <td align='left'>"stripslashes($row['bezeichnung']).
            
"<input type='hidden' name='bezeichnung[]' value='" .
            
$row['bezeichnung'] . "'>" "</td>\n";

            echo 
"\n <td align='center'>"stripslashes($row['preis_klein']),"
            <input type='radio' name='groesse' value='klein'>
            </td>\n"
;

            echo 
"\n <td align='center'>"stripslashes($row['preis_mittel']),"
            <input type='radio' name='groesse' value='mittel'>
            </td>\n"
;

            echo 
"\n <td align='center'>"stripslashes($row['preis_gro']),"
            <input type='radio' name='groesse' value='gro'></td>\n"
;

            echo 
"<input type='hidden' name='i' value='" $i "'>";
            echo 
"\n <td align='left'><input type='submit' value='Bestellen'></td>\n";

            } 
Die betroffene Datei

PHP-Code:
    $groesse $_POST['groesse'];
    
$i $_POST['i'];

-> 
$sp_nr $_POST['sp_nr'][$i]; 
-> 
$bezeichnung $_POST['bezeichnung'][$i];

    echo 
'<br>';
    
print_r($_POST);
    echo 
'<br>'
Diese Zeilen sind betroffen (aus dem zweiten, kürzeren Quelltext, mit '->' markiert):


$sp_nr = $_POST['sp_nr'][$i];
$bezeichnung = $_POST['bezeichnung'][$i];
Mit Zitat antworten
  #11 (permalink)  
Alt 22-11-2006, 21:23
kuddeldaddeldu
 Registrierter Benutzer
Links : Onlinestatus : kuddeldaddeldu ist offline
Registriert seit: Sep 2006
Beiträge: 437
kuddeldaddeldu ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Na ja, mit Deinem "i" machst Du ja jetzt den alten Fehler. Es wird nur der letzte Wert übertragen.
Wenn Du Deinen Feldern die Information mitgeben musst, zu welcher Datensatz-ID sie gehören, kannst Du diese ID auch in die [] schreiben.
Also ungefähr so:
PHP-Code:
$id $row['sp_nr'];
echo 
"<input type='hidden' name='bezeichnung[" $id "]' value='" $row['bezeichnung'] . "'>"
LG
Mit Zitat antworten
  #12 (permalink)  
Alt 04-12-2006, 12:16
Fisi
 Newbie
Links : Onlinestatus : Fisi ist offline
Registriert seit: Nov 2006
Ort: Nürnberg
Beiträge: 19
Fisi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Also ich kann die Werte zwar jetzt in die Arrays speichern (auch bei i), aber ausgegeben wird dennoch immer die letzte Zeile. Das liegt daran, dass ich nach wie vor nur einen absoluten Wert angeben kann. Wenn ich i als Array übergebe und dann eben dieses i als Array in einer anderen Variable aufrufe funktioniert das nicht, bzw. es kommen die falschen Daten.

Wenn ich i als Arrayelement angebe, dann steht die Ausgabe "Array" da.

Auf der 1. Seite lasse ich mir dieses i-Array ausgeben und es werden die richtigen Daten hineingeschrieben, nur auslesen kann ich sie auf relativen Wege nicht >_<

Übergabe i:

PHP-Code:
echo "<input type='hidden' name='zaehler[$i]' value='" $i "'>"
Auslesen der Übergabe:

PHP-Code:
$i $_POST['zaehler']; 
Einsetzen von i:

PHP-Code:
$sp_nr = array($i);

echo 
'Speisenummer:' $sp_nr  '<br>'
Ja und die Ausgabe ist dann: 'Array'....
Mit Zitat antworten
  #13 (permalink)  
Alt 04-12-2006, 12:27
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von Fisi
Übergabe i:
PHP-Code:
echo "<input type='hidden' name='zaehler[$i]' value='" $i "'>"
Was genau ist in diesem Falle $i?
Zitat:

Auslesen der Übergabe:
PHP-Code:
$i $_POST['zaehler']; 
Also ist $i jetzt ein Array.
Zitat:
Einsetzen von i:
PHP-Code:
$sp_nr = array($i);

echo 
'Speisenummer:' $sp_nr  '<br>'
Ja und die Ausgabe ist dann: 'Array'....
Was bezweckst du mit array($i), wenn $i selber doch schon ein Array ist?
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #14 (permalink)  
Alt 04-12-2006, 12:31
Fisi
 Newbie
Links : Onlinestatus : Fisi ist offline
Registriert seit: Nov 2006
Ort: Nürnberg
Beiträge: 19
Fisi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Nun ja, das ist eine gute Frage...
Ich will ja nur die Nummer der Zeile haben, aus der die Werte übergeben werden...mehr will ich ja gar nicht...

Wenn ich
PHP-Code:
$sp_nr = array($i); 
nicht hinschreibe, dann wird auch 'Array' ausgegeben.
Mit Zitat antworten
  #15 (permalink)  
Alt 04-12-2006, 13:02
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Machst du print_r($_POST),
verstehst du die Struktur der übergebenen Daten,
erstellst du sinnvolle Lösung.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
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 14:02 Uhr.