| 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! Post your PHP questions here! |
 |
|

16-10-2009, 09:06
|
|
SpecialFighter
Registrierter Benutzer
|
|
Registriert seit: Oct 2009
Beiträge: 31
|
|
daten werden nicht richtig angezeigt
hallo alle zusammen,
ich habe folgendes html interface:
und ich habe in meiner sql datenbank 6 tabellen:
tbl_34, tbl_35, tbl_36, tbl_37, tbl_38, tbl_39, tbl_40 (die zahlen stehen für kalenderwochen)
im interface soll der benutzer sagen von welcher bis welcher kalenderwoche er die daten abrufen will
Beispiel:
wenn ich jetzt kalenderwoche 34 - 35 eingeben und dann auf abrufen klicken siehts so aus:
perfekt!
problem ist nur im oberen formular stehen richtiger weise die werte aus der tbl 34 aber im 2 frm stehen sie auch. da müssen aber die werte von tbl 35 rein. warum ?
|

16-10-2009, 09:32
|
unset
 Moderator
|
|
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.778
|
|
Das liegt daran, dass die Sonnenwinde derzeit sehr stark wüten …
Ohne Quelltext können wir dir hier nix sagen!
|

16-10-2009, 10:05
|
|
SpecialFighter
Registrierter Benutzer
|
|
Registriert seit: Oct 2009
Beiträge: 31
|
|
uuups sry denn wollt ich eigentlich mit eingefügt haben ^^
PHP-Code:
<!-- HEADER --> <div id="header"> <div>Daten ausgeben <hr> </div><br /> <!-- TABS --> <div id="tabs"> <a href="int_eintragen.php"><div id="tab_eintragen">Daten eintragen</div></a> <a href="int_aendern.php"><div id="tab_aendern">Daten ändern</div></a> <a href="int_ausgeben.php"><div id="tab_ausgeben">Daten ausgeben</div></a> </div> <!-- CONTAINER --> <div id="container"> <div> <form action="int_ausgeben.php" method="post"> <!-- ABTEILUNG & KALENDERWOCHE --> <div id="content_option"> <select id="content_option_select" name="abteilung" size="1"> <option>BBK</option> <option>Dragee</option> <option>MAOAM</option> <option>Füllabteilung</option> </select> <input id="content_option_input" type="text" name="von_kw" size="13" maxlength="10" value="Kalenderwoche" onclick="if(this.value && this.value==this.defaultValue)this.value=''" /> <span id="content_option_input">bis</span> <input id="content_option_input" type="text" name="bis_kw" size="13" maxlength="10" value="Kalenderwoche" onclick="if(this.value && this.value==this.defaultValue)this.value=''" /> </div> <!-- BUTTON --> <div align="right"><input type="submit" name="button_ausgeben" value="Abrufen" /></div> </form> </div></div> <?php if(isset($_POST['button_ausgeben'])){ // Einstellungen abfragen $von_kw = $_POST['von_kw']; $bis_kw = $_POST['bis_kw']; $abteilung = $_POST['abteilung']; $num1=array();$be1=array(); $num2=array();$be2=array(); $num3=array();$be3=array(); $num4=array();$be4=array(); // Array parameter $x1 = 0; $x2 = 1; $x3 = 2; $x4 = 3; $x5 = 4; $x6 = 5; // Datenbankdaten einbinden include("dbconnect.php"); $rows = array("NUM I", "Bemerkung I", "NUM II", "Bemerkung II", "NUM III", "Bemerkung III", "NUM IV", "Bemerkung IV"); while($von_kw <= $bis_kw) { $kw = $von_kw; $von_kw ++; $abfrage = "SELECT * FROM `$kw` ORDER BY ID"; $ergebnis = mysql_query($abfrage); while($row = mysql_fetch_array($ergebnis)) { // Werte der SQL-Abfrage an Array $num1[]= $row ["NUM I"]; $be1[]= $row ["Bemerkung I"]; $num2[]= $row ["NUM II"]; $be2[]= $row ["Bemerkung II"]; $num3[]= $row ["NUM III"]; $be3[]= $row ["Bemerkung III"]; $num4[]= $row ["NUM IV"]; $be4[]= $row ["Bemerkung IV"]; // NUMS addieren $add = array( $row->$rows[0], $row->$rows[1], $row->$rows[2], $row->$rows[3], $row->$rows[4], $row->$rows[5], $row->$rows[6], $row->$rows[7]); $summe = array_sum($add); }// While Schleife SQL echo' <br /> <!-- CONTAINER --> <div id="container"> <div> <form action="int_ausgeben.php" method="post"> <!-- ÜBERSCHRIFTEN --> <table cellspacing="4"> <tr> <td></td> <td id="content_beschriftung">Bemerkung I</td> <td id="content_beschriftung">Bemerkung II</td> <td id="content_beschriftung">Bemerkung III</td> <td id="content_beschriftung">Bemerkung IV</td> </tr> <!-- MONTAG --> <tr> <td id="content_beschriftung">Montag</td> <td><input id="content_input" type="text" name="num1_mo" size="2" maxlength="100" value='.$num1[$x1].' /> <input id="content_input" type="text" name="data1_mo" size="11" maxlength="100" value='.$be1[$x1].' /></td> <td><input id="content_input" type="text" name="num2_mo" size="2" maxlength="100" value='.$num2[$x1].' /> <input id="content_input" type="text" name="data2_mo" size="11" maxlength="100" value='.$be2[$x1].' /></td> <td><input id="content_input" type="text" name="num3_mo" size="2" maxlength="100" value='.$num3[$x1].' /> <input id="content_input" type="text" name="data3_mo" size="11" maxlength="100" value='.$be3[$x1].' /></td> <td><input id="content_input" type="text" name="num4_mo" size="2" maxlength="100" value='.$num4[$x1].' /> <input id="content_input" type="text" name="data4_mo" size="11" maxlength="100" value='.$be4[$x1].' /></td> </tr> <!-- DIENSTAG --> <tr> <td id="content_beschriftung">Dienstag</td> <td><input id="content_input" type="text" name="num1_di" size="2" maxlength="100" value='.$num1[$x2].' /> <input id="content_input" type="text" name="data1_di" size="11" maxlength="100" value='.$be1[$x2].' /></td> <td><input id="content_input" type="text" name="num2_di" size="2" maxlength="100" value='.$num2[$x2].' /> <input id="content_input" type="text" name="data2_di" size="11" maxlength="100" value='.$be2[$x2].' /></td> <td><input id="content_input" type="text" name="num3_di" size="2" maxlength="100" value='.$num3[$x2].' /> <input id="content_input" type="text" name="data3_di" size="11" maxlength="100" value='.$be3[$x2].' /></td> <td><input id="content_input" type="text" name="num4_di" size="2" maxlength="100" value='.$num4[$x2].' /> <input id="content_input" type="text" name="data4_di" size="11" maxlength="100" value='.$be4[$x2].' /></td> </tr> <!-- MITTWOCH --> <tr> <td id="content_beschriftung">Mittwoch</td> <td><input id="content_input" type="text" name="num1_mi" size="2" maxlength="100" value='.$num1[$x2].' /> <input id="content_input" type="text" name="data1_mi" size="11" maxlength="100" value='.$be1[$x2].' /></td> <td><input id="content_input" type="text" name="num2_mi" size="2" maxlength="100" value='.$num2[$x2].' /> <input id="content_input" type="text" name="data2_mi" size="11" maxlength="100" value='.$be2[$x2].' /></td> <td><input id="content_input" type="text" name="num3_mi" size="2" maxlength="100" value='.$num3[$x2].' /> <input id="content_input" type="text" name="data3_mi" size="11" maxlength="100" value='.$be3[$x2].' /></td> <td><input id="content_input" type="text" name="num4_mi" size="2" maxlength="100" value='.$num4[$x2].' /> <input id="content_input" type="text" name="data4_mi" size="11" maxlength="100" value='.$be4[$x2].' /></td> </tr> <!-- DONNERSTAG --> <tr> <td id="content_beschriftung">Donnerstag</td> <td><input id="content_input" type="text" name="num1_do" size="2" maxlength="100" value='.$num1[$x3].' /> <input id="content_input" type="text" name="data1_do" size="11" maxlength="100" value='.$be1[$x3].' /></td> <td><input id="content_input" type="text" name="num2_do" size="2" maxlength="100" value='.$num2[$x3].' /> <input id="content_input" type="text" name="data2_do" size="11" maxlength="100" value='.$be2[$x3].' /></td> <td><input id="content_input" type="text" name="num3_do" size="2" maxlength="100" value='.$num3[$x3].' /> <input id="content_input" type="text" name="data3_do" size="11" maxlength="100" value='.$be3[$x3].' /></td> <td><input id="content_input" type="text" name="num4_do" size="2" maxlength="100" value='.$num4[$x3].' /> <input id="content_input" type="text" name="data4_do" size="11" maxlength="100" value='.$be4[$x3].' /></td> </tr> <!-- FREITAG --> <tr> <td id="content_beschriftung">Freitag</td> <td><input id="content_input" type="text" name="num1_fr" size="2" maxlength="100" value='.$num1[$x4].' /> <input id="content_input" type="text" name="data1_fr" size="11" maxlength="100" value='.$be1[$x4].' /></td> <td><input id="content_input" type="text" name="num2_fr" size="2" maxlength="100" value='.$num2[$x4].' /> <input id="content_input" type="text" name="data2_fr" size="11" maxlength="100" value='.$be2[$x4].' /></td> <td><input id="content_input" type="text" name="num3_fr" size="2" maxlength="100" value='.$num3[$x4].' /> <input id="content_input" type="text" name="data3_fr" size="11" maxlength="100" value='.$be3[$x4].' /></td> <td><input id="content_input" type="text" name="num4_fr" size="2" maxlength="100" value='.$num4[$x4].' /> <input id="content_input" type="text" name="data4_fr" size="11" maxlength="100" value='.$be4[$x4].' /></td> </tr> <!-- SAMSTAG --> <tr> <td id="content_beschriftung">Samstag</td> <td><input id="content_input" type="text" name="num1_sa" size="2" maxlength="100" value='.$num1[$x5].' /> <input id="content_input" type="text" name="data1_sa" size="11" maxlength="100" value='.$be1[$x5].' /></td> <td><input id="content_input" type="text" name="num2_sa" size="2" maxlength="100" value='.$num2[$x5].' /> <input id="content_input" type="text" name="data2_sa" size="11" maxlength="100" value='.$be2[$x5].' /></td> <td><input id="content_input" type="text" name="num3_sa" size="2" maxlength="100" value='.$num3[$x5].' /> <input id="content_input" type="text" name="data3_sa" size="11" maxlength="100" value='.$be3[$x5].' /></td> <td><input id="content_input" type="text" name="num4_sa" size="2" maxlength="100" value='.$num4[$x5].' /> <input id="content_input" type="text" name="data4_sa" size="11" maxlength="100" value='.$be4[$x5].' /></td> </tr> </table> <!-- ABTEILUNG & KALENDERWOCHE --> <div id="content_option"> <select id="content_option_select" value='.$abteilung.' name="abteilung" size="1"> <option>BBK</option> <option>Dragee</option> <option>MAOAM</option> <option>Füllabteilung</option> </select> <input id="content_option_input" type="text" value='.$kw.' name="kw" size="13" maxlength="10" /></div> <!-- BUTTON --> <div align="right"><input type="submit" name="button_aendern" value="Ändern" /></div> </form> </div></div>'; } // While Schleife kw } // Submit? ?>
|

16-10-2009, 11:11
|
|
eintrachtemil
Registrierter Benutzer
|
|
Registriert seit: May 2004
Beiträge: 223
|
|
Entweder ich habe irgendwas übersehen (Quellcode umbrechen) - aber eigentlich dürfte das gar nicht gehen.
1. Deine Tabellen haben die Namen tbl_34, tbl_35,...
2. In deinem Formular gibst du als von-bis-Wochenangabe die Zahlen 34 und 35 ein.
3. Danach kommen folgende Abfragen:
PHP-Code:
$von_kw = $_POST['von_kw']; .. while($von_kw <= $bis_kw) { $kw = $von_kw; $von_kw ++; ... $abfrage = "SELECT * FROM `$kw` ORDER BY ID";
Also müsste deine generierte SQL-Abfrage eigentlich folgendes generieren
PHP-Code:
SELECT * FROM 34 ORDER BY ID
und einen Fehler werfen.
Wenn du irgendwo allerdings den Tabellenzusatz mitgibst, z.B.
PHP-Code:
$von_kw = 'tbl_' . $von_kw;
dann passt natürlich durch
deine zweite SQL-Abfrage nicht mehr - da du dann ja keinen Zahlenwert, sondern eine Zeichenkette in der Variable hast.
Zudem solltest du dringend deine Formulardaten vor der Weiterverarbeitung überprüfen, in deinem Fall z.B.
PHP-Code:
$von_kw = intval($_POST['von_kw']);
__________________
Simploo CMS - das einfache Webseiten-Bearbeitungsprogramm
Geändert von eintrachtemil (16-10-2009 um 11:19 Uhr)
|

16-10-2009, 11:21
|
|
SpecialFighter
Registrierter Benutzer
|
|
Registriert seit: Oct 2009
Beiträge: 31
|
|
nein das ist schon richtig. die tabelle heißt auch nur 34 und 35
habe das tbl davor gesetzt damit ihr wisst das es sich um tabellen handelt
|

16-10-2009, 11:35
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Hallo,
du musst $num X innerhalb der while-Schleife (re)initialisieren, da du mit
PHP-Code:
$num1[]= $row ["NUM I"];
immer nur neue Werte hinzufügst, diese aber durch die festen Indizes ($x X) nie angezeigt werden, sondern immer nur die aus dem ersten Durchlauf.
Gruß,
Amica
|

16-10-2009, 11:37
|
|
SpecialFighter
Registrierter Benutzer
|
|
Registriert seit: Oct 2009
Beiträge: 31
|
|
wie mach ich das? bin nicht so gut darin. bring mir das grad alles etwas selber bei. wie würde dieser code dann aussehen?
|

16-10-2009, 11:45
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
PHP-Code:
$num1 = array();
|

16-10-2009, 12:01
|
|
SpecialFighter
Registrierter Benutzer
|
|
Registriert seit: Oct 2009
Beiträge: 31
|
|
aber in num1 sollen ja nur die werte der spalte NUM I
woher weißt er denn mit deinem code das es so ist. so würde er doch alle werte in das eine array ablegen oder??
|

16-10-2009, 12:03
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
Zitat:
Zitat von SpecialFighter
und ich habe in meiner sql datenbank 6 tabellen:
tbl_34, tbl_35, tbl_36, tbl_37, tbl_38, tbl_39, tbl_40 (die zahlen stehen für kalenderwochen)
|
Falsches Datenbankdesign. Durchnummerierte Tabellen sind Blödsinn.
Gib alles in eine einzige Tabelle.
|

16-10-2009, 12:05
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Nein, das war auch kein Code, sondern ein Beispiel für eine Initialisierung. Die musst du natürlich auch für die anderen $numX-Arrays am Anfang der Schleife machen. Das Füllen der Arrays ($numX[]= $row ["..."];) machst du trotzdem wie bisher.
|

16-10-2009, 12:09
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Konkret:
PHP-Code:
if(isset($_POST['button_ausgeben'])){
// Einstellungen abfragen
$von_kw = $_POST['von_kw'];
$bis_kw = $_POST['bis_kw'];
$abteilung = $_POST['abteilung'];
// Array parameter
$x1 = 0;
$x2 = 1;
$x3 = 2;
$x4 = 3;
$x5 = 4;
$x6 = 5;
// Datenbankdaten einbinden
include("dbconnect.php");
$rows = array("NUM I", "Bemerkung I", "NUM II", "Bemerkung II", "NUM III", "Bemerkung III", "NUM IV", "Bemerkung IV");
while($von_kw <= $bis_kw) {
$num1=array();$be1=array();
$num2=array();$be2=array();
$num3=array();$be3=array();
$num4=array();$be4=array();
$kw = $von_kw;
$von_kw ++;
$abfrage = "SELECT * FROM `$kw` ORDER BY ID";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_array($ergebnis))
{
// Werte der SQL-Abfrage an Array
$num1[]= $row ["NUM I"]; $be1[]= $row ["Bemerkung I"];
$num2[]= $row ["NUM II"]; $be2[]= $row ["Bemerkung II"];
$num3[]= $row ["NUM III"]; $be3[]= $row ["Bemerkung III"];
$num4[]= $row ["NUM IV"]; $be4[]= $row ["Bemerkung IV"];
// NUMS addieren
$add = array( $row->$rows[0], $row->$rows[1], $row->$rows[2], $row->$rows[3],
$row->$rows[4], $row->$rows[5], $row->$rows[6], $row->$rows[7]);
$summe = array_sum($add);
}// While Schleife SQL
echo'HTMLCODE';
} // While Schleife kw
} // Submit?
Bitteschön.
|

16-10-2009, 12:26
|
|
SpecialFighter
Registrierter Benutzer
|
|
Registriert seit: Oct 2009
Beiträge: 31
|
|
super jetzt klappt alles
aber ich möcht ja auch was drauß lernen und verstehen warum es nun klappt.
wärst du so nett und könntest mir idiotensicher erklären warum das jetzt geht, was du gemacht hast und warum es so vorher nicht ging ?
vielen dank schon mal
|

16-10-2009, 12:37
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Ok, du hast zwar mehrere solcher Arrays, aber ich betrachte jetzt nur eins davon: $num1
Du hast es vor der Schleife initialisiert, also war es erstmal leer.
Im ersten Durchlauf der äußeren Schleife (also in der ersten ausgewählten KW) kamen 6 Einträge hinzu:
$num1 = array("kw1foo1", "kw1foo2", "kw1foo3", "kw1foo4", "kw1foo5", "kw1foo6");
Auf die hast du dann in dem Bereich mit dem vielen HTML zugegriffen und dabei diese Indexvariablen ($x1 bis $x6) benutzt und auch das Richtige bekommen, z. B. $num1[$x2] = $num1[1] = "kw1foo2".
Beim nächsten Durchlauf der äußeren Schleife war das Array nicht mehr leer, die Einträge standen alle noch vom ersten Durchlauf drin. Da die Zuweisung mit den eckigen Klammern ($meinarray[] = "Hallo Welt!"; ) immer nur Einträge hinzufügt, wurden die neuen Einträge der zweiten ausgewählten KW hinten drangehangen:
$num1 = array("kw1foo1", "kw1foo2", "kw1foo3", "kw1foo4", "kw1foo5", "kw1foo6", "kw2foo1", "kw2foo2", "kw2foo3", "kw2foo4", "kw2foo5", "kw2foo6");
Wenn du darauf jetzt mit deinen Indexvariablen zugreifen willst, ergibt sich immer noch
$num1[$x2] = $num1[1] = "kw1foo2"
und nicht "kw2foo2", wie du es haben wolltest.
Die Lösung ist also, das Array am Anfang jedes Durchlaufs zu leeren, damit es wieder von vorne gefüllt wird und du vorne auch die neuen Daten rausholen kannst und nicht irgendwelche alten.
|

16-10-2009, 12:54
|
|
SpecialFighter
Registrierter Benutzer
|
|
Registriert seit: Oct 2009
Beiträge: 31
|
|
asoooooo ja das macht natürlich sinn - wenn mans weiß^^
vielen vielen dank für die Lösung und Erklärung
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| 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.
HTML-Code ist aus.
|
|
|
|
PHP News
|