[PHP] Numero ordine

ANDREA20

Utente Attivo
25 Giu 2016
145
1
18
27
Buongiorno.
Io ho un problema nel calcolo del ordine
Codice:
$idordine= 0;
mi arriva l'email sempre con ordine 0 come faccio ad impostare che ogni ordine parte da 0 ad aumentare senza fermasi?
 
Scusa ma un po' di codice? :D

Si scusami ora lo metto :)
Codice:
<?php
@require('carrello.php');
echo $importo;
$testo="$user_name";
$testo="il sig. $user_name ha ordinato:<br>";
foreach($rigo_ordine as $cosa){
    $testo.=$cosa."<br>";
}

$testo.=$importo."<br>cordiali saluti";//testo pronto per l'invio
echo $testo;
//e qui fai l'invio....

$idordine= 0;

$email="**********@civiaggio.it";
$contenitore= $email;
$titolo="Riepilogo Ordine n. " .$idordine .  " del " .date("d.m.y") ." " .date("H:i:s") ;
$content=$testo;
// costruiamo alcune intestazioni generali
$header = "From: civiaggio.it <".$email.">\n";
//$header .= "CC: Altro Ricevente <**********@civiaggio.it>\n";
$header .= "X-Mailer: Invio email ordine\n";
// costruiamo le intestazioni specifiche per il formato HTML
$header .= "MIME-Version: 1.0\n";
$header .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
$header .= "Content-Transfer-Encoding: 7bit\n\n";
if (mail($contenitore, $titolo, $content, $header, '-f'.$email))
{
       // echo "email inviata a " . $email. "<br>";
}
 ?><!-- prima cella della prima riga (seguono le altre) -->


Codice:
$rigo_ordine[]="quantita $quantita $nome.''.$marca importo parziale ". number_format($quantita*$prezzo, 2, ',',',');
      $importo_totale += $prezzo * $quantita;
    }

    ?>
<?php //qui conviene verificare che $tot_importo > 0, perchè se 0 non ha ordinato nulla
//qui prepari il testo da inviare per email
if($importo_totale<36){
    $importo= "<br> ".number_format($importo_totale, 2, ',',',')." &#8364<br>";
}else{
    $sconto=0.2;
    $importo="importo: $importo_totale &#8364;<br>";
    $importo.="sconto: ".(int)($sconto*100)." %<br>";
    $importo_totale=$importo_totale*(1-$sconto);
    $importo.="importo totale: ".number_format($importo_totale, 2, ',',',')."<br>";
}
echo $importo;
$testo="";
$testo="il sig. $user_name ha ordinato:<br>";
foreach($rigo_ordine as $cosa){
    $testo.=$cosa."<br>";
}
 
Be, nel codice che hai postato ora $idordine è citato due volte, la prima viene impostato a 0 ( zero ) e la seconda scrive nel titolo il numero, che non può che essere zero, visto che nel codice non viene mai incrementato.
In pratica tu dici prima che idordine deve essere zero e poi lo scrivi nell'email. Che altro potrebbe fare? :)
 
Be, nel codice che hai postato ora $idordine è citato due volte, la prima viene impostato a 0 ( zero ) e la seconda scrive nel titolo il numero, che non può che essere zero, visto che nel codice non viene mai incrementato.
In pratica tu dici prima che idordine deve essere zero e poi lo scrivi nell'email. Che altro potrebbe fare? :)

praticamente
Codice:
$idordine= 0;
deve calcolare il numero di ordine partendo da 0 ad salire non se hai capito
 
