brauche Webseite ideal für Vereine und Firmen
- Ad -
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! Post your PHP questions here!

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 15-07-2005, 07:35
computiger
 Newbie
Links : Onlinestatus : computiger ist offline
Registriert seit: Nov 2002
Beiträge: 14
computiger ist zur Zeit noch ein unbeschriebenes Blatt
Question Inputfeld verarbeiten

Hallo

ich möchte gern, die mit mysql_fetch_array ausgegebenen, MySQL-Daten über INPUT Felder in der Datenbank ändern, und wieder ins INPUT Feld übergeben.

Irgendwie scheine ich aber dabei nicht so ganz klar zu kommen.

hier ein Beispiel:
PHP-Code:
<?php
 
while ($myrow mysql_fetch_array($result)){
?>
<tr>
 <td><?php echo $myrow["MATCHCODE"]; ?></td>
 <td><input type='Text' name='anzahl<?php echo $myrow['tid']; ?>'  value='<?php echo $myrow['anzahl']; ?>' size='1' ></td>
</tr>
<?php
}
?>
Ich habe versucht eine Variable zu setzen, die sich aus anzahl und der eindeutigen TabellenID zusammensetzt.
Das hat auch wunderbar funktioniert. Die Probleme habe ich, die Daten weiterzuverarbeiten.

PHP-Code:
$id=$myrow1['tid'];
if(isset(
$_REQUEST['anzahl'.$id]))
{
    if (
$_REQUEST['anzahl'].$id != $myrow1['anzahl']){
        
$aenderung=$_REQUEST['anzahl'.$id];
        
$updatesql="UPDATE temp SET anzahl='$aenderung' WHERE tid='$id'";
        
$resultupdatesqlmysql_query($updatesql) or die( sprintf($error,'SQL-ERROR: ').mysql_error() );

Hat jemand eine Idee bzw. einen Vorschlag, wie es besser zu realisieren ist?
Mit Zitat antworten
  #2 (permalink)  
Alt 15-07-2005, 08:20
hhcm
 PHP Senior
Links : Onlinestatus : hhcm ist offline
Registriert seit: Jun 2005
Ort: Viersen, NRW
Beiträge: 1.829
hhcm ist zur Zeit noch ein unbeschriebenes Blatt
hhcm eine Nachricht über ICQ schicken hhcm eine Nachricht über Skype™ schicken
Standard

Versuch doch mal anstatt name='anzahl<?php echo $myrow['tid']; ?>' einfach name="anzahl[]"

Damit hast du nach dem senden des Formlulars in $_POST["anzahl"] ein Array das du weiterverarbeiten kannst.

Geändert von hhcm (15-07-2005 um 09:44 Uhr)
Mit Zitat antworten
  #3 (permalink)  
Alt 15-07-2005, 20:45
computiger
 Newbie
Links : Onlinestatus : computiger ist offline
Registriert seit: Nov 2002
Beiträge: 14
computiger ist zur Zeit noch ein unbeschriebenes Blatt
Smile

klingt gut.

Ich werde es nachher gleich einmal probieren.

Danke
Mit Zitat antworten
  #4 (permalink)  
Alt 15-07-2005, 23:45
computiger
 Newbie
Links : Onlinestatus : computiger ist offline
Registriert seit: Nov 2002
Beiträge: 14
computiger ist zur Zeit noch ein unbeschriebenes Blatt
Standard


Irgendwie komme ich nicht weiter.

Die Übergabe in ein Array klappt, das Positionieren des Arrayzeigers funktioniert nicht.

Ich habs wie folgt probiert:

PHP-Code:
<?php
$query    
"SELECT tid FROM temp";
$result    mysql_query$query ) or die( sprintf($error,'SQL-ERROR: ').mysql_error() );
$gesamt =  mysql_num_rows$result );
$zaehler            =       0;

