| 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! |
 |
|

21-03-2010, 16:52
|
|
SpecialFighter
Registrierter Benutzer
|
|
Registriert seit: Oct 2009
Beiträge: 31
|
|
MYSQL / PHP fehler - aber wo?
Hallo alle zusammen,
ich habe folgende tabelle (daten nennt sich diese) in meiner datenbank:
ID
Bemerkung I
Bemerkung II
Bemerkung III
Bemerkung IV
der benutzer klickt im Hauptmenü auf "anzeigen" wodurch folgende php datei ausgeführt wird.
PHP-Code:
<?php
$rows = array("Bemerkung I", "Bemerkung II", "Bemerkung III", "Bemerkung IV");
$abfrage = "SELECT * FROM `daten` ORDER BY ID"; $ergebnis = mysql_query($abfrage); while($row = mysql_fetch_array($ergebnis)) { // Werte der SQL-Abfrage an Array $be1[]= $row ["Bemerkung I"]; $be2[]= $row ["Bemerkung II"]; $be3[]= $row ["Bemerkung III"]; $be4[]= $row ["Bemerkung IV"]; }// While Schleife SQL echo' <br /> <div> <form accept-charset="utf-8" action="update.php" method="post" > <!-- ÜBERSCHRIFTEN --> <table cellspacing="4" cellpadding="4"> <tr> <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>'; $anzahl_be1 = count($be1); $anzahl_be2 = count($be2); $anzahl_be3 = count($be3); $anzahl_be4 = count($be4); $anzahl = ($anzahl_be1 + $anzahl_be2 + $anzahl_be3 + $anzahl_be4) / 4;
$x = 0; $x1 = 1; $x2 = 2; $x3 = 3; $x4 = 4; while ($counter < $anzahl) { echo' <tr> <td><input id="content_input" type="text" name="daten'.$x1.'" size="23" maxlength="100" value="'.$be1[$x].'" /></td> <td><input id="content_input" type="text" name="daten'.$x2.'" size="18" maxlength="100" value="'.$be2[$x].'" /></td> <td><input id="content_input" type="text" name="daten'.$x3.'" size="18" maxlength="100" value="'.$be3[$x].'" /></td> <td><input id="content_input" type="text" name="daten'.$x4.'" size="18" maxlength="100" value="'.$be4[$x].'" /></td> </tr>'; $counter ++; $x ++; $x1 += 4; $x2 += 4; $x3 += 4; $x4 += 4; } $counter *=4; echo '<input type="hidden" name="hidden_counter" value="'.$counter.'" />';
echo '</table><input type="submit" name="button_update" value="Änderung Übernehmen" /></form></div>';
?>
diese zeigt dann alle daten in form von inputfeldern an die in der tabelle drin stehen.
der benutzer hat jetzt die möglichkeit diese daten direkt in dem inputfeld zu ändern und durch klicken des buttons "Änderung übernehmen" wird eine weitere Datei aufgerufen:
PHP-Code:
<?php
$bem1 = 0; $bem2 = 1; $bem3 = 2; $bem4 = 3;
while ($counter < $hidden_counter) { $aendern = "UPDATE `daten` SET `Bemerkung I` = '$daten_update[$bem1]', `Bemerkung II` = '$daten_update[$bem2]', `Bemerkung III` = '$daten_update[$bem3]',`Bemerkung IV` = '$daten_update[$bem4]'"; $update = mysql_query($aendern); $counter ++; $bem1 += 4; $bem2 += 4; $bem3 += 4; $bem4 += 4; }
die daten die der benutzer ändert und per button weiter schickt werden in das array $daten_update gefüllt.
(dieses passiert in einer externen datei)
PHP-Code:
$counter_db = 0; $x = 1; while($counter_db < $hidden_counter) { $daten_update[$counter_db] = $_POST['daten'.$x]; $counter_db ++; $x ++; }
man muss dazu sagen das variablen wie $hidden_counter oder $daten_update in einer externen datei gesammelt werden und an die entsprechenden dateien weitergeleitet werden.
Mein problem ist jetzt das der sql befehl nicht klappt. Er sagt mir immer das dass array $daten_update leer ist.
aber wenn ich das array mit print_r über der while sql schleife ausgebe dann erhalte ich alle Werte. Wo liegt der Fehler?
|

21-03-2010, 16:56
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Hallo,
ich vermute mal, der Fehler liegt mal wieder an der Benutzung von Variablennamen innerhalb von Strings. Verkette doch deine SQL-Abfrage einfach ordentlich:
PHP-Code:
$zeichenkette = "teil1 " . $var1 . " teil2 " . $var2 . $var3;
und nicht
PHP-Code:
$zeichenkette = "teil1 $var1 teil2 $var2$var3";
Gruß,
Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
Geändert von AmicaNoctis (21-03-2010 um 17:07 Uhr)
|

21-03-2010, 16:59
|
|
SpecialFighter
Registrierter Benutzer
|
|
Registriert seit: Oct 2009
Beiträge: 31
|
|
sry kann da grad nicht ganz folgen. kannste mir das anhand meines sql befehls mal zeigen, damit ich das lernen kann? wäre sehr nett
|

21-03-2010, 17:11
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Sieh dir mal deine Variable $aendern an und zwar in beiderlei Hinsicht: Inwiefern trifft das von mir geschriebene dort zu? Und was steht am Ende überhaupt drin (echo/var_dump)?
Edit: Ich seh grad, dass das zwar nicht der Grund für den Fehler ist, aber es ist trotzdem schlechter Stil, der oft zu Problemen führt. Prüf mal jeweils, ob die Variablen, die aus externen Dateien kommen, überhaupt das enthalten, was sie sollen. Der Code ist wegen dieser Abhängigkeiten schlecht nachzuvollziehen und du solltest erstmal selbst mit z. B. echo überprüfen, ob das überhaupt so klappt wie es soll.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
Geändert von AmicaNoctis (21-03-2010 um 17:18 Uhr)
|

21-03-2010, 17:14
|
|
SpecialFighter
Registrierter Benutzer
|
|
Registriert seit: Oct 2009
Beiträge: 31
|
|
Bei var_dump werden mir alle Werte ausgegeben die ich brauche
|

21-03-2010, 17:24
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.310
|
|
Lass dir mal den Query per
ausgeben. Und die Abfrage führst du mal so aus:
PHP-Code:
$update = mysql_query($aendern) or die(mysql_error());
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

21-03-2010, 17:28
|
|
SpecialFighter
Registrierter Benutzer
|
|
Registriert seit: Oct 2009
Beiträge: 31
|
|
ja bei echo $aendern erhalte ich das hier:
UPDATE `daten` SET `Bemerkung I` = '', `Bemerkung II` = '', `Bemerkung III` = '',`Bemerkung IV` = ''
als wenn keine daten im array drin sind. habe aber immer noch nicht verstanden wie mein sql befehl laut AmicaNoctis aussehen soll. muss da iwo punkte setzen. aber ka wo
|

21-03-2010, 17:34
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Zitat:
Zitat von SpecialFighter
muss da iwo punkte setzen. aber ka wo
|
Grundlagenwissen kann ich dir nicht beibringen, das musst du selbst tun, indem du dich im Handbuch über die Datentypen informierst. Mein Beispiel war eigentlich schon ausführlich genug.
Dass die Variablen leer sind, hab ich mir schon gedacht, daher der Hinweis, dass du alle anderen Variablen auch verfolgen sollst, insbesondere wenn sie aus einem externen Script stammen.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

21-03-2010, 17:35
|
|
SpecialFighter
Registrierter Benutzer
|
|
Registriert seit: Oct 2009
Beiträge: 31
|
|
ich finds nur schade das es Leute wie dich gibt, die Hilfe nur über indirekten Weg anbieten, anstatt die Lösung 1x zu verfassen damit der jenige für die Zukunft bescheid weiß...sehr sehr schade
|

21-03-2010, 17:35
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.310
|
|
Das hat nichts mit deinem SQL-Befehl zu tun, sondern mit der Art, wie du die Daten aufbereitest. Das Problem scheint wohl hier zu liegen:
PHP-Code:
while($counter_db < $hidden_counter)
{
$daten_update[$counter_db] = $_POST['daten'.$x];
$counter_db ++;
$x ++;
}
Gib mal hinter dieser Schleife die Daten mit
PHP-Code:
print_r($daten_update);
aus.
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

21-03-2010, 17:36
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.310
|
|
Zitat:
Zitat von SpecialFighter
ich finds nur schade das es Leute wie dich gibt, die Hilfe nur über indirekten Weg anbieten, anstatt die Lösung 1x zu verfassen damit der jenige für die Zukunft bescheid weiß...sehr sehr schade
|
Hier gibt es keine fertigen Lösungen, sondern nur Hilfe zur Selbsthilfe.
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

21-03-2010, 17:39
|
|
SpecialFighter
Registrierter Benutzer
|
|
Registriert seit: Oct 2009
Beiträge: 31
|
|
also davon halte ich garnix. tut mir leid aber das ist meine Meinung...naja dann werd ich mir leider anders Hilfe verschaffen müssen. Habt mich zwar schon einen schritt weiter gebracht, worüber ich mich sehr freue, doch leider nicht zum Ziel.
Wünsche noch einen schönen Sonntag
P.S. habe hiner der schleife print_r ausgegeben
und erhalte auch die werte die ich eingegeben habe:
Array ( [0] => a [1] => b [2] => c [3] => d ) in dem beispiel jetzt a,b,c,d
Geändert von SpecialFighter (21-03-2010 um 17:41 Uhr)
|

21-03-2010, 17:45
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.310
|
|
Zitat:
Zitat von SpecialFighter
also davon halte ich garnix. tut mir leid aber das ist meine Meinung...
|
Wir haben hier leider die Erfahrung gemacht, dass wenn man komplette Lösungen anbietet, der TS beim nächsten Problem wieder so etwas erwartet. Und das ist nicht Sinn der Sache. Wenn du das wirklich lernen willst, so schau dir ggf. mal das hier an. Wurde extra für Anfänger gemacht.
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

21-03-2010, 17:46
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.310
|
|
Zitat:
Zitat von SpecialFighter
P.S. habe hiner der schleife print_r ausgegeben und erhalte auch die werte die ich eingegeben habe
|
Dann ist die Einbindung der externen Datei falsch. Liefer mal dazu den Code.
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

21-03-2010, 17:47
|
|
SpecialFighter
Registrierter Benutzer
|
|
Registriert seit: Oct 2009
Beiträge: 31
|
|
ja wobei ich es nicht ganz verstehe wo der fehler in meiner sql anweisung sein soll.
ich habe 3 andere sql anweisungen die ganau so aussehen und die auch funktionieren
|
|
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
|