phpbar.de logo

Mailinglisten-Archive

[php] arrayprobleme ....

[php] arrayprobleme ....

Cyrill Schumacher webmasterbhs_(at)_bluewin.de
Thu, 9 Sep 1999 21:43:19 +0200


Moin Moin,
leider ein etwas verzwicktes Problem.
das ganze da unten stellt eine kleine geräte verwaltung dar.
"prefix" beudetet die erste zwei buchstaben vom hersteller
und "geraet" ist dessen produkt....
das ganze script wird ganz unten aufgerufen beim
letzten else (default steht darüber). dort wird angezeigt welche
geräte in der db sind und es gibt für jedes gerät eine
checkbox(=als array), die man auswählen kann und dann entweder sagt
"gerät ändern" oder "gerät löschen" , dabei weiss ich nicht
wieviele geräte zum löschen oder ändern aus gewählt werden.
löschen funktioniert, ändern nicht.
problem: wählt jemand alle oder nur die obersten(!!!) geräte aus, werden
sie alle in einer input type ="text" (jeder für sich) zum editieren angezeigt
ist man fertig und klickt auf "speichern" dann werden sie korrekt
gespeichert !!!!
ABER wählt jemand nur die letzten zwei aus !!! dann werden diese
gerät zwar auch wieder zum editieren angezeigt, ABER sie werden
nicht abgespeichert. es erscheint einfach ein leeres "xxx wurde gespeichert"
folglich liegt das problem darin, das das gebildete geräte
array nicht korrekt ausgelesen oder gezählt wird ...
heute saß ich da ca 4 stunden dran und nichts ...
es hat nicht funktioniert, dass man die untersten geräte auch wirklich
ändern kann ...

hier ein verkürzter auszug (wer die volle datei haben will, darf sich melden)
von unten nach oben lesen !
<?php
include("functions.inc.php3"); file:// nur mysql connect

$tablebordercolor ="#8a8a8a";
$bgcolorpage = "#a9a954";

$font1 = "<FONT SIZE=\"-1\" FACE=\"Verdana,Tahoma,Arial,Helvetica\">";
$font1a = "<FONT FACE=\"Verdana,Tahoma,Arial,Helvetica\">";
$font2 = "</FONT>";

// array für das prefix
$prearray = Array
("AV-"=>"Avision","MI-"=>"Microtek","OL-"=>"Olympus","LA-"=>"Lasersoft","FU-"=>"
Fuji","AC-"=>"Acer","UM-"=>"Umax","MIN-"=>"Minolta","WA-"=>"Wacom","AG-"=>"Agfa"
,"CA-"=>"Caere","NIK-"=>"Nikkon","SH-"=>"Sharp");
?>
blablabla
      <!-- start body -->
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH=630>
<TR VALIGN=TOP ALIGN=LEFT><TD WIDTH=630 HEIGHT=32><IMG SRC="./clearpixel.gif"
WIDTH=630 HEIGHT=1 BORDER=0></TD>
</TR> <TR VALIGN=TOP ALIGN=LEFT><TD WIDTH=630><!--hier geht es los-->

<?php
/*******************************************************************************
********
  hinzufügen
********************************************************************************
*******/
if(isset($add)) {
nur hier kann komischer weise das prefix array laufen ...
innerhalb einer while schleife wird es nur einmal ausgeführt, nicht aber
mehrmals ....
<?
for (key($prearray);$kei=key($prearray);next($prearray)):
$tmpv = $kei;
$tmps = $prearray[$kei]; ?>
<OPTION VALUE="<? echo $tmpv; ?>"><? echo $tmps; ?></OPTION>";
<? endfor; ?>
</SELECT>

text wird angezeigt, wo man eintragen kann -> daten werde in die mysql
eingetragen
} file://klammer isset (add)

