Problema recupero Dati da MYSQL

Emix

Utente Attivo
15 Feb 2010
596
0
16
Buonasera a tutti,
ho un problema.. ho un Db contenente delle fatture. Devo ricreare la fattura(ho gia tutto). Ho solo un problema... La struttura del DB è fatta cosi :
Soliti campi delle fatture quindi: Cliente,numero fattura,listino,descrizione.
Fin qui tutto ok, recupero i dati e li leggo tranquillamente.
Il problema sorge quando la fattura ha piu linee di descrizione. A quel punto la linea nel db è completamente recplicata ad eccezzione del campo descrizione.

ES Cliente:io,Numerofattura:10,Listino:mio,Descrizione:prima riga;
Cliente:io,Numerofattura:10,Listino:mio,Descrizione:seconda riga;

Io devo far in modo che si legga una volta sola i campi standard, mentre le descrizioni vengano una sotto l'altra.
Come devo fare? Sto impazzendo...
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao, fai due query, la prima con i dati della fattura e con la seconda cicli le descrizioni.
 

Emix

Utente Attivo
15 Feb 2010
596
0
16
Ciao, fai due query, la prima con i dati della fattura e con la seconda cicli le descrizioni.

Ok, ora provo, secondo te è fattibile anche mettere dei campi nuovi prima di stamparla? Come potrei fare?
Grazie ancora

PS il codice per ciclare è questo? :

PHP:
$conta=count($barcode);
for($a=0;$a<$conta;$a++){
echo ' 
<table align=center" border="1"> 
<tr align="center"> 
<td width="130" align="center">' . $barcode[$a] . '</td>
<td width="130" align="center">' .  $descrizione[$a] . '</td>
<td width="130" align="center">' .  $quantita[$a] . '</td>
<td width="130" align="center">' . $prezzo[$a] . '</td>
<td width="130" align="center">' . $scontoperc[$a] . '</td>
<td width="130" align="center">' . $scontoval[$a] . '</td>
<td width="130" align="center">' . $prezzosconto[$a] . '</td>
</tr>
</table>
';
}

è chiaramente un esempio, poi aggiusto le variabili
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
La table va fuori dal ciclo.
campi nuovi ?
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
dipende da come le cerchi
la prima sarà
Codice:
SELECT * FROM fatture WHERE idFattura = 10 LIMIT 1
la seconda
Codice:
SELECT descrizione FROM fatture WHERE idFattura = 10
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Pensandoci potresti farlo anche con una sola query
ecco uno schema
PHP:
<?php
$sql = new mysqli("localhost", "root", "password", "database");

$query = "SELECT * FROM fatture WHERE id = 1";
$result = $sql->query($query);
if ($result) {
    $prodotti = array();
    while ($row = $result->fetch_assoc()) {
        $cliente = $row['cliente'];
        $prodotti[] = $row['desc'];
    }
}
?>
Cliente : <?php echo $cliente; ?>
<table>
    <thead>
        <tr>
            <th>Descrizione</th>
        </tr>
    </thead>
    <tbody>
        <?php
        foreach ($prodotti as $value) {
            echo "<tr>";
            echo "<td>$value</td>";
            echo "</tr>";
        }
        ?>
    </tbody>
</table>
 

Emix

Utente Attivo
15 Feb 2010
596
0
16
Ciao Ciric,
grazie per la risposta e l'esempio esaustivo...
Ora ho tre problemi da risolvere...
Problema 1:
Ad ogni linea di descrizione corrisponde un prezzo diverso.
Ho provato così:

PHP:
<?php
$sql = new mysqli("*******", "*****", "********", "fatture");

$query = "SELECT * FROM fatt WHERE  numfatt = 18318";
$result = $sql->query($query);
if ($result) {
    $prodotti = array();
	$totali = array();
    while ($row = $result->fetch_assoc()) {
        $cliente = $row['cliente'];
        $prodotti[] = $row['descfattdett'];
		$totali[] = $row['totale'];
    }
}
?>
Cliente : <?php echo $cliente; ?>
<table>
    <thead>
        <tr>
            <th>Descrizione</th>
        </tr>
    </thead>
    <tbody>
        <?php
		foreach ($totali as $totalii){}
        foreach ($prodotti as $value) {
            echo "<tr>";
            echo "<td>$value</td><td>$totalii</td>";
            echo "</tr>";
        }
		
        ?>
    </tbody>
</table>

Ma prende solo l'ultimo, se invece non metto le graffe raddoppia le linee, idem se metto il doppio ciclo...

Problema 2:

Prima di salvare la fattura, devo poter aggiungere delle linee sotto (sono al max 5 righe in piu) quelle di descrizione gia lette, ovviamente il resto rimane uguale, solo descrizione e totale riga.

