Abfrageinhalt dieser Funktion als Variable

mrepox

Erfahrenes Mitglied
Hallo, stehe mal wieder auf dem Schlauch...

Der Inhalt dieser Funktion soll als Variable in einem anderem Script als Email verschickt werden.

Ausgelesen werden mehrere Artikel.

Wie kann man das lösen?

Gruss Markus

PHP:
function get_kunden_details($orderid)
{
    // Datenbank abfragen für alle Artikel mit deselben orderid
    if (!$orderid || $orderid == '')
        return FALSE;

    $conn = db_connect();
    $query = "select * from order_items where orderid='$orderid'";
    $result = $conn->query($query);
    $num_results = $result->num_rows;

echo '<p>Anzahl gefundener Artikel: ' . $num_results . '</p>';

for ($i = 0; $i < $num_results; $i++) {
    $row = $result->fetch_assoc();
    echo '<p><strong>' . ($i + 1) . '. Nummer: ';
    echo htmlspecialchars(stripslashes($row['ain']));
 }

        if (!$result)
        return FALSE;
    $result = @$result->fetch_assoc();
    return $result;
}
 
Dazu musst du alles was ausgegeben wird in eine Variable schreiben und diese zurückgeben. Das result zurückzugeben bringt nichts, denn dies ergibt immer false, da in der Schleife bereits alle Zeilen durchgegangen wurden. Deine (umgeschriebene) Funktion sieht dann z.B. so aus:
PHP:
function get_kunden_details($orderid)
{
    // Datenbank abfragen für alle Artikel mit deselben orderid
    if (!$orderid || $orderid == '')
        return FALSE;

    $conn = db_connect();
    $query = "select * from order_items where orderid='$orderid'";
    $result = $conn->query($query);
    $num_results = $result->num_rows;

$retVal = '<p>Anzahl gefundener Artikel: ' . $num_results . '</p>';

for ($i = 0; $i < $num_results; $i++) {
    $row = $result->fetch_assoc();
    $retVal .= '<p><strong>' . ($i + 1) . '. Nummer: ';
    $retVal .= htmlspecialchars(stripslashes($row['ain']));
}
return $retVal;
}

Um das Ganze in einer Email zu verschicken, musst du den Rückgabewert in eine Variable speichern und in den Mailtext einfügen, z.B.
PHP:
$msg = "Daten:\n".get_kunden_details();
mail($to, $subj, $msg, $header);
 
Ja danke, sehr nett von dir.

Die Mailfunktion steht schon, ich werde nachher deine Änderung testen und darüber informieren.

Gruss Markus
 
Hat alles soweit geklappt, nur muss ich noch eine Variable haben und zwar die Anzahl der Artikel "quantity".

Versucht hab ichs in der gleichen Funktion mit zu übergeben, klappt nur leider nicht.

Mit einer zweiten Funktion gehts logischerweise, nur werden dann alle quantitys und alle Artikel zusammen angezeigt. Z.B.

3,4 Schrauben, Muttern

und so muss es sein:

3 Schrauben, 4 Muttern

Kann mir da jemand helfen?
 
mrepox hat gesagt.:
Hat alles soweit geklappt, nur muss ich noch eine Variable haben und zwar die Anzahl der Artikel "quantity".

Versucht hab ichs in der gleichen Funktion mit zu übergeben, klappt nur leider nicht.

Mit einer zweiten Funktion gehts logischerweise, nur werden dann alle quantitys und alle Artikel zusammen angezeigt. Z.B.

3,4 Schrauben, Muttern

und so muss es sein:

3 Schrauben, 4 Muttern

Kann mir da jemand helfen?
Wie genau erhaeltst Du diese Werte?
Sind das 2 Strings?
Einmal "3,4" und einmal "Schrauben,Muttern"?
Wenn das so ist kannst Du einfach sowas in der Art machen:
PHP:
$quantities="3,4";
$articles="Schrauben,Muttern";
$quantity_array=explode(",",$quantities);
$article_array=explode(",",$articles);
$output_array=array();
for ($counter=0;$counter<count($quantity_array);$counter++)
 {
  $output_array[]=$quantity_array[$counter]." ".$article_array[$counter];
 }
