php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 18.08.2008, 11:08  
Benutzer
 
Registriert seit: 19.09.2007
Beiträge: 88
Supeede befindet sich auf einem aufstrebenden Ast
Standard Datenbanktabelle updaten

Hallo mal wieder. Brauche mal hilfe. Also, ich habe eine Tabelle mit ID, Name und Punkte. Jeder Name hat auch Punkte. Nun möchte ich ein Formular erstellen, das eine Liste mit den Namen zeigt, und daneben ein Eingabefeld für Punkte. Und unten drunter noch 8 leere namensfelder mit Punktfelder. Wenn man jetzt auf absenden klickt sollen die Punkte aus dem Formular zu den Punkten in der Tabelle des jeweiligen hinzuaddiert werden. Und bei neuen Namen sollen neue Tabelleneinträge geschrieben werden. Das Formular zu erstellen ist leicht, was nicht leicht ist ist, wie ich die verarbeitung mache. Ich suche hier jetzt keine Lösung oder Scripte, sondern denkanstöße. Ich sitze da jetzt seit stunden dran, aber mir fällt nichts ein. ich könnte natürlich jede einzelne eingabe kontrollieren, aber ich dachte man kriegt es auch mit einer while oder if anweisung hin. Achja, es sei noch gesagt das nicht jeder Name aus dem Formular immer Punkte bekommt. Sondern immer nur einige, oder sogar keine, sondern nur Neue Namen. Ich hoffe ich konnte alles gut erklären. Danke schonmal.
Supeede ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 18.08.2008, 11:12  
Erfahrener Benutzer
 
Registriert seit: 05.04.2005
Beiträge: 1.333
Freeaak ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hm möglicherweise wäre da eine Prozedur innerhalb der Datenbank das richtige.

edit: sonst vielleicht mit einem "merge", falls du oracle nutzt
__________________
"Wenn du nicht weißt, was du tust: Machs mit Eleganz!"