Problema 3:

Una volta modificata la fattura, aggiunto e/o corretto quello che mi occorre devo poter fare l'update delle righe...

Grazie ancora per l'aiuto che mi stai fornendo...
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
1) puoi creare un array bidimensionale
PHP:
<?php
$sql = new mysqli("localhost", "root", "password", "database");

$query = "SELECT * FROM fatt WHERE  numfatt = 18318";
$result = $sql->query($query);
if ($result) {
    $prodotti = array();
    $i = 0;
    while ($row = $result->fetch_assoc()) {
        $cliente = $row['cliente'];
        $prodotti[$i]['descfattdett'] = $row['descfattdett'];
        $prodotti[$i]['totale'] = $row['totale'];
        $i++;
    }
}
?>
Cliente : <?php echo $cliente; ?>
<table>
    <thead>
        <tr>
            <th>Descrizione</th>
            <th>Totale</th>
        </tr>
    </thead>
    <tbody>
        <?php
        foreach ($prodotti as $value) {
            echo "<tr>";
            echo "<td>" . $value['descfattdett'] . "</td>";
            echo "<td>" . $value['totale'] . "</td>";
            echo "</tr>";
        }
        ?>
    </tbody>
</table>
2) finito il foreach inserisci le tr che ti servono con i campi input
3) racchiudi tutto dentro un form e invii i dati ad una pagina che ti farà l'update
 
Ultima modifica:

Emix

Utente Attivo
15 Feb 2010
596
0
16
Grazie mille per l'aiuto... Ora trasformo tutti i campi in input così posso fare l'UPDATE... Tanto prima di questa pagina ci sara un campo di ricerca che passa in sessione l'id della fattura...
Faccio delle prove, se ho necessità ti scrivo di nuovo.
Grazie ancora!!
 

Emix

Utente Attivo
15 Feb 2010
596
0
16
Ciao Ciric,
Ho effettuato le modifiche come da tuo consiglio il risultato è questo :

PHP:
<?php
$sql = new mysqli("******", "******", "******", "fatture");

$query = "SELECT * FROM fatt WHERE  numfatt = 18318";
$result = $sql->query($query);
if ($result) {
    $prodotti = array();
	$i = 0;
    while ($row = $result->fetch_assoc()) {
        $numfatt = $row['numfatt'];
		$datafatt = $row['datafatt'];
		$numerora = $row['numerora'];
		$numcontratto = $row['numcontratto'];	
		$datainizionolo = $row['datainizionolo'];	
		$datafinenolo = $row['datafinenolo'];
		$cliente = $row['cliente'];
		$conducente= $row['conducente'];
		$stazioneout = $row['stazioneout'];
		$listino = $row['listino'];
		$gruppocons = $row['gruppocons'];
		$numgiorniadd = $row['numgiorniadd'];
		$utente = $row['utente'];
        $prodotti[$i]['descfattdett'] = $row['descfattdett'];
		$prodotti[$i]['totale'] = $row['totale'];
		$i ++;
    }
}
?>
<form action="recordfattura.php" method="post">
Numero Fattura :<b><input type="text" id="numfatt1" name="numfatt1" value="<?php echo $numfatt; ?>"  /></b><br />
Data Fattura :<b><input type="text" id="datafatt1" name="datafatt1" value="<?php echo $datafatt; ?>" /> </b><br />
Numero RA :<b><input type="text" id="numerora1" name="numerora1" value="<?php echo $numerora; ?>" /> </b><br />
Numero Contratto : <b><input type="text" id="numcontratto1" name="numcontratto1" value="<?php echo $numcontratto; ?>" /></b><br />
Data Inizio Nolo : <b><input type="text" id="datainizionolo1" name="datainizionolo1" value="<?php echo $datainizionolo; ?>" /></b><br />
Data Fine Nolo :<b><input type="text" id="datafinenolo1" name="datafinenolo1" value="<?php echo $datafinenolo; ?>" /> </b><br />
Cliente :<b><input type="text" id="cliente1" name="cliente1" value="<?php echo $cliente; ?>" size="60" /> </b><br />
Conducente :<b><input type="text" id="conducente1" name="conducente1" value=" <?php echo $conducente; ?>" size="60" /></b><br />
Stazione OUT : <b><input type="text" id="stazioneout1" name="stazioneout1" value="<?php echo $stazioneout; ?>" /></b><br />
Listino : <b><input type="text" id="listino1" name="listino1" value="<?php echo $listino; ?>" size="60" /></b><br />
Gruppo Consegnato : <b><input type="text" id="gruppocons1" name="gruppocons1" value="<?php echo $gruppocons; ?>" size="60" /></b><br />
Numero Giorni ADD :<b><input type="text" id="numgiorniadd1" name="numgiorniadd1" value="<?php echo $numgiorniadd; ?>" /> </b><br />
Utente :<b> <?php echo $utente; ?></b><br /><br />
<table>
    <thead>
        <tr>
            <th>Descrizione</th>
        </tr>
    </thead>
    <tbody>
        <?php
        foreach ($prodotti as $value) {
            echo "<tr>";
            echo '<td><input type="text" id="descfatt1[]" name="descfatt1[]" size="60" value= "'. $value['descfattdett'] . '" /></td>"';
            echo '<td><input type="text" id="totale1[]" name="totale1[]" size="60" value= "'. $value['totale'] . '" /></td>"';
            echo "</tr>";
        }
					echo "<tr>";
            echo '<td><input type="text" id="descfatt1[]" name="descfatt1[]" size="60" value= "" /></td>"';
            echo '<td><input type="text" id="totale1[]" name="totale1[]" size="60" value= "" /></td>"';
            echo "</tr>";
			echo "<tr>";
            echo '<td><input type="text" id="descfatt1[]" name="descfatt1[]" size="60" value= "" /></td>"';
            echo '<td><input type="text" id="totale1[]" name="totale1[]" size="60" value= "" /></td>"';
            echo "</tr>";
		
        ?>
    </tbody>
