php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
wie bekomm ich das hin...


 
Vanse
28-05-2003, 01:39 
 
also ich möchte eine gewisse daten aus einer tabelle auslesen und diese werte dann darstellen. Das mache ich so:

$result=mysql_query("SELECT * FROM uebersicht WHERE id=$id ORDER BY zeitpunkt DESC ");
function show_result($result) {
while($data=mysql_fetch_array($result)) {
echo '<tr>
<td>'.$data[wer].'</td>
<td>'.$data[was].'</td>
<td>'.$data[anzahl].'</td>
</tr>';
}
}

Nun möchte ich aber das hinter jeder reihe noch ein Button erzeugt wird. Wenn dieser gedrückt wird soll es den entsprechenden eintrag aus der datenbank löschen...
Ich habe es wie folgt versucht was jedoch nicht den gewünschten effekt erzielt:
$resullt= .........
...
while.....
echo '<tr>
<form method=post action=beispiel.php>
<td>'.$data[wer].'</td>
<td>'.$data[was].'</td>
<td>'.$data[anzahl].'</td>
<td ><input name=formLoeschen type=submit value='.$data[anzahl].'></td>
</form></tr>';

//löschen
if(!$formLoeschen=="") {
mysql_query("UPDATE uebersicht SET anzahl='0' WHERE id='.$data[wer].' ");
}

Damit erreich ich zumindest das ein button mit der richtigen "anzahl" erscheint, wenn ich diesen jedoch klicke passiert nichts, der eintrag wird nicht geloescht...
aendere ich jedoch
mysql_query("UPDATE uebersicht SET anzahl='0' WHERE id='.$data[wer].' ");

in

mysql_query("UPDATE uebersicht SET anzahl='0' WHERE id=10 ");

um, wird der befehl ausgefuehrt...
ich als noob in sachen php gehe davon aus das die variable $data[wer] nicht ankommt, weis aber leider nicht warum bzw wo der haken ist.
kann mir da jemand helfen bzw. erklaeren wie ich so ein vorhaben auch einfacher loesen kann?


php.tags by Abraxax

 
Abraxax
28-05-2003, 01:58 
 
hier hast du einen fehlermysql_query("UPDATE uebersicht SET anzahl='0' WHERE id='.$data[wer].' ");
dein string beginnt und endet mit ", aber du verwendest ' um den string zu teilen.

entweder du nimmer " zum trennen oder ' als beginn und ende.

// " zum trennen verwenden
$result = mysql_query("UPDATE uebersicht SET anzahl='0' WHERE id=".$data[wer]." ");

// ' als string-beginn und -ende und innerhalb muss escaped werden.
$result = mysql_query('UPDATE uebersicht SET anzahl=\\\\'0\\\\' WHERE id='.$data[wer].' '); // form-darstellungfehler beim escapen
// bzw. bei zahlenfeldern, sind keine stringzeichen nötig.
$result = mysql_query('UPDATE uebersicht SET anzahl=0 WHERE id='.$data[wer].' ');

dann lege ich dir noch or die(mysql_error()) ans herz.$result = mysql_query("UPDATE uebersicht SET anzahl='0' WHERE id=".$data[wer]." ") or die(mysql_error());so siehst du auch, wenn fehler in der query sind.

 
weserweb
28-05-2003, 02:02 
 
versuch einmal statt
mysql_query("UPDATE uebersicht SET anzahl='0' WHERE id='.$data[wer].' ");
mysql_query("UPDATE uebersicht SET anzahl='0' WHERE id='$data[wer]' ");

 
Abraxax
28-05-2003, 02:07 
 
@weserweb
arrays machen sich nicht gut in strings, wenn der string nicht getrennt wird oder das array nicht in {} eingeschlossen wird.

 
weserweb
28-05-2003, 02:16 
 
@ Abraxax,
ich meinte ja dasselbe wie du, aber natürlich hast du recht.
ich verspüre nur etwas wie eine "bringschuld".
ihr habt mir so oft geholfen, da will ich auch mal ran.
aber ok, den array habe ich übersehen...

 
Vanse
28-05-2003, 02:20 
 
ersteinmal danke für die superschnellen hilfen :)
habe nun die zeile geändert in
$result = mysql_query("UPDATE uebersicht SET anzahl='0' WHERE id=".$data[wer]." ") or die(mysql_error());

aber ich halte dann leider nur die fehlermeldung
You have an error in your SQL syntax near '' at line 1

habe die oben genannte varianten durchprobiert

 
a4u
28-05-2003, 05:36 
 
Original geschrieben von Vanse
ersteinmal danke für die superschnellen hilfen :)
habe nun die zeile geändert in
$result = mysql_query("UPDATE uebersicht SET anzahl='0' WHERE id=".$data[wer]." ") or die(mysql_error());

aber ich halte dann leider nur die fehlermeldung
You have an error in your SQL syntax near '' at line 1

habe die oben genannte varianten durchprobiert