while (
$myrow mysql_fetch_array($result))
{

     
$wert $anzahl[$zaehler];
     if (
$wert != $myrow['anzahl'])
    {  
         
$updatesql="UPDATE temp SET anzahl='$wert' WHERE tid='$id'";
         
$resultupdatesqlmysql_query($updatesql) or die(sprintf($error,'SQL-ERROR: ').mysql_error() );  
     }
?>
<tr>
 <td><?php echo $myrow["MATCHCODE"]; ?></td>
 <td><input type='Text' name='anzahl<?php echo $myrow['tid']; ?>'  value='<?php echo $myrow['anzahl']; ?>' size='1' ></td>
</tr>
<?php
 $zaehler
++;
}
?>
Da das MySQL_FETCH_ARRAY die gleiche Größe wie das Array Anzahl[] aus dem InputFeld hat, sollte es doch so funktionieren?

Aber es funktioniert nur, wenn nur ein Datensatz vorhanden ist, und auch nur, wenn das Formular zweimal aufgerufen wurde.

Das heisst, im Prinzip das gleiche Problem, wie vorher auch.

Weiss jemand eine Lösung?
Mit Zitat antworten
  #5 (permalink)  
Alt 15-07-2005, 23:58
prego
 PHP Senior
Links : Onlinestatus : prego ist offline
Registriert seit: May 2005
Ort: Hey ropp, hinne riwwer unn wirrer zuricke!
Beiträge: 1.602
prego ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich versuch mal kurz nachzuvollziehen was du machst - korrigier mich wenn ich falsch liege

Du selectest nur die Spalte "tid" aus deiner Datenbank.
...
Du greifst per $myrow auf die Spalte "anzahl" zu die nicht existiert.
...
Du greifst per $myrow auf die Spalte "MATCHROW" zu die nicht existiert.
...
Du erstellst ein neues Imput-Element mit Namen "anzahl{tid}" und nicht anzahl[{tid}] (fals du das machen wolltest)
...
Du setzt in value eine leere Variable ($myrow['anzahl'])

So ganz stimmig ist es nicht....

---
PS: benutz bitte mysql_fetch_array($result, MYSQL_ASSOC) um speicher zu sparen, wenn du die numerischen zeiger nicht brauchst...

PSS: Schreib bitte $array['key'] und nicht $array[key] - weil sonst php versucht eine Konstante namens key zu benutzen und dann im Fehlerfall den String 'key' benutzt
__________________
so long, der-p | 72dpi-club

Microsoft IE-Manager Dean Hachamovitch bei der Vorführung des IE7 Beta Preview 2 am 20.3.2006:
"Wir hatten mit IE ganz offensichtlich was verschlafen."
Mit Zitat antworten
  #6 (permalink)  
Alt 16-07-2005, 09:07
computiger
 Newbie
Links : Onlinestatus : computiger ist offline
Registriert seit: Nov 2002
Beiträge: 14
computiger ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ok, ich hatte den Code etwas abgekürzt.

Ich selektiere die Spalte tid und anzahl aus der Tabelle temp.
Dann suche ich in einer anderen Tabelle tab_art nach id, welche den Wert von tid haben soll, um diese Zeilen auszugeben.

In den ausgegebenen Zeilen möchte ich, über ein INPUT-Feld, die Werte für Anzahl, in der Tabelle temp, ändern.

PHP-Code:
<?php
$sql1
="SELECT tid,anzahl from temp where 1";
$result1 mysql_query($sql1);
$gesamt =  mysql_num_rows$result1);
$zaehler            =       0;

while (
$myrow1 mysql_fetch_array($result1MYSQL_ASSOC))
{
     
$IDD=$myrow1["tid"];
     
$sql="SELECT id,MATCHCODE,BEZEICHNUN,BILD FROM tab_art WHERE id = '$IDD'";
     
$result mysql_query($sql) or die( sprintf($error,'SQL-ERROR: ').mysql_error() );
     while (
$myrow mysql_fetch_array($resultMYSQL_ASSOC))
     {
     
$wert $anzahl[$zaehler];
     if (
$wert != $myrow1['anzahl'])
    {  
         
$updatesql="UPDATE temp SET anzahl='$wert' WHERE tid='$id'";
         
$resultupdatesqlmysql_query($updatesql) or die(sprintf($error,'SQL-ERROR: ').mysql_error() );  
     }
     
?>
     <tr>
      <td><?php echo $myrow["MATCHCODE"]; ?></td>
      <td><input type='Text' name='anzahl[]'  value='<?php echo       $myrow1['anzahl']; ?>' size='1' ></td>
     </tr>
     <?php
      $zaehler
++;
     }
}
?>
Zitat:
Du erstellst ein neues Imput-Element mit Namen "anzahl{tid}" und nicht anzahl[{tid}] (fals du das machen wolltest)
ich bin dem Rat von hhcm gefolgt und habe für das das Inputfeld ein Array erstellt.