</table>
</form>
<input type="submit" value="INVIA I DATI" />


Ho due errori, uno è minimo, mi si mettono degli apici di troppo ("""") in visualizzazione, l'altro è che anche se clicco su invia i dati non funziona nulla...
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Il submit va messo all'interno del form
 

Emix

Utente Attivo
15 Feb 2010
596
0
16
Il submit va messo all'interno del form

Madonna santa... Sarà la stanchezza.. grazie :)

Visto che ci sono una domanda... nella pagina di arrivo con i dati del post, per ciclare la descrizione con i relativi importi uso il metodo del count e poi recupero l'array?

Grazie ancora
 

Emix

Utente Attivo
15 Feb 2010
596
0
16
Ciric ho un altro quesito ora... Ho un Database con le transazioni delle fatture... ovviamente potrei avere piu righe con la stesso numero di fattura.. Mi spiego meglio:

io ho dei campi cosi :

NUMFATT --------- DESCFATT ---------- TOTALE

1 ARTICOLO 10
1 ARTICOLO2 2
2 ARTICOLO3 5
2 ARTICOLO4 10


Devo fare in modo che ciclando tutto il DB siano raggruppati per num fattura totale e descrizione.. Come faccio ?
Perche questo che avevamo fatto noi aveva come clausola il num di fattura da cercare nella query, qui invece ho un range di date oppure tutta una tabella...
 

Emix

Utente Attivo
15 Feb 2010
596
0
16
Ciric ho un altro quesito ora... Ho un Database con le transazioni delle fatture... ovviamente potrei avere piu righe con la stesso numero di fattura.. Mi spiego meglio:

io ho dei campi cosi :

NUMFATT --------- DESCFATT ---------- TOTALE

1 ARTICOLO 10
1 ARTICOLO2 2
2 ARTICOLO3 5
2 ARTICOLO4 10


Devo fare in modo che ciclando tutto il DB siano raggruppati per num fattura totale e descrizione.. Come faccio ?
Perche questo che avevamo fatto noi aveva come clausola il num di fattura da cercare nella query, qui invece ho un range di date oppure tutta una tabella...

Riesci ad aiutarmi? ;(
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao Emix, non ho ricevuto la notifica, ti converrebbe aprire una nuova discussione la prossima volta.
Devi usare GROUP BY nella query
Codice:
SELECT * FROM fatture GROUP BY idFattura, descrizione
 

Emix

Utente Attivo
15 Feb 2010
596
0
16
Uhm ho provato come dici te ma non ho ottenuto il risultato che speravo... ti incollo il codice:
PHP:
<?php
$sql = new mysqli("SERVER", "USER", "PASSWORD", "export");

$query = "SELECT * FROM fatture GROUP BY NUMFATT LIMIT 10";
$result = $sql->query($query);
if ($result) {
    $prodotti = array();
    $i = 0;
    while ($row = $result->fetch_assoc()) {
        $prodotti[$i]['NUMFATT']=$row['NUMFATT'];
        $prodotti[$i]['DESCFATT'] = $row['DESCFATT'];
        $prodotti[$i]['TOTALE'] = $row['TOTALE'];
        $i++;
    }
}
?>
<table>
    <thead>
        <tr>
            <th>Numero Fattura</th>
            <th>Descrizione</th>
            <th>Totale</th>
        </tr>
    </thead>
    <tbody>
        <?php
        foreach ($prodotti as $value) {
            echo "<tr>";
			echo "<td>" . $value['NUMFATT'] . "</td>";
            echo "<td>" . $value['DESCFATT'] . "</td>";
            echo "<td>" . $value['TOTALE'] . "</td>";
            echo "</tr>";
        }
        ?>
    </tbody>
</table>

Quello che visualizzo è un numero fattura (giusto) ma solo una riga di descrizione e importo.. non tutte le righe di quella fattura. Ti incollo risultato:

Codice:
Numero Fattura	Descrizione	Totale
12317	SCP SUPER COVER PROTECTION 	40
12318	SCP SUPER COVER PROTECTION 	20
12319	SCP SUPER COVER PROTECTION 	330
12320	GIORNI TARIFFA	68.85
12321	SCP SUPER COVER PROTECTION 50
12322	GIORNI TARIFFA	97.84
12323	SCP SUPER COVER PROTECTION 	50
12324	SCP SUPER COVER PROTECTION 	40
12325	GIORNI TARIFFA	79.92
12326	SCP SUPER COVER PROTECTION 	50
In realtà, per esempio la numero 12317 è composta da :
SCP SUPER COVER PROTECTION 40
SPESE AMMINISTRATIVE 3

Come devo fare? o cosa sbaglio....
 
Ultima modifica:

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Devi raggruppare per entrambi i campi senza LIMIT. Li separi con una virgola come ti ho postato
 

Emix

Utente Attivo
15 Feb 2010
596
0
16
ho provato anche cosi ma il risultato e il medesimo... probabilmente sbaglio sotto.. Mi sai fare un esempio per favore?
 
Discussioni simili
Autore Titolo Forum Risposte Data
S problema con recupero dati tabella mysql PHP 2
L Problema con recupero dati in PHP cURL e JAVA con server PHP 1
T Problema con form e recupero dati da mysql PHP 17
T Problema recupero dati da file [era: help script php] PHP 9
W Problema recupero dati database Javascript 2
A Problema recupero valori da select con chiamata ajax Ajax 1
O problema recupero valore con getElementById Ajax 0
I Sto progettando nuovi siti utilizzando bootstrap e devo dire funziona bene, l'unico problema e la maschera -moz- HTML e CSS 0
K Problema form update PHP 2
O problema con dvr dahua xvr5116 IP Cam e Videosorveglianza 0
S Problema nel ciclare un json Javascript 0
G Problema con Xampp Web Server 1
andrea barletta Problema con miniature comandi Photoshop 0
I problema con alice Posta Elettronica 0
K Problema Inner join PHP 1
F firefox problema http Linux e Software 0
N Problema con position absolute e overflow HTML e CSS 4
E Problema jquery Success jQuery 2
L Problema con inner join PHP 11
K [php] Problema con inner join PHP 4
E problema selezione sfumata Photoshop 2
K [PHP] Problema con variabili concatenate. PHP 1
A Problema filtro fluidifica Photoshop Photoshop 1
H Problema Bordi Scontorno Photoshop 1
O problema con query PHP 4
R Problema installazione Realtek WiFi USB rtl8821 Reti LAN e Wireless 0
I problema con 2 account Posta Elettronica 1
L problema collegamento file css con html HTML e CSS 1
Y Problema percorso file in rete PHP 1
N Problema SEO "L'URL non si trova su Google" SEO e Posizionamento 4
E Problema accesso a file con app sviluppata con MIT APP INVENTOR 2 Sviluppo app per Android 0
P Problema acquisizione clienti Webdesign e Grafica 1
F NetBeans problema creazione progetto Java Windows e Software 0
M Problema con Try Catch PHP 0
C problema seo + cerco esperto SEO e Posizionamento 11
Sergio Unia Problema con gli eventi del mouse su una data table: Javascript 2
T PROBLEMA CON SESSIONI PHP 3
A Problema, non so, di scale() o transform, oppure altro? HTML e CSS 0
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
R problema con else PHP 0
T PROBLEMA CON ARRAY PHP 8
L problema con query select PHP 2
R Problema query con ricerca id numerico PHP 2
F Problema con risposta PHP 0
Z Problema con il mio tp-l i nk Reti LAN e Wireless 1
I PROBLEMA: Sostituzione sito XAMPP E-Commerce 0
T problema data 30/11/-1 PHP 0
L Problema RAM con Tomcat 8 Apache 0
napuleone problema con sort e asort PHP 4
Y Problema incolonnamento tabella PHP 7

Discussioni simili