Das zeigt das du irgendwo in der Anfrage einen Fehler hast - ich nehme einmal an das $data['wer'] ist keine Zahl (muss ehrlich zugeben dass ich jetzt nicht die restlichen Postings durchgelesen habe ...

$result = mysql_query("UPDATE uebersicht SET anzahl='0' WHERE id='".$data['wer']."'") or die(mysql_error());

Versuchs mal damit

 
Abraxax
28-05-2003, 10:34 
 
Original geschrieben von weserweb
ich verspüre nur etwas wie eine "bringschuld".k.p. du kannst uns ja jeden eine cola bringen ... :rocks:

 
Vanse
28-05-2003, 12:57 
 
Habe ich nun auch probiert, was aber leider auch nix bringt, der fehler wird nun zwar nicht mehr angezeigt aber es wird auch kein datensatz gelöscht...
hab nun alles probiert und nichts funktioniert ;(

 
Abraxax
28-05-2003, 13:01 
 
Original geschrieben von Vanse
[...] aber es wird auch kein datensatz gelöscht... [...]gelöscht? :goth: von löschen hast du nie was gesagt. du willst was updaten. löschen geht mit DELETE FROM tabelle WHERE .....

 
Vanse
28-05-2003, 13:05 
 
ja sorry :)
ich will nicht löschen sondern UPDATEN....
sorry für den falschen ausdruck oben *g*

 
Abraxax
28-05-2003, 13:32 
 
und was geht jetzt nicht? hast du alle änderungen übernommen? wie sieht der aktuelle code aus?

 
Vanse
28-05-2003, 13:40 
 
der code sieht eigentlich immer noch gleich aus...


$result=mysql_query("SELECT * FROM uebersicht WHERE id=$id ORDER BY zeitpunkt DESC ");
function show_result($result) {
while($data=mysql_fetch_array($result)) {
echo '<tr>
<form method=post action=beispiel.php>
<td>'.$data[wer].'</td>
<td>'.$data[was].'</td>
<td>'.$data[anzahl].'</td>
<td ><input name=formLoeschen type=submit value='.$data[anzahl].'></td>
</form></tr>';
}
}

//löschen
if(!$formLoeschen=="") {
mysql_query("UPDATE uebersicht SET anzahl='0' WHERE id='.$data[wer].' ");
}



habe nun alles was empfohlen wurde mit " oder ' versucht, kein erfolg...

 
Wurzel
28-05-2003, 13:50 
 
2 kleine logische fehler. setz die zeilen mal ein:


<input name=formLoeschen type=submit value='.$data[wer].'>

mysql_query("UPDATE uebersicht SET anzahl='0' WHERE id='.$_POST['formLoeschen'].' ");

 
Abraxax
28-05-2003, 13:54 
 
nein. du hast ja eigentlich gar nichts geändert. du musst mal 1+1 zusammenzählen.

hier hast du einen fehlermysql_query("UPDATE uebersicht SET anzahl='0' WHERE id='.$data[wer].' ");
dein string beginnt und endet mit ", aber du verwendest ' um den string zu teilen.

entweder du nimmer " zum trennen oder ' als beginn und ende.

// " zum trennen verwenden
$result = mysql_query("UPDATE uebersicht SET anzahl='0' WHERE id=".$data[wer]." ");

// ' als string-beginn und -ende und innerhalb muss escaped werden.
$result = mysql_query('UPDATE uebersicht SET anzahl=\\\\'0\\\\' WHERE id='.$data[wer].' '); // form-darstellungfehler beim escapen
// bzw. bei zahlenfeldern, sind keine stringzeichen nötig.
$result = mysql_query('UPDATE uebersicht SET anzahl=0 WHERE id='.$data[wer].' ');

dann lege ich dir noch or die(mysql_error()) ans herz.$result = mysql_query("UPDATE uebersicht SET anzahl='0' WHERE id=".$data[wer]." ") or die(mysql_error());so siehst du auch, wenn fehler in der query sind.

Original geschrieben von a4u
Das zeigt das du irgendwo in der Anfrage einen Fehler hast - ich nehme einmal an das $data['wer'] ist keine Zahl (muss ehrlich zugeben dass ich jetzt nicht die restlichen Postings durchgelesen habe ...
$result = mysql_query("UPDATE uebersicht SET anzahl='0' WHERE id='".$data['wer']."'") or die(mysql_error());

sprich. diese zeile müsste wie folgt aussehen.$result = mysql_query("UPDATE uebersicht SET anzahl='0' WHERE id=".$data[wer]." ") or die(mysql_error());
// oder so. mit ' um die id.
$result = mysql_query("UPDATE uebersicht SET anzahl='0' WHERE id='".$data[wer]."'") or die(mysql_error());

wenn du es immer noch nicht verstanden hast, lies die die antworten einfach noch einmal ganz laaaaaaaaaangsam durch. ;)

 
Wurzel
28-05-2003, 14:00 
 
@abraxax
trotzdem sollte er beim update auf $_POST['formLoeschen']
zugreifen. ist die einzige var, die per post übergibt. oder bin ich blind ?

 
Vanse
28-05-2003, 14:07 
 
entschuldige bitte aber ich habe das schon ALLES versucht mit den " und '
die zeichen auszutauschen bekomm ich ja auch noch hin.

wenn ich wie vorgeschlagen ändere kommt ne fehlermeldung!!
syntax error near " at line 1.
wenn ichs mit ' mache passiert garnix....

wenn ichs mit POST mache dann kommt fehlermeldung:Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in blabla

also ich habe bereits alles versucht was hier beschrieben wurde, ich kann auch 1 und 1 zusammenzaehlen oder alles langsam lesen, deswegen funktioniert mein code trotzdem nicht :)

 
Abraxax
28-05-2003, 14:17 
 