Non è che non ho capito, ma se tu imposti il valore a zero, questo non parte.
Dovresti prima capire da dove prendere il dato da incrementare: da carrello.php?
$rigo_ordine è un array che contiene tutto il carrello? Allora ti basta un $idordine = count($rigo_ordine); per sapere quanti ordini ha fatto il tipo.
Dal codice non posso dirti di più :(
 
ti allego la foto cosi magari ci capiamo
nella foto vedi che il valore ordine e 0 per il prossimo ordine deve 1 andando via cosi
 

Allegati

  • WhatsApp Image 2016-11-30 at 19.16.45.jpeg
    WhatsApp Image 2016-11-30 at 19.16.45.jpeg
    398,7 KB · Visite: 296
ciao
forse ti conviene farti una semplice tabella ordini con un rigo solo in cui memorizzi l'ultimo numero d'ordine

tabella ordini
num_ordine int(9) default 0

prima di spedire l'email leggi la tabella
PHP:
<?php
//....
$q=mysqli_query($connessione, "SELECT num_ord FROM ordini");
$ordine=mysqli_fetch_assoc($Q);
$idordine=$ordine['num_ord']+1;
//fai l'invio dell'email
//e quando inviata uppi il numero incrementandolo
$idordine+=1;
$q=mysqli_query($connessione,"UPDATE ordini SET num_ord=$idordine");
//.....
?>

poi vedo che usi per inviare la funzione mail() certi host di posta non la ricevono, cerca di evitarla e usa come suggerito phpmailler, non al 100%, ma è più sicura
 
ciao
forse ti conviene farti una semplice tabella ordini con un rigo solo in cui memorizzi l'ultimo numero d'ordine

tabella ordini
num_ordine int(9) default 0

prima di spedire l'email leggi la tabella
PHP:
<?php
//....
$q=mysqli_query($connessione, "SELECT num_ord FROM ordini");
$ordine=mysqli_fetch_assoc($Q);
$idordine=$ordine['num_ord']+1;
//fai l'invio dell'email
//e quando inviata uppi il numero incrementandolo
$idordine+=1;
$q=mysqli_query($connessione,"UPDATE ordini SET num_ord=$idordine");
//.....
?>

poi vedo che usi per inviare la funzione mail() certi host di posta non la ricevono, cerca di evitarla e usa come suggerito phpmailler, non al 100%, ma è più sicura


non funziona il backup ho fatto la prova ma non va
 
Non so se ho capito bene ma secondo me il contatore per gli ordini non ti serve. Se tu utilizzi un contatore per assegnare un progressivo al record estratto dal DB è assolutamente sbagliato perchè ogni qualvolta esegui quella routine il contatore degli ordini viene inizializzato a 0.Quindi se due utenti - che hanno effettuato uno un ordine e l'altro due - eseguono lo stesso codice al cliente che ha effettuato un solo ordine arriverà la mail con scritto: Ordine n:1. E verosimilmente al cliente che ha effettuato due ordini arriveranno due email con scritto: Ordine n:1 & Ordine n: 2.

Questo è sbagliato perchè (presupponendo che tu abbia salvato gli ordini dentro un db) il database (se specificato) crea un progressivo univoco per ogni record inserito in una ipotetica tabella. Quindi questo lavoro che stai facendo è inutile e non logico in quanto basta recupero l'identificativo univoco per quel record e così avrai il numero di ordine progressivo.

PS: Se vuoi recuperare il totale degli ordini la strada da seguire è un altra.
 
Buongiorno.
Esatto ogni ordine deve aver un numero quindi partendo da 0 andare via così non riesco ad impostarlo il cliente mi a richiesto così
 
Allora ho capito bene. Prova a dare un occhiata alla guida su mysql.
Ti posto un semplice esempio perchè scriverti tutto il codice non sarebbe cosa buona e giusta.

PHP:
CREATE TABLE amici (
  id INT(20) AUTO_INCREMENT,
  nome VARCHAR(20),
  cognome VARCHAR(20),
  telefono INT(10),
  PRIMARY KEY(id)
);

In questo esempio di creazione tabella puoi vedere come il campo id sia impostato su INT(20) AUTO_INCREMENT.
E' proprio quell'auto increment che ti permette di assegnare ad ogni record caricato sulla tabella, in questo esempio 'amici', un numero intero che si auto incrementa ogni volta che inserisci un record.

Questo è proprio quello che serve a te.
Spero di esserti stato di aiuto.


ciao
forse ti conviene farti una semplice tabella ordini con un rigo solo in cui memorizzi l'ultimo numero d'ordine

tabella ordini
num_ordine int(9) default 0

prima di spedire l'email leggi la tabella
PHP:
<?php
//....
$q=mysqli_query($connessione, "SELECT num_ord FROM ordini");
$ordine=mysqli_fetch_assoc($Q);
$idordine=$ordine['num_ord']+1;
//fai l'invio dell'email
//e quando inviata uppi il numero incrementandolo
$idordine+=1;
$q=mysqli_query($connessione,"UPDATE ordini SET num_ord=$idordine");
//.....
?>

poi vedo che usi per inviare la funzione mail() certi host di posta non la ricevono, cerca di evitarla e usa come suggerito phpmailler, non al 100%, ma è più sicura

Questo non fa al caso tuo.
 
Allora ho capito bene. Prova a dare un occhiata alla guida su mysql.
Ti posto un semplice esempio perchè scriverti tutto il codice non sarebbe cosa buona e giusta.

PHP:
CREATE TABLE amici (
  id INT(20) AUTO_INCREMENT,
  nome VARCHAR(20),
  cognome VARCHAR(20),
  telefono INT(10),
  PRIMARY KEY(id)
);

In questo esempio di creazione tabella puoi vedere come il campo id sia impostato su INT(20) AUTO_INCREMENT.
E' proprio quell'auto increment che ti permette di assegnare ad ogni record caricato sulla tabella, in questo esempio 'amici', un numero intero che si auto incrementa ogni volta che inserisci un record.

Questo è proprio quello che serve a te.
Spero di esserti stato di aiuto.




Questo non fa al caso tuo.
Grazie mille più tardi provo e ti faccio sapere
 
Allora ho capito bene. Prova a dare un occhiata alla guida su mysql.
Ti posto un semplice esempio perchè scriverti tutto il codice non sarebbe cosa buona e giusta.

PHP:
CREATE TABLE amici (
  id INT(20) AUTO_INCREMENT,
  nome VARCHAR(20),
  cognome VARCHAR(20),
  telefono INT(10),
  PRIMARY KEY(id)
);

In questo esempio di creazione tabella puoi vedere come il campo id sia impostato su INT(20) AUTO_INCREMENT.
E' proprio quell'auto increment che ti permette di assegnare ad ogni record caricato sulla tabella, in questo esempio 'amici', un numero intero che si auto incrementa ogni volta che inserisci un record.

Questo è proprio quello che serve a te.
Spero di esserti stato di aiuto.




Questo non fa al caso tuo.

buona sera.

rispondo solo ora non ho avuto tempo di verificare ho provato ma non funziona id numero
sono tutti giusti i passaggi
 

Discussioni simili