Das auslesen des Arrays über
PHP-Code:
if (isset($_REQUEST["anzahl"]))
{
    foreach(
$_REQUEST["anzahl"] as $wert)
    {
        echo 
$wert."<br>";
    }

klappt super.

Die schwierigkeiten habe ich, die Werte des Arrays,richtig positioniert, in die Datenbank zu bekommen.

Geändert von computiger (16-07-2005 um 17:02 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 16-07-2005, 12:58
newphp
 Junior Member
Links : Onlinestatus : newphp ist offline
Registriert seit: Jul 2005
Beiträge: 174
newphp ist zur Zeit noch ein unbeschriebenes Blatt
Standard

welche Reihnenfolge brauchst du denn? versteh dein Problm nicht so ganz
Mit Zitat antworten
  #8 (permalink)  
Alt 16-07-2005, 18:03
computiger
 Newbie
Links : Onlinestatus : computiger ist offline
Registriert seit: Nov 2002
Beiträge: 14
computiger ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@newphp
Zitat:
welche Reihnenfolge brauchst du denn? versteh dein Problm nicht so ganz
OK, ich versuche mich besser auszudrücken.

Ich habe eine Tabelle tab_art und eine namens temp.
In der Tabelle temp speichere ich, in einem anderen Formular, bestimmte Zeilen (nur die ID der Zeilen) der Tabelle tab_art und eine Stückzahl Anzahl.

Jetzt gebe ich die Zeilen der Tabelle tab_art, mit der als Filter fungierenden Tabelle temp, aus, sowie die Stückzahl, welche ich evtl. über ein Input-Feld ändern und den geänderten Wert zurück in die Tabelle temp schreiben möchte.
Mit Zitat antworten
  #9 (permalink)  
Alt 16-07-2005, 19:19
computiger
 Newbie
Links : Onlinestatus : computiger ist offline
Registriert seit: Nov 2002
Beiträge: 14
computiger ist zur Zeit noch ein unbeschriebenes Blatt
Smile

OK, ich hatte einen Denkfehler.

Die Werte für Anzahl müssen geändert werden, bevor ich MYSQL_FETCH_ARRAY für die Listendarstellung aufrufe und nicht darin.
Das heisst, erst das Array des INPUT-Feldes verarbeiten
PHP-Code:

if (isset($_REQUEST["anzahl"]))
{
     
$sqlaendern="SELECT tid,anzahl from temp";
     
$resultaendern mysql_query($sqlaendern);
        
     while (
$myrowaendern mysql_fetch_array($resultaendernMYSQL_ASSOC))
      {     
            
$id=$myrowaendern['tid'];
            
$wert $anzahl[$zaehler];
            echo 
$wert."<BR>";
             
            
$updatesql="UPDATE temp SET anzahl='$wert' WHERE tid='$id'";
            
$resultupdatesqlmysql_query($updatesql) or die( sprintf($error,'SQL-ERROR: ').mysql_error() );  
            
$zaehler++;
       }   
 } 
und dann die Ausgabe generieren

PHP-Code:
<?php
$sql1
="SELECT tid,anzahl from temp where 1";
$result1 mysql_query($sql1);
$gesamt =  mysql_num_rows$result1);
$zaehler            =       0;

while (
$myrow1 mysql_fetch_array($result1MYSQL_ASSOC))
{
     
$IDD=$myrow1["tid"];
     
$sql="SELECT id,MATCHCODE,BEZEICHNUN,BILD FROM tab_art WHERE id = '$IDD'";
     
$result mysql_query($sql) or die( sprintf($error,'SQL-ERROR: ').mysql_error() );
     while (
$myrow mysql_fetch_array($resultMYSQL_ASSOC))
     {
     
     
?>
     <tr>
      <td><?php echo $myrow["MATCHCODE"]; ?></td>
      <td><input type='Text' name='anzahl[]'  value='<?php echo       $myrow1['anzahl']; ?>' size='1' ></td>
     </tr>
     <?php
     
}
}
?>
Jetzt werden die Daten korrekt angezeigt und auch in Die Tabelle temp übernommen.

Gibt es jetzt noch eine Möglichkeit, per Link, ein INPUT-Feld zu übertragen?
Mit Zitat antworten
  #10 (permalink)  
Alt 16-07-2005, 19:24
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:
Gibt es jetzt noch eine Möglichkeit, per Link, ein INPUT-Feld zu übertragen?
ohne js - nur manuell:
Code:
<a href="foo.php?foo=bar">link</a>
Mit Zitat antworten
  #11 (permalink)  
Alt 16-07-2005, 20:39
computiger
 Newbie
Links : Onlinestatus : computiger ist offline
Registriert seit: Nov 2002
Beiträge: 14
computiger ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@penizillin
den manuellen Weg kenne ich.

Wie funktioniert es in JavaScript?
Auch, wenn die Frage nicht ins PHP Forum passt
Mit Zitat antworten
  #12 (permalink)  
Alt 17-07-2005, 13:52
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

http://de.selfhtml.org/javascript/ob...rms.htm#submit
Mit Zitat antworten
  #13 (permalink)  
Alt 17-07-2005, 14:22
computiger
 Newbie
Links : Onlinestatus : computiger ist offline
Registriert seit: Nov 2002
Beiträge: 14
computiger ist zur Zeit noch ein unbeschriebenes Blatt
Smile

Habs jetzt so gelöst
PHP-Code:
<form action="<?php echo "{$_SERVER['PHP_SELF']}"?>" name="Form<?php echo $s?>" method="GET" >
  <input type='Text' style='text-align:center;' name='anzahl' value='<?php echo $myrow1['anzahl']; ?>' size='1'>
   <input type="hidden" name="anders" value="<?php echo $IDD?>">
   <a target='_self' href='javascript:window.document.Form<?php echo $s?>.submit();'>aendern</a></form>
Für jede Ausgabezeile habe ich ein neues Formular, indem ich den Input ändern und per Link, einzeln, weiterverarbeiten kann.
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

MariaDB 5.5 veröffentlicht
MariaDB 5.5 veröffentlichtDie freie MySQL-Alternative MariaDB wurde in der stabilen Version 5.5.23 veröffentlicht und soll einige Verbesserungen gegenüber Oracles Communityversion von MySQL mitbringen.

16.04.2012 | Berni

Deutsche Yii Framework Community
Deutsche Yii Framework CommunitySeit dem 19.03.2012 gibt es für die Yii PHP Framework Community ein deutsches Zuhause.

20.03.2012 | dhcomputer

 

Aktuelle PHP Scripte

Advanced Login ansehen Advanced Login

Login-System und Kundenverwaltung, die sich spielend leicht in bestehende Webseiten einbauen lässt und einen enormen Funktionsumfang bietet. Ihre eigene Webseite muss mit Advanced Login nicht umständlich an ein fertiges System angepasst werden.

25.05.2012 Madden | Kategorie: PHP/ Kundenverwaltung
BROM CMS/BelCal 3 ansehen BROM CMS/BelCal 3

Spezielles CMS für Betreiber von Ferienwohnungen. Komplette Seitenerstellung online, Verwaltung mehrerer Objekte, Reservierungssystem mit sofortigem Abgleich im Belegungskalender und vieles mehr bietet dieses Content Management System.

25.05.2012 belcal2 | Kategorie: PHP/ CMS
belbit LiveSupport Script ansehen belbit LiveSupport Script

Schnellen und unkomplizierten Support im LiveSupport-Chat anbieten. Ohne Datenbank und in wenigen Sekunden installiert.

24.05.2012 EichbaumMedia | Kategorie: PHP/ Chat
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 09:01 Uhr.