$output=implode(",",$output_array);
In $output sollte jetzt drinstehen: 3 Schrauben,4 Muttern
 
Hmm.. Ich erkläre es nochmal genauer.

Diese Funktion liest aus der Tablelle alle die Zeilen aus, die die gleiche orderid haben.
aus diesen zeilen nehme ich den Artikel und die bestellte Anzahl des Artikels.
Diese Angabe übermittel ich als Var. in ein Emailformular.

User Split hatte mir schon mit den Variablen Anhängen geholfen, weil ich ja eventuell mehrere Artikel in einer Variable bekommen muss.

Ich habe es nun so erweitert das auch noch die Anzahl übermittelt wird.

PHP:
function get_kunden_details($orderid)
{
    // Datenbank abfragen für alle Artikel mit deselben orderid
    if (!$orderid || $orderid == '')
        return FALSE;

    $conn = db_connect();
    $query = "select * from order_items where orderid='$orderid'";
    $result = $conn->query($query);
    $num_results = $result->num_rows;

$retVal = '<p>Anzahl gefundener Artikel: ' . $num_results . '</p>';

for ($i = 0; $i < $num_results; $i++) {
    $row = $result->fetch_assoc();
    $retVal .= '<p><strong>' . ($i + 1) . '. Nummer: ';
    $retVal .= htmlspecialchars(stripslashes($row['quantity']));
    $retval .='Artikel:';
    $retVal .= htmlspecialchars(stripslashes($row['ain']));
}
return $retVal;
}

die Ausgabe sieht so aus:( email)

11380114739


die erste 1 ist die Anzahl(quantity) des Artikels, die anderen sind die Artikelnummer(ain)
Es sollte doch besser so aussehen:

Anzahl:1 Artikel:1380114739

Die Übergabe in die Email sieht so aus:

$msg = get_kunden_details($orderid);
$empfaenger = "$mailemail";
$betreff = "Ihre Bestellung beim Mineralienversand.net";
$text = "Bestätigung Ihrer Bestellung vom $date
Name : $mailname
Adresse : $mailaddress, $mailzip, $mailcity
Email : $mailemail
Bankverbindung: Konto: $mailknr, BLZ: $mailblz, Bank: $mailbname
Bestellung : $msg
Rechnungssumme: $summe
Bezahlung : $pay_choice";
mail($empfaenger, $betreff, $text,"From: $sender <$sendermail>");

:)
 
Versuchs mal so:
PHP:
function get_kunden_details($orderid)
{
    // Datenbank abfragen für alle Artikel mit deselben orderid
    if (!$orderid || $orderid == '')
        return FALSE;

    $conn = db_connect();
    $query = "select * from order_items where orderid='$orderid'";
    $result = $conn->query($query);
    $num_results = $result->num_rows;

    $retVal = '<p>Anzahl gefundener Artikel: ' . $num_results . '</p>';

    for ($i = 0; $i < $num_results; $i++) {
        $row = $result->fetch_assoc();
        $retVal .= '<p><strong>Anzahl: ';
        $retVal .= htmlspecialchars(stripslashes($row['quantity']));
        $retVal .= ' Artikel: ';
        $retVal .= htmlspecialchars(stripslashes($row['ain']));
        $retVal .= '</strong></p>';
    }
    return $retVal;
}
 
Ich hatte es heute Mittag so versucht zu lösen:

PHP:
function get_kunden_details($orderid)
{
    // Datenbank abfragen für alle Artikel mit deselben orderid
    if (!$orderid || $orderid == '')
        return FALSE;

    $conn = db_connect();
    $query = "select * from order_items where orderid='$orderid'";
    $result = $conn->query($query);
    $num_results = $result->num_rows;

$retVal = 'Bestellte Artikel: ' . $num_results . '&nbsp;';


for ($i = 0; $i < $num_results; $i++) {
    $row = $result->fetch_assoc();

    $retVal .= ' Anzahl '.htmlspecialchars(stripslashes($row['quantity'])).' Artikel ';
    $retVal .= htmlspecialchars(stripslashes($row['ain']));
}
return $retVal;
}

Geht das so so oder besser deine Variante?

PS: Es ist eine textmail keine htmlmail
 
Zuletzt bearbeitet:
Zurück