/*******************************************************************************
********
  ändern
********************************************************************************
*******/
elseif(isset($change)) {
if ($change != 2) { ?>
<FORM ACTION="produkte.php3" METHOD=POST>
<INPUT TYPE="hidden" NAME="change" VALUE="2">
<tabelle>
Gerät - Datum der Änderung

<TABLE BORDER=1 CELLSPACING=1 CELLPADDING=1 WIDTH=621 BORDERCOLOR=<? echo
$tablebordercolor; ?>>
<COLGROUP><COL WIDTH=102><COL WIDTH=280><COL WIDTH=213></COLGROUP>
<?php
$x=0;
while($x<count($usergeraet)):

if($use[$x]==used) {
?>
<TR>
<TD WIDTH=102><P>
<SELECT NAME="prefix[<? echo $x; ?>]"><OPTION VALUE=""
SELECTED>Wähle!</OPTION><OPTION VALUE="AV-">Avision</OPTION>
<OPTION VALUE="MI-">Microtek</OPTION><OPTION VALUE="OL-">Olympus</OPTION><OPTION
VALUE="LA-">Lasersoft</OPTION>
<OPTION VALUE="FU-">Fuji</OPTION><OPTION VALUE="AC-">Acer</OPTION><OPTION
VALUE="UM-">Umax</OPTION>
<OPTION VALUE="MIN-">Minolta</OPTION><OPTION VALUE="WA-">Wacom</OPTION><OPTION
VALUE="AG-">Agfa</OPTION>
<OPTION VALUE="CA-">Caere</OPTION><OPTION VALUE="NIK-">Nikkon</OPTION><OPTION
VALUE="SH-">Sharp</OPTION>
</SELECT>[<? echo $x; ?>]
</TD><TD WIDTH=280>

<P><INPUT TYPE=TEXT NAME="changegeraet[<? echo $x; ?>]" VALUE="<? echo
$usergeraet[$x]; ?>" SIZE=38 MAXLENGTH=30>
<INPUT TYPE="hidden" NAME="dbgeraet[<? echo $x; ?>]" VALUE="<? echo
$usergeraet[$x]; ?>">
</TD><TD WIDTH=213><P><? echo "$font1 $datumchg[$x] $font2"; ?></TD></TR>
<?php
} file://if use=1
file://else { echo "<h2>$font1a Nichts ausgesucht !!!$font2</h2>"; break; } //
warum das nicht geht .... ?
$x++;
endwhile;
?>

<INPUT TYPE=SUBMIT NAME="prodchange" VALUE="Änderungen speichern"></FORM>
<?php
} file://change !=2
else

mysqlcon();

$z=0;
while($z < count($changegeraet)):

// if($changegeraet[$z]=="" || $prefix[$z] =="")

// echo "$font1a <h2>Sie müssen ein Gerät eintragen !!! $z</h2>$font2"; break; }
// else {

$indat3 = date("Y-m-d H:i:s");
file://$prod_up = "update produkt set
geraet='$changegeraet[$z]',prefix='$prefix[$z]',datum='$indat3' where geraet
like '$dbgeraet[$z]'";
file://mysql_query($prod_up);
echo "<b>$font1 [$z] - $prefix[$z]$changegeraet[$z] wurde geändert um $indat3
$font2</b> von $dbgeraet[$z]<br>";
file://}
$z++;
endwhile;
} file://else change !=2
} // klammer isset change


/*******************************************************************************
********
  löschen
********************************************************************************
*******/
elseif(isset($delete)) {
?>
blablabla
<?php
}
/*******************************************************************************
********
  default
********************************************************************************
*******/
else {
?>
<FORM ACTION="produkte.php3" METHOD=POST>
<INPUT TYPE=SUBMIT NAME="add" VALUE="Gerät hinzufügen"></TD>
Folgende Geräte befinden sich zur Auswahl in der Datenbank:
Gerät - Datum Eintrag/Änderung

<TABLE BORDER=1 CELLSPACING=1 CELLPADDING=1 WIDTH=616 BORDERCOLOR=<? echo
$tablebordercolor; ?>>
      <COLGROUP>
      <COL WIDTH=39>
      <COL WIDTH=348>
      <COL WIDTH=203>
      </COLGROUP>
<?
mysqlcon();
$prod_select = "select * from produkt order by prefix,geraet asc";
$result = mysql_query($prod_select);
$j=0; // array wird gebildet mit der anzahl der zeilen
$r = mysql_num_rows($result);

while ($row = mysql_fetch_array($result) AND $j <= $r):
$geraet = $row["geraet"];
$prefix = $row["prefix"];
$datum = $row["datum"];
?>
<TR>
<TD WIDTH=39><P><DIV ALIGN="CENTER"><TABLE WIDTH=13 BORDER=0 CELLSPACING=0
CELLPADDING=0><TR><TD>
 <INPUT TYPE="checkbox" NAME="use[<? echo $j; ?>]" VALUE="used">
</TD></TR></TABLE></DIV></TD>
<TD WIDTH=348><P> <? echo "$prefix$geraet"; ?><INPUT TYPE="hidden"
NAME="usergeraet[<? echo $j; ?>]" VALUE="<? echo $geraet; ?>">
</TD><TD WIDTH=203><P><? echo $datum; ?><INPUT TYPE="hidden" NAME="datumchg[<?
echo $j; ?>]" VALUE="<? echo $datum; ?>"></TD></TR>
<?php
$i++;
$j++;
endwhile; ?>

</TABLE>
<INPUT TYPE=SUBMIT NAME="change" VALUE="Gerät ändern">
<INPUT TYPE="Reset" VALUE="Reset Auswahl">
<INPUT TYPE=SUBMIT NAME="delete" VALUE="Gerät löschen"><FORM>

<?php
} file://else klammer
?>
<!-- end body -->
blablabla

=====================
struktur mysqldb:
create table produkt (
 geraet varchar(30) DEFAULT '' NOT NULL,
 prefix varchar(10) DEFAULT '' NOT NULL,
 datum datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
 PRIMARY KEY (geraet)
)
_(at)__(at)__(at)__(at)__(at)__(at)__(at)__(at)__(at)__(at)__(at)__(at)__(at)__(at)__(at)__(at)__(at)__(at)__(at)__(at)__(at)__(at)__(at)__(at)__(at)__(at)__(at)__(at)__(at)__(at)__(at)__(at)_

Bin mal gespannt ob mir da einer helfen kann !!!!!!!!!!!!!!!
Im vorraus ein dickes danke von:

Fatal error: Call to unsupported or undefined function Gehirn() in
C:\Webshare\Wwwroot/kiri.php3 on line 1








php::bar PHP Wiki   -   Listenarchive