PHP mehrere Werte gleichzeitig schreiben....

Bash, Shell, PHP, Python, Perl, CGI
bfal
Posts: 68
Joined: 2002-07-07 15:12
Location: Lüneburg

PHP mehrere Werte gleichzeitig schreiben....

Post by bfal »

Hei,

Ich habe mit folgenden Code mehrere Werte ausgelesen:
<?
db_connect($db_host, $db_user, $db_pass);
$id = db_query("select account from pop3 where kunde = '$PHP_AUTH_USER' order by number");
while ($werte = db_fetch_array($id)) {
$account = $werte["account"];
}
?>

Jetzt möchte ich folgenden Code so ändern, das er immer wieder in die Datenbank schreibt, wobei der Wert $username immer mit dem nächsten Wert aus $account geschrieben wird.

$cmd = "insert into userpref " . "(preference, value, username) values ( ".
"'$preference', '$address', '$username')";
$result= mysql_query($cmd);

(Also 1. Wert $username=1
2. Wert $username gleich=2 usw. wobei die Anzahl der Werte nicht fest ist)

Wie kann ich das bewerkstelligen.

Danke im vorraus.

mfg
Björn
bigmac
Posts: 103
Joined: 2002-04-24 11:36
Location: 35440, Linden

Re: PHP mehrere Werte gleichzeitig schreiben....

Post by bigmac »

Okay,.. ich habs jetzt dreimal durchgelesen,.. und sogar länger drüber überlegt .. ;) aber erklärs mir bitte nochmal :)
bfal
Posts: 68
Joined: 2002-07-07 15:12
Location: Lüneburg

Re: PHP mehrere Werte gleichzeitig schreiben....

Post by bfal »

Hei,

ähm, okay jetzt wo ich mir das selbst durchlese.....ich versuche es mal in einfachen Worten.

Ich baue gerade für Confixx eine Erweiterung um Spamassassin zu steuern. Als Basis habe ich das PHP-SA Skript von spamassassin.org benutzt.
Jetzt kann ich ja mit folgendem Code die Pop3 Postfächer des eingeloggten Users auslesen.
<?
db_connect($db_host, $db_user, $db_pass);
$id = db_query("select account from pop3 where kunde = '$PHP_AUTH_USER' order by number");
while ($werte = db_fetch_array($id)) {
$account = $werte["account"];
}
?>


Wenn der User jetzt einen Wert im WebInterface ändert, möchte ich mit

$cmd = "insert into userpref " . "(preference, value, username) values ( ".
"'$preference', '$address', '$username')";
$result= mysql_query($cmd);


den Wert mit dem dazugehörigen Pop3 Postfach in die Datenbank schreiben. Wenn ein User jedoch mehrere Postfächer hat (web1p1, web1p2 usw.) soll er den Insert Befehl mehrmals absenden, wobei die Variable $username jeweils mit dem nächsten POP3 Postfach gefüllt wird, sodass die Einstellungen immer für alle POP3 Postfächer des jeweiligen Confixx Benutzer gelten.
Wie läßt sich das am besten machen?


So, ich hoffe ich konnte mich jetzt verständlich ausdrücken ;-)

mfg

Björn
deanwickert
Posts: 77
Joined: 2003-05-13 23:20
Location: Lahnstein

Re: PHP mehrere Werte gleichzeitig schreiben....

Post by deanwickert »

also ich weiß nicht. irgendwie kommt mir das ganze spanisch vor. :wink:

Wenn ich das ganze richtig verstehe stehen die postfachnamen in einem array. also kannst du da ganz doch in eine schleife einbetten.

entweder mit ner for-Schleife

Code: Select all

for ($n=0; $n<count($array); $n++) {

}
oder mit ner while-schleife

Code: Select all

while ($variable = $array[$n]) {


  $n++;
}
Ich hoffe, dass es hilft. war irgendwie zu einfach.
kahler
Posts: 130
Joined: 2003-04-18 17:42
Location: /root

Re: PHP mehrere Werte gleichzeitig schreiben....

Post by kahler »

bfal wrote:

Code: Select all