Original geschrieben von Wurzel
@abraxax
trotzdem sollte er beim update auf $_POST['formLoeschen']
zugreifen. ist die einzige var, die per post übergibt. oder bin ich blind ? stimmt auch wieder. da habe ich was übersehen.... ;)

@Vanse
und wie sieht dein code jetzt aus?

 
Vanse
28-05-2003, 14:23 
 
also die betreffenden zeilen sehen wie folgt aus...

..
..
<td><input name=formLoeschen type=submit value='.$data[anzahl].'></td>
</form></tr>';



und dann:


if(!$formLoeschen=="") {
mysql_query("UPDATE uebersicht SET anzahl='0' WHERE id='$_POST['formloeschen']' ") or die(mysql_error());


so, wenn ich es so mache kommt error: Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in blabla

nochmal zur erinnerung, wenn ich

if(!$formLoeschen=="") {
mysql_query("UPDATE uebersicht SET anzahl='0' WHERE id=100 ") or die(mysql_error());

mache funktioniert es, aber halt nur für die id 100, ist ja leider nicht sinn der sache...

 
Abraxax
28-05-2003, 14:29 
 
du hast es scheinbar immer noch nicht kappiert mit " und ' :mad:


if(!$formLoeschen=="") {
mysql_query("UPDATE uebersicht SET anzahl='0' WHERE id='".$_POST['formloeschen']."'") or die(mysql_error());

 
Vanse
28-05-2003, 14:42 
 
Ops, ja jetzt funktioniert es !
ich kann mir aber das mit den ' und " wohl nie merken, bzw. ich hab wohl echt probleme damit es zu verstehen *kopf an tisch hau*

ich danke für die lösung und sorry wenn ich etwas länger dafür gebraucht habe, irgendwann wird aber auch ein noob zum newbie *g*

ich haette da nun aber noch gleich 2 weitere problemchen und zwar:
-wenn ich den button klicke wird der eintrag gelöscht, ok.
aber wie mach ich das am besten das der user nach dem klick sofort die aktualisierte seite sehen kann? jetzt ist es ja so das er erst die aktuelle seite sieht wenn er die seite nochmal neu lädt.
ich kann das ja mit "meta refresh" umgehen aber scheint mir eher eine unsaubere lösung zu sein.

-ich erzeuge ja wie oben beschrieben hinter jeder reihe einen button, dieser button hat als value die anzahl die in der db gespeichert ist. es wäre jedoch auch schöner wenn da nicht die anzahl als value wäre sondern zb. "löschen". beim klick wird dann aber jedoch "löschen" übergeben welches mir dann ja nicht den richtigen wert in der db ändert.
wie schaff ich es also das ich n button "löschen" bekomme und dieser bei betätigung aber nur den entsprechenden wert aus der db ändert.

sorry für diese vielleicht "blöde" fragen aber ich komm da echt auf keinen grünen zweig....

 
Abraxax
28-05-2003, 15:00 
 
Original geschrieben von Vanse
*kopf an tisch hau*aber bitte soooo feste und sooo oft, dass die tischplatte langsam eine rötliche farbe annimmt... :D

nun zu deinem refresh problem.

mache es so, dass die ausgabe der aktuellen daten IMMER am ende macht. wenn du dann vorher was löschst, kann die später folgende abfrage diese daten nciht mehr finden. sie sind ja weg. und so hast du dann aktuelle werte ohne F5 bzw. refresh und co.

 
Vanse
28-05-2003, 15:06 
 
getan und funktioniert! ich bin echt begeistert :cool:
nun noch die lösung für das andere problem und ich spreche das forum heilig *g*

 
Wurzel
28-05-2003, 15:29 
 
speichere die id für den zu ändernden datensatz in
einem hidden-field, dann kannst du den button
nennen/beschriften, wie du willst.

<input type='submit' name='button' value='loeschen'>
<input type='hidden' name='formLoeschen' value='".$data['wasauchimmer']."'>

 
Vanse
28-05-2003, 15:46 
 
auch das funktioniert! ich bin nun echt der glücklichste mensch den es heut auf erden gibt, DANKE EUCH!

http://www.kindergarten-workshop.de/images/smileys/verbeug.gif


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