(Murphy's Gesetze)

Geändert von Freeaak (18.08.2008 um 11:15 Uhr).
Freeaak ist offline  
Alt 18.08.2008, 11:16  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Und wo ist das konkrete Problem? Wenn du die Felder als Array benennst, kannst du sie auch in einer Schleife bearbeiten. Prüfen, ob Name schon vorhanden und ob Punkte vorhanden etc.
__________________
Gruss
L
lazydog ist offline  
Alt 18.08.2008, 20:44  
Benutzer
 
Registriert seit: 19.09.2007
Beiträge: 88
Supeede befindet sich auf einem aufstrebenden Ast
Standard

Mir fällt nichts ein. Also, so weit bin ich:

Formular, indem die Daten aus einer DB automatisch eingetragen werden (Namen) und ein Eingabefeld in das man die neuen Punkte eintragen soll.

$x=0;
while ($zeile = mysql_fetch_object($ergebnis)) {
$x++;
echo "<tr>";
echo "<td width=\"180\" align=\"center\">$zeile->name</td>";
echo "<input name=\"id\" value=\"$zeile->id\" type=\"hidden\">";
echo "<td width=\"50\" align=\"center\"><input name=\"neue_punkte$x\" type=\"text\" style=\"width:35px;\" maxlength=\"3\"></td>";
echo "</tr>\n";
};

ich habe noch mit einem hidden-feld die ID dazu geschrieben und mit übergeben. Aber das bringt mich auch nicht weiter.

Wie könnte jetzt die Verarbeitung ablaufen wenn man auf senden klickt?

Da das ja eine schleife ist, werden so um die 40 ID's übergeben, mit maximal 8 $neupunkte werte.

wie kriege ich es hin, das nun überprüft wird welche ID einen Wert mitbekommen hat?

40 einzelne Abfragen zu machen finde ich irgendwie falsch. Muss doch einfacher gehen.

Danke schon mal
Supeede ist offline  
Alt 19.08.2008, 12:10  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Ich hoffe, das nächste mal rückst du deinen Code anständig ein und setzest ihn in PHP-Tags. Bsp.:
PHP-Code:
if (!empty($_POST['sent']){
    foreach(
$_POST['neue_punkte'] as $key => $wert){
        if (empty(
$wert)){
            continue; 
// Nicht ganz sauber, aber vertretbar
        
}
        
$sql "
            INSERT INTO
                tabelle(
                    id,
                    punkte
                )
            VALUES(" 
.
                
intval($key) . ", " .
                
intval($wert) . "
            )
            ON DUPLICATE KEY
                UPDATE    punkte = " 
intval($wert);;
        
mysql_query($sql) or exit("Fehler: " mysql_error() . "<br />Abfrage: $sql<br />");
    }
}
else{
//    ...
    
echo "<form method='post' action=''>
            <table>\n"
;
    while (
$zeile mysql_fetch_object($ergebnis)) {
        
x++;
        echo 
"<tr>
                <td width='180' align='center'>$zeile->name</td> 
                <td width='50' align='center'>
                    <input name='neue_punkte[$zeile->id]' style='width:35px;' maxlength='3' />
                </td>
            </tr>\n"
;
    }
    echo 
"<tr>
            <td>
                <input type='hidden' name='sent' value='1' />
                <input type='submit' name='go' value='Abschicken' />
            </td>
        </tr>
        </table>
        </form>"
;

__________________
Gruss
L
lazydog ist offline  
Alt 19.08.2008, 15:15  
Benutzer
 
Registriert seit: 19.09.2007
Beiträge: 88
Supeede befindet sich auf einem aufstrebenden Ast
Standard

Da ich nicht weiß wie das mit dem PHP-Code geht, bleibt mir wohl nur die unschöne Variante
Ich bin noch nicht zu hause, sondern unterwegs, aber ich denke ich versuche es so:

im Formular:
<input name="neuepunkte[$zeile->id]">

und dann in der Verarbeitung:
php-code:

for($i=0;$i<-count($neuepunkte);$i++){
if(isset($neuepunkte[$i]!="")){
UPDATE //der Punkte bei ID $i wenn was drin gespeichert
}
}

Der Code ist nur dahingeschrieben, also nicht auf PARSE ERRORS achten

Ich melde ob es geklappt hat.
Supeede ist offline  
Alt 19.08.2008, 15:18  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Mach was du willst, interessiert mich nicht mehr.
__________________
Gruss
L
lazydog ist offline  
Alt 19.08.2008, 15:22  
Benutzer
 
Registriert seit: 19.09.2007
Beiträge: 88
Supeede befindet sich auf einem aufstrebenden Ast
Standard

Man man man, die Freundlichkeit in Person.

Es sollte nicht so rüberkommen das ich nicht dankbar für deine Hilfe wäre.
Aber ich denke, wenn hier jemand ein Prob postet, das er trotzdem drüber nachdenkt. So wie ich es tat. Und wenn man dann selber auf eine Lösung kommt (wenn sie denn funktioniert) ist es doch umso schöner

Also, danke erstmal.
Supeede ist offline  
Alt 19.08.2008, 16:29  
Moderator
 
Registriert seit: 06.06.2008
Beiträge: 4.945
PHP-Kenntnisse:
Fortgeschritten
Wolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer Anblick
Wolla eine Nachricht über ICQ schicken
Standard

Wenn du vor dem PHP-Code dies hier schreibst: [ php ] und hinter den Code dies hier : [ /php ] (ohne Leerzeichen innerhalb der eckgen Klammern), dann kann man den Code besser lesen.

ich denke, dass man das ganze so lösen kann:
PHP-Code:
$summe 0;
for(
$i=0;$i<-count($neuepunkte);$i++){
  if(isset(
$neuepunkte[$i])){
     
$summe $summe $neuepunkte[$i];
  }
}
$sql "UPDATE tbl SET punkte = $summe  WHERE ... "
Das wird allerdings dann zu undefinierten Ergebnissen führen, wenn mehrere Leute parallel mit dem Script arbeiten. In diesem Fall ist es besser, den alten Punktestand nicht vorher aus der Tabelle zu holen und ihn ins Formular einzubauen, sondern nur die Felder vorzuhalten in dnen neue Punkte hinzuaddiert werden sollen. Das UPDATE ändert sich dann wie folgt:
PHP-Code:
$sql "UPDATE tbl SET punkte = punkte + $summe WHERE  ..."
Wolla ist offline  
Alt 19.08.2008, 16:35  
Benutzer
 
Registriert seit: 19.09.2007
Beiträge: 88
Supeede befindet sich auf einem aufstrebenden Ast
Standard

Danke für die Erklärung zu dem php-code.

Es kommt nicht vor das mehrere Leute mit dem Script arbeiten.
Nur einer alleine. Trotzdem ist der zweite Teil deines Codes besser, da ja zu den alten Punkten die neuen hinzuadiert werden sollen. Bei dem ersten Teil überschreibst du ja nur die alten Punkte mit der neuen Summe.

Werd ich mal testen.
Supeede ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Array index updaten obi PHP Tipps 2008 4 28.11.2007 15:08
Updaten Delet und Insert klappen nicht PHP Tipps 2006 13 13.06.2006 13:59
Cookie updaten nicht neuerstellen? Xalon HTML, Usability und Barrierefreiheit 5 19.01.2006 14:52
CSV Datei einlesen, auslesen, updaten PHP Tipps 2006 6 08.01.2006 17:18
php updaten fadass Off-Topic Diskussionen 5 04.10.2005 01:24
Ich möchte php 4 auf php5 updaten!! Klaus Server, Hosting und Workstations 5 16.06.2005 20:16
Elemente in mehrdimensionalem Array gezielt updaten PHP Tipps 2005 4 29.04.2005 15:18
massenformular updaten chief-thomson PHP Tipps 2005 15 06.04.2005 20:12
Datensatz ändern (UPDATEN) PHP Tipps 2005 18 31.03.2005 09:46
php von 4.2.2 auf 4.3.10 updaten PHP-Fortgeschrittene 8 20.01.2005 07:52
Daten in Datenbanktabelle ändern. Datenbanken 7 13.01.2005 13:08
php 4.1.2 updaten PHP Tipps 2004-2 1 26.12.2004 17:51
Server updaten etc. (PHP Updaten) Beitragsarchiv 1 08.12.2004 09:59
formularfeld in eine Datenbanktabelle eintragen PHP Tipps 2004-2 15 30.11.2004 16:02
php 4.3.3 auf 4.3.6 updaten ? Server, Hosting und Workstations 3 21.06.2004 13:44

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mehrere datenbanktabellen updaten

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:52 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum