php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 14.08.2005, 19:10  
Benutzer
 
Registriert seit: 18.07.2005
Beiträge: 90
c-bass
Standard wird der array überschrieben? foreach problem

hallo,

ich habe ein eingabe formular. auf klick des submitbuttons werden die daten inklusive von meheren Arrays an die nächste Seite übergeben und werden dort in die Datenbank eingetragen. Es funktioniert alles super, nur dass bei den Arrays immer der letzte Wert in die Datenbank für alle Einträge geschrieben wird, obwohl alle Arraywerte korrekt an die 2 Seite übergeben werden. Ich vermute den Fehler in der Foreach schleife, kann aber keinen Fehler ausmachen. Ich habe auch schon überlegt ob die Werte immer überschrieben werden.

Vielleicht kann mir ja da jemand helfen.

Seite 1 - Eingabe der Daten, Arrays:

PHP-Code:
<?php
<form action="fa_pass.php?admin=yes&page=newobjekt_erfolgt&<?=SID ?>" method="post" name="form1">
<
input name="ObjektnummerO" type="hidden" value="<? echo $ObjektnummerO; ?>">
  <
h2>  Objektanlegen Vertragstyp (Schritt 2 von 2) </h2

    

  
  <?
php 
// Mieter:

print "<table border=1>";

//Hohle zugewiesene Objekte aus DB aus Tabelle Mieter 
$befehl1 "SELECT * FROM Mieter WHERE ObjektnummerM = '$ObjektnummerO'" or die (mysql_error()); 

//Befehl1 ausführen
$objekte mysql_query($befehl1,$verbindung) or die (mysql_error());    

print 
"<tr><td>Zugewiesene Kunden

</td><td>Vertragstyp</td></tr>"
;

//Jede Zeile ausgeben
while ($eingabe mysql_fetch_array($objekte))   
                                {
                                
?>
  
  <tr>
    <td><?=$eingabe[KundennummerM]?>      

    </td>
    <td>
      <select name="VertragstypM[]">
        <option>w&auml;hlen</option>
        <option>WEG-Verwaltung</option>
        <option>Mietsonderverwaltung</option>
        <option>Mietvertrag</option>
        <option>Verwaltervertrag</option>
        <option>Abrechnungsvertrag</option>
        <option>Leerstandsverwaltung</option>
        <option>Sonstige Dienstleistungsvertr&auml;ge</option>
      </select>
    </td>
  </tr>
  <?php 
                                 
}

 
// Eigentuemer:

//Hohle zugewiesene Objekte aus DB aus Tabelle Eigentuemer 
$befehl2 "SELECT * FROM Eigentuemer WHERE ObjektnummerE = '$ObjektnummerO'" or die (mysql_error()); 

//Befehl1 ausführen
$objekte2 mysql_query($befehl2,$verbindung) or die (mysql_error());    

//Jede Zeile ausgeben
while ($eingabe2 mysql_fetch_array($objekte2))   
                                {
                                
?>
  <tr>
    <td>
      <?=$eingabe2[KundennummerE]?>
    </td>
    <td>
      <select name="VertragstypE[]">
        <option>w&auml;hlen</option>
        <option>WEG-Verwaltung</option>
        <option>Mietsonderverwaltung</option>
        <option>Mietvertrag</option>
        <option>Verwaltervertrag</option>
        <option>Abrechnungsvertrag</option>
        <option>Leerstandsverwaltung</option>
        <option>Sonstige Dienstleistungsvertr&auml;ge</option>
      </select>
    </td>
  </tr>
  <?php 
                                 
}
print 
"</td></tr></table>";
?>
  

  

  

  

  <input type="submit" name="Submit_vertragstyp" value="Objekt anlegen">
  

</form>
?>

Seite 2 - Eintrag in DB:

PHP-Code:
<?php
echo '<pre>'.print_r($_POSTtrue).'</pre>';

//Datenbankanbindung zu Tabelle "Objekte" mit Variabeln unter FAPass
$verbindung mysql_connect($conf_pass->db_host,$conf_pass->db_user,$conf_pass->db_pass);  
mysql_select_db($conf_pass->db_name,$verbindung) or die(mysql_error()); 


if (isset(
$_POST['Submit_vertragstyp'])) { 

                              
//Eintrag Vertragstyp von Mietern von Objekt in Tabelle "Mieter", für alle ausgewählten Mieter
                              
foreach($VertragstypM as $Vertrag)
                              { 
                              
mysql_query("UPDATE Mieter SET VertragstypM='$Vertrag' WHERE ObjektnummerM='$ObjektnummerO'") or die(mysql_error());
                              }
                              
                              
//Eintrag Vertragstyp von Eigentuemern von Objekt in Tabelle "Eigentuemer", für alle ausgewählten Eigentümer
                              
foreach($VertragstypE as $Vertrag)
                              { 
                              
mysql_query("UPDATE Eigentuemer SET VertragstypE='$Vertrag' WHERE ObjektnummerE='$ObjektnummerO'") or die(mysql_error());
                              }
                             
                              }
?>
__________________
// http://www.4Webworking.de
// Das Ressourcenarchiv für Webworker
c-bass ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 14.08.2005, 19:13  
Gast
 
Beiträge: n/a
Standard

Zitat:
foreach($VertragstypM as $Vertrag)
{
mysql_query("UPDATE Mieter SET VertragstypM='$Vertrag' WHERE ObjektnummerM='$ObjektnummerO'") or die(mysql_error());
}
$ObjektnummerO ändert sich nicht innerhalb der Schleife, also trifft die WHERE-Bedingung immer auf die selben Datensätze zu (es ist einfach immer die selbe WHERE-Bedingung). Also werden auch immer die selben Datensätze geändert - auch im letzten Durchlauf; deshalb siehst Du nur die letzte Änderung.
 
Alt 15.08.2005, 10:02  
Benutzer
 
Registriert seit: 18.07.2005
Beiträge: 90
c-bass
Standard

nein das stimmt nicht, denke ich! denn es gibt immer mehrere Einträge in der Datenbank mit der selben Objektnummer, die ja schon vorhanden sind. Die neuen Einträge werden ja an der richtigen Stelle vorgenommen, nähmlich dort wo die richtige Objektnummer ist, nur der falsche Arraywert wird eingetragen, und zwar immer der letztere!
__________________
// http://www.4Webworking.de
// Das Ressourcenarchiv für Webworker
c-bass ist offline  
Alt 15.08.2005, 11:06  
Gast
 
Beiträge: n/a
Standard

Abgesehen mal davon, daß die Herkunft einiger Variablen noch unklar ist (sicher wieder mal register_globals = On):
Zitat:
Zitat von c-bass
nein das stimmt nicht, denke ich! denn es gibt immer mehrere Einträge in der Datenbank mit der selben Objektnummer, die ja schon vorhanden sind.
Genau das ist ja der Fehler. All den Datensätze mit der selben Objektnummer weist Du innerhalb der Schleife immer wieder einen neuen Vertragstyp zu. Klar, daß dann am Schluß in den Datensätzen mit gleicher Objektnummer der letzte Vertragstyp steht.
 
Alt 15.08.2005, 12:42  
Gast
 
Beiträge: n/a
Standard

Und wenn Du das auch nicht glaubst, dann lass Dir halt anzeigen, wieviele Datensätze jeweils geändert werden und dann zähl ab.
PHP-Code:
<?php
 
//Eintrag Vertragstyp von Mietern von Objekt in Tabelle "Mieter", für alle ausgewählten Mieter
foreach($VertragstypM as $Vertrag)

    
$query "UPDATE Mieter SET VertragstypM='$Vertrag' WHERE ObjektnummerM='$ObjektnummerO'";
    
mysql_query($query) or die(mysql_error());
    
    echo 
'

'
htmlentities($query), "
\n"
,
        
'Es wurden 'mysql_affected_rows(), ' Einträge geändert'"

\n"
;
}
?>
 
Alt 15.08.2005, 12:57  
Benutzer
 
Registriert seit: 18.07.2005
Beiträge: 90
c-bass
Standard

nene, ich hätte mal besser den ganzen code veröffentlichen sollen. es werden ja alle einträge geändert. nur halt nicht richtig. ich muss da nochmal selber schaun, ich glaub da is woanders noch ein fehler. danke euch.
__________________
// http://www.4Webworking.de
// Das Ressourcenarchiv für Webworker
c-bass ist offline  
Alt 15.08.2005, 13:01  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von c-bass
nene, ich hätte mal besser den ganzen code veröffentlichen sollen. es werden ja alle einträge geändert. nur halt nicht richtig.
Woran das liegt, versuchen Volker und ich Dir ja gerade vergeblich beizubringen.

Zitat:
ich muss da nochmal selber schaun
Gute Lösung. Ich für meinen Teil verliere so langsam das Interesse an Deinem Fehler.
 
Alt 15.08.2005, 13:19  
Gast
 
Beiträge: n/a
Standard

Es wäre so einfach gewesen, den copy&paste-fähigen Code mal kurz einzubauen und zu schauen. Ich hätte es jedenfalls getan, wenn zwei mehr oder weniger unabhängig voneineander aud den selben vermeintlichen Fehler hinweisen.
Naja, jedenfalls schließe ich mich Meikel an.
 
 


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
Turnierbaum aus array erstellen kingflo PHP-Fortgeschrittene 11 30.07.2008 11:32
Array Problem andrew22 PHP Tipps 2008 2 13.03.2008 20:09
Problem mit foreach fritz_07 PHP Tipps 2008 2 09.03.2008 09:57
Dynamisches Array - Problem mit Ersetzen von einz. Werten Micro PHP Tipps 2008 10 29.01.2008 11:12
Funktions Problem mit Array andrew22 PHP Tipps 2007 11 03.07.2007 17:30
Array Problem dsmcg PHP Tipps 2006 3 07.12.2006 14:34
Array Formatierung PHP Tipps 2006 3 17.01.2006 19:12
Array Problem PHP Tipps 2007 10 25.11.2005 08:48
Mehrere Dateien uploaden (foreach Problem) pixelcut PHP-Fortgeschrittene 3 09.11.2005 17:34
Problem mir einem Array PHP Tipps 2005-2 5 11.08.2005 11:33
Abfrage mit id aus anderer Tabelle suter PHP Tipps 2004-2 15 16.12.2004 14:25
bbcode - Classe PHP-Fortgeschrittene 4 18.09.2004 17:30
Problem mit Checkboxvalues in Array PHP Tipps 2004 1 17.09.2004 15:00
Array Problem andrew22 PHP Tipps 2004 9 17.09.2004 10:41
foreach problem mAy^daY PHP Tipps 2004 3 02.06.2004 20:29

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
c array überschreiben, php array überschreiben, php foreach überschreiben, http://www.php.de/php-tipps-2005-2/29143-wird-der-array-ueberschrieben-foreach-problem.html, array überschreiben php, array nicht überschreiben php, php array wird überschrieben, php schleife immer gleichen datensatz, schleife für objektanlegung, c array übergeben, wird ein array überschrieben, array überschreiben mit foreach, array wert überschreiben php, array werte in foreach überschreiben php, foreach schleife überschreibt array nicht, werte im array überschreiben in c, php array wird in schleife überschrieben, variable in array wird immer überschrieben hilfe, werte in php array nicht überschreiben, php alle werte in einem array überschreiben

Alle Zeitangaben in WEZ +2. Es ist jetzt 06:22 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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.