Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 19 su 19

Discussione: query

  1. #11
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    2,929
    ho fatto cosi
    codice:
    <?php 
    function calcolaprezzo($x, $y, $pezzi, $colori, $quadr, $perc) {
    	$area = $x * $y; // calcolo l'area della superficie
    	$area = (int) $area;
    	$r = mysql_query("SELECT MIN((cmq - $area)) FROM serigrafia WHERE (cmq - $area) >= 0"); 
    	$mindiff = mysql_result($r, 0, 0); 
    	$r = mysql_query("SELECT id, cmq, $pezzi FROM serigrafia WHERE (cmq - $area) = $mindiff"); 
    	$row = mysql_fetch_array($r);
    	if ($quadr == "SI"){
    	$totale = "Questo è l'id ".$row[id]." - Questa è la colonna scelta: ".$row[$pezzi]." - AREA DELLA SUPERFICIE: $area CMQ, NUMERO DI PEZZI: $pezzi, N. COLORI: $colori, QUADRICROMIA: $quadr";
    	echo $totale;
    	}else {
    	$totale = "Questo è l'id ".$row[id]." - Questa è la colonna scelta: ".$row[$pezzi]." - AREA DELLA SUPERFICIE: $area CMQ, NUMERO DI PEZZI: $pezzi, N. COLORI: $colori";
    	echo $totale;
    	}
    }
    ?>
    ma mi viene fuori il nome della colonna e non il suo valore... :master:

    codice:
    Questo è l'id 17 - Questa è la colonna scelta: 3000 .....
    mentre doveva uscire
    codice:
    Questo è l'id 17 - Questa è la colonna scelta: 0.58
    perchè sulla riga dell'id 17 nella colonna 3000 c'è 0.58


  2. #12
    Utente di HTML.it L'avatar di fabi080
    Registrato dal
    Mar 2002
    Messaggi
    442
    Hai una colonna che si chiama 3000 :master: :master: ?

    E' normale, il valore viene interpretato come una costante, metti così
    codice:
    SELECT id, cmq, `$pezzi` FROM serigrafia WHERE (cmq - $area) = $mindiff
    e occhio che gli apici non sono normali apici, o fai copia-incolla oppure si fanno con Alt-96.

    P.s. cambia il nome della colonna nella tabella in qualcosa di meno stravagante.

  3. #13
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    2,929
    ne sai una più del diavolo
    se non ti hodato troppo fastidio e posso usufruire della tua pazienza avrei ancora un quesito per chiudere la mia funzione...

    allora se $colori è un numero maggiore di 2 ad esempio 3 o 4 o 5, devo moltiplicare $row[$pezzi] del 20%

    ad esempio se $colori è uguale a 3 dovrei fare
    1.80 x 20%

    ma se è uguale a 4 dovrei fare
    1.80 x 20% quello che ridà per ulteriori 20% e via via cosi...

    come posso inserire una condizione del genere :master:

    scusami ma sono alla prime armi e mi sono posta una quesito forse troppo difficile...


    Grazie ancora


  4. #14
    Utente di HTML.it L'avatar di fabi080
    Registrato dal
    Mar 2002
    Messaggi
    442
    Non ho ben capito, potresti rispiegarlo meglio?

    Che intendi di preciso con "moltiplicare del 20%", e qual è la condizione, solo se $colore > 2

    Questo non l'ho proprio capito:
    ma se è uguale a 4 dovrei fare
    1.80 x 20% quello che ridà per ulteriori 20% e via via cosi...

  5. #15
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    2,929
    allora se colore è > di 2 quindi per esempio è 3

    devo moltiplicare € 1.80 * 20% = 2.16

    se invece colore è sempre > 2 ma per esempio e 4

    devo moltiplicare € 1.80 * 20% = 2.16

    poi 2.16 * 20% = 2.59

    se invece colore è sempre > 2 ma per esempio e 5

    devo moltiplicare € 1.80 * 20% = 2.16

    poi 2.16 * 20% = 2.59

    poi 2.59 * 20% = 3.10

    e cosi via se è 10 ripeterò l'operazione 10 volte...

    Grazie

  6. #16
    Utente di HTML.it L'avatar di fabi080
    Registrato dal
    Mar 2002
    Messaggi
    442
    Codice PHP:
    $prezzo 1.80;
    for (
    $i $i $colore$i++) {
      
    $prezzo *= 1.2;  
    }

    echo 
    $prezzo
    P.S. 20% non è un numero, non ha molto senso dire 8 * 20%, e cmq quello che intendi tu è aggiungere il 20% al numero.



    Notte

  7. #17
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    2,929
    Notte e grazie veramente!!


  8. #18
    Utente di HTML.it L'avatar di chris
    Registrato dal
    Sep 1999
    Messaggi
    1,568
    se il tuo database supporta le query nidificate (MySQL > 4.1 oppure PostgreSQL), altrimenti con un pò di php fai
    Codice PHP:
    $r mysql_query("SELECT MIN(ABS(valore - $input)) FROM tabella");
    $mindiff mysql_result($r00);
    $r mysql_query("SELECT id, valore FROM tabella WHERE (ABS(valore - $input)) = $mindiff");
    $row mysql_fetch_array($r); 
    Mica è necessario avere il supporto per le query annidate per poterne fare una sola in questo caso.

    $r = mysql_query("SELECT id, valore, ABS(valore - $input) AS diff FROM tabella ORDER BY diff ASC LIMIT 1");
    "Nei prossimi tre anni col mio governo vogliamo vincere anche il cancro, che colpisce ogni anno 250.000 italiani e riguarda quasi due milioni di nostri concittadini"

  9. #19
    Utente di HTML.it L'avatar di fabi080
    Registrato dal
    Mar 2002
    Messaggi
    442
    La query che dici tu non è propriamente corretta, in quanto come ho detto prima, potrebbero esserci più record alla stessa "distanza" da valore in input, e dal momento che non sai a priori quanti sono questi record la clausola limit non ti è d'aiuto.

    Ad esempio se hai come input 60 e hai due record con valore 50 e uno con valore 70, la query dovrebbe restituire tutti e tre i record come risultati mentre la tua ne da solamente uno.

    Il discorso cambia se ti interessa avere solo un record che soddisfa quella condizione, allora andrebbe anche bene la tua query, ma andrebbe leggermente modificata in quanto così come è scritta non garantisce nessuna coerenza nei risultati, potrebbe restituire una volta il record con valore 50 e una volta quello con valore 70, per non avere questo comportamento abbastanza fastidioso dovresti imporre un secondo criterio di ordinamento in modo da garantire la coerenza dei risultati, ad esempio
    codice:
    $r = mysql_query("SELECT id, valore, ABS(valore - $input) AS diff FROM tabella ORDER BY diff, id ASC LIMIT 1");

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.