$account = $werte["account"];
Was für einen Wert nimmt denn $account an? Ich gehe Mal davon aus, dass das der Name des Postfaches ist, also web1p1, web1p2 und du aber nur die letzte Zahl haben möchtest (oder sehe ich das jetzt auch falsch)??
bfal
Posts: 68
Joined: 2002-07-07 15:12
Location: Lüneburg

Re: PHP mehrere Werte gleichzeitig schreiben....

Post by bfal »

Also ich möchte nur die Potfächer eines User auslesen (User: web1), und diese beim schreiben von Daten in die Mysql Datenbank berücksichtigen, sodas pro Postfach ein "INSERT" erzeugt wird.

Inzwischen habe ich mein Problem erkannt. Array heißt das Stichwort (Thx, @deanwickert).
Also kann ich die Werte aus "select account from pop3 where kunde = '$PHP_AUTH_USER' order by number" in ein Array schreiben?

Ich denke das würde mir schon helfen.

Danke im vorraus..

Björn
kahler
Posts: 130
Joined: 2003-04-18 17:42
Location: /root

Re: PHP mehrere Werte gleichzeitig schreiben....

Post by kahler »

bfal wrote:Also kann ich die Werte aus "select account from pop3 where kunde = '$PHP_AUTH_USER' order by number" in ein Array schreiben?
Klar, wieso nicht...

...versuchs mal hiermit:

Code: Select all

<?php
 $account = array();
 db_connect($db_host, $db_user, $db_pass); 
 $id = db_query("select account from pop3 where kunde = ".$PHP_AUTH_USER." order by number"); 
 while ($werte = db_fetch_array($id))
 { 
  $account[count ($account)] = $werte["account"]; 
 } 
?> 
Aber wieso willst du die Werte erst in ein Array schreiben, um sie gleich in der nächsten Schleife wieder einzeln aus dem Array auszulesen. Versuch doch Mal, das ganze in eins zu packen. So nach der Art:

Code: Select all

<?php
 $account = array();
 db_connect($db_host, $db_user, $db_pass); 
 $id = db_query("select account from pop3 where kunde = ".$PHP_AUTH_USER." order by number"); 
 while ($werte = db_fetch_array($id))
 { 
  $cmd = "insert into userpref (preference, value, username) values (".$preference.", ".$address.", ".$werte["account"].")"; 
  $result= mysql_query($cmd); 
 } 
?> 
Damit hättest du dir eine Schleife und ein Array gespart...

...Das mag zwar jetzt nicht besonders viel sein, aber wenn du 1000 solche Scripte auf deinem Server hast, dann kann es schon einen Unterschied machen.
bfal
Posts: 68
Joined: 2002-07-07 15:12
Location: Lüneburg

Re: PHP mehrere Werte gleichzeitig schreiben....

Post by bfal »

@kahler:

Warum einfach wenn es auch umständlich geht ;-)
Danke für den Tipp, werde ich mal probieren.

mfg

Björn
bfal
Posts: 68
Joined: 2002-07-07 15:12
Location: Lüneburg

Re: PHP mehrere Werte gleichzeitig schreiben....

Post by bfal »

Hei,

ich habe da noch ein Problem, wo ich einfach nicht auf die Lösung komme:
Folgender Code:
$account = array();
db_connect($db_host, $db_user, $db_pass);
$id = db_query("select account from pop3 where kunde = '$PHP_AUTH_USER' order by number");

while ($pop3konten = db_fetch_array($id))
{
// update users's rewrite_subject
if(!$rewrite_subject) { $rewrite_subject = 0; }
$cmd = "delete from userpref where username = '$pop3konten[account]' " .
"AND preference = 'rewrite_subject'";
$result = mysql_query($cmd);
$cmd = "insert into userpref (username, preference, value) " .
"VALUES ('$pop3konten[account]', 'rewrite_subject', '$rewrite_subject')";
$result = mysql_query($cmd);

// update users's report_header
if(!$report_header) { $report_header = 0; }
$cmd = "delete from userpref where username = '$pop3konten[account]' " .
"AND preference = 'report_header'";
$result = mysql_query($cmd);
$cmd = "insert into userpref (username, preference, value) " .
"VALUES ('$pop3konten[account]', 'report_header', '$report_header')";
$result = mysql_query($cmd);

// update users's defang_mime
if(!$defang_mime) { $defang_mime = 0; }
$cmd = "delete from userpref where username = '$pop3konten[account]' " .
"AND preference = 'defang_mime'";
$result = mysql_query($cmd);
$cmd = "insert into userpref (username, preference, value) " .
"VALUES ('$pop3konten[account]', 'defang_mime', '$defang_mime')";
$result = mysql_query($cmd);

// update user's use_terse_report
if(!$use_terse_report) { $use_terse_report = 0; }
$cmd = "delete from userpref where username = '$pop3konten[account]' " .
"AND preference = 'use_terse_report'";
$result = mysql_query($cmd);
$cmd = "insert into userpref (username, preference, value) " .
"VALUES ('$pop3konten[account]', 'use_terse_report', '$use_terse_report')";
$result = mysql_query($cmd);

// update users's required_hits
if(!$required_hits) { $required_hits = 5; }
$cmd = "delete from userpref where username = '$pop3konten[account]' " .
"AND preference = 'required_hits'";
$result = mysql_query($cmd);
$cmd = "insert into userpref (username, preference, value) " .
"VALUES ('$pop3konten[account]', 'required_hits', '$required_hits')";
$result = mysql_query($cmd);
}


Das Problem ist, das er für $pop3konten[account] immer ARRAY einträgt, anstatt die Werte web1p1, web1p2 usw.

Wo ist da mein Fehler?

Danke im vorraus...

mfg

Björn
outofbound
Posts: 470
Joined: 2002-05-14 13:02
Location: Karlsruhe City

Re: PHP mehrere Werte gleichzeitig schreiben....

Post by outofbound »

Hi,

vorab: Ich will dich nicht beleidigen, aber bitte schreib deinen
Code etwas übersichtlicher (Einrücken z.B)... ist ja ein Krampf,
das so zu debuggen ;)

$pop3konten ist ein array (Nicht Assoziativ, sonst wäre es
db_fetch_assoc in der Schleife)...

Somit ist $pop3konten[account] = $pop3account[0], es sei
denn du hast "account" als Constante definiert... ;)

Ich gehe einfach mal davon aus, dass es funzt, wenn du

a) while ($pop3konten = db_fetch_assoc($id))

und dann noch $pop3konten["account"] verwendest ;)

Gruss,

Out
bfal
Posts: 68
Joined: 2002-07-07 15:12
Location: Lüneburg

Re: PHP mehrere Werte gleichzeitig schreiben....

Post by bfal »

Hei OutOfBound,

Im Quellcode ist es etwas übersichtlicher ;-)

ich habe den Code mal nach deinen Angaben geändert Jetzt kommt aber folgende Fehlermeldung Call to undefined function: db_fetch_assoc() in /xxxx/xxx/xxx/spamassassin.php

Was soll mir das sagen? Muß ich die Funktion noch irgendwo definieren?

mfg

Björn
outofbound
Posts: 470
Joined: 2002-05-14 13:02
Location: Karlsruhe City

Re: PHP mehrere Werte gleichzeitig schreiben....

Post by outofbound »

Oh, verzeih mir...


bei dir heisst die Funktion wohl mysql_fetch_assoc() ;(
Das ist eine Std- Funktion von PHP... geg. falls einfach
schnell auf php.net nachschauen ;)

DB- Abstraktionen sind was tolles, aber man gewöhnt sich
so schnell dran... ;)

Gruss,

Out
bfal
Posts: 68
Joined: 2002-07-07 15:12
Location: Lüneburg

Re: PHP mehrere Werte gleichzeitig schreiben....

Post by bfal »

Supi,

es funzt :-D
Jetzt macht er das was ich will. Vielen Dank.

Gruß

Björn
webalizer
Posts: 10
Joined: 2003-01-21 13:44
Location: Fürstenfeldbruck

Re: PHP mehrere Werte gleichzeitig schreiben....

Post by webalizer »

Ich hätte interesse an dieser erweiterung für Confixx. Gibst Du das raus wenn es fertig ist? Bitte bitte :)
bfal
Posts: 68
Joined: 2002-07-07 15:12
Location: Lüneburg

Re: PHP mehrere Werte gleichzeitig schreiben....

Post by bfal »

Noch funktioniert nicht alles.
Aber sobald die erste Version fertig ist, veröffentliche ich es hier. :wink:

Gruß

Björn