[PHP] Problemi su inserimento array nel db

Max61

Utente Attivo
2 Mar 2014
740
4
18
salve come da titolo avrei la necessità di inserire la query random che mi estrae i nominativi in ordine casuale.
Con la query che posto l'estrazione è perfetta ma quando vado ad inserire nel DB il risultato mi inserisce soltanto l'ultimo nome estratto, mentre vorrei inserire tutti i nomi estratti.
La tabella è così strutturata:
id: autoincrement;
k: varchar;
v: varchar;
PHP:
$Rilevatori = array("minnie","pippo","pluto","Susanna","Antonio",
"Lorenzo","Melania","Giuliana","Liliana","Roberta","Stefania",
"Fabio","Luigino","Fabrizio","Giulia","Claudio","Carmela",
"Pier Paolo","Leonardo","Giovanni","Francesco","Tiziana");
$indici = array();
$Rilevatori_estratti = array();

$numero_Rilevatori = 22; // Rilevatori da estrarre dall'array
$tot_Rilevatori = count($Rilevatori) - 1; // numero totale dei Rilevatori nell'array

for ( $i = 0; $i < $numero_Rilevatori; $i++ ) {
  $ind = indiceCasuale($tot_Rilevatori, $indici);
  $indici[] = $ind;
  $Rilevatori_estratti[$i+1] = $Rilevatori[$ind];
}

function indiceCasuale ($tn, $in) {
  $ind = rand(0, $tn);
  if ( in_array($ind, $in) ) {
    $ind = indiceCasuale ($tn, $in);
  }
    return $ind;
}

?>

<!DOCTYPE html>
<html>
  <body>

    <?php
echo "<center><span style=\"color:black; font-size: 12pt\"><span style=\"color:red height:1;width:1; background-color:white\">&nbsp;____________________&nbsp;<br></span><br>";          
echo '<table>';
?>

<?php
foreach($Rilevatori_estratti as $k=>$v)echo '<tr><td>'.$k. ': </td><td>' .$v.'</td></tr>';
echo '</table>';
    //print_r ($Rilevatori_estratti);
    echo "<center><span style=\"color:black; font-size: 12pt\"><span style=\"color:red height:1;width:1; background-color:white\">&nbsp;____________________&nbsp;<br></span></i><br><br><br>";          
  ?>
  </body>
</html>

<?php
include("Connessione.php") ;

foreach($Rilevatori_estratti as $k=>$v){
            $Rilevatori_estratti["k"][] = "$k";
            $Rilevatori_estratti["v"][] = "$v";
              }
    $query = "INSERT INTO estrazione (k,v) VALUES ('$k','$v')";

    // invio la query
    $result = mysql_query($query);

   // controllo l'esito
   if (!$result) {
    die("<span style=\"color:red: font-size: 14pt\"Errore nell'inserimento. Riprova...</span>" . mysql_error());
   }
   echo "<span style=\"color: green; font-size: 14pt\"><strong>Inserimento eseguito correttamente. </span><br><br><br></b>";
Grazie
Max61
 
Ultima modifica:

mr.x

Utente Attivo
9 Apr 2016
252
25
28
Sposta la query all'interno del ciclo; ad ogni estrazione effetti l inserimento.

Nel caso si voglis utilizzare l'array nella query i valori devi separarli con una virgola ",".

PHP:
implode(",", $array)
 
Ultima modifica:

mr.x

Utente Attivo
9 Apr 2016
252
25
28
Cerco di esser più chiaro che prima ero da smatphone e ed probabilmente ho semplificato troppo..

Per utilizzare i valori di un array in una query devi trasformare l'array in stringa..
la query di riferimento per l' INSERT (in mysql, passa a mysqli) per valori multipliè del tipo:

PHP:
$query = "INSERT INTO Tabella (col1,col2) VALUES ('key1','val1'),('key2','val2') ";

quindi la stringa di valori in questo caso è ('key1','val1'),('key2','val2')

partendo quindi dall'array con i con valori da estrarre creaiamo la stringa da utilizzare nella query


PHP:
$array=array("val1","val2");

foreach($array as $k => $v){
$values[]= "($k, '$v' )";
}

print_r($values);
echo "<br>";
echo $values;

echo "<br>";

$values=implode(",", $values);  // trasformo array in stringa

echo $values; // variabile stringa da utilizzare nella query

$query = "INSERT INTO Tabella (col1,col2) VALUES $values";
 

Max61

Utente Attivo
2 Mar 2014
740
4
18
Ciao Mr.X e grazie, ho provato il tuo codice ma inserisce soltanto i primi due record 0, 1 ad ogni estrazione
PHP:
$array=array("val1","val2");

foreach($array as $k => $v){
$values[]= "($k, '$v' )";
}

print_r($values);
echo "<br>";
echo $values;

echo "<br>";

$values=implode(",", $values);  // trasformo array in stringa

echo $values; // variabile stringa da utilizzare nella query

$query = "INSERT INTO estrazione (k,v) VALUES $values";

    // invio la query
    $result = mysql_query($query);
    
   // controllo l'esito
   if (!$result) {
    die("<span style=\"color:red: font-size: 14pt\"Errore nell'inserimento. Riprova...</span>" . mysql_error());
   }
   echo "<span style=\"color: green; font-size: 14pt\"><strong>Inserimento eseguito correttamente. </span><br><br><br></b>";
questo è il risultato a video:
Array ( [0] => (0, 'val1' ) [1] => (1, 'val2' ) )
(0, 'val1' ),(1, 'val2' )
dove sbaglio?
 

mr.x

Utente Attivo
9 Apr 2016
252
25
28
Ciao Max
in che senso solo i primi due record?

ti inserisce i dati solo nella colonna k e NON i valori in v (val1,val2) ?
 

Max61

Utente Attivo
2 Mar 2014
740
4
18
Ciao Mr.X, mi inserisce:
colonna k: 2 righe la prima con valore 0, la seconda con valore 1
colonna v: 2 righe la prima con valore val1, la seconda con valore val2
 

mr.x

Utente Attivo
9 Apr 2016
252
25
28
Ciao Max
nel codice di esempio che ti ho scritto devi sostituire i valori dell'array con i tuoi ( o passare la tua variabile array al posto di $array).

Codice:
//...
foreach($Rilevatori_estratti as $k=>$v){
$values[]= "($k, '$v' )";
}

$values=implode(",", $values);  // trasformo array in stringa

echo $values; // variabile stringa da utilizzare nella query

$query = "INSERT INTO estrazione (k,v) VALUES $values";

//...

l'echo ti serve a verificare che i valori passati alla query siano quelli corretti
 
Ultima modifica:
Discussioni simili
Autore Titolo Forum Risposte Data
N php problemi a visualizzare video PHP 3
M Problemi con la stampa dei valori in php PHP 1
L Problemi form Pagina php HTML e CSS 3
S Problemi delle funzioni eliminate con PHP e MySQL PHP 4
S Problemi con modulo upload video php (help!) PHP 0
E [PHP] problemi nuova riga con fwrite su piattaforma android PHP 5
M [PHP] Problemi di salvataggio su campo calcolato PHP 0
M [PHP] Problemi con query unione PHP 11
M [PHP] Problemi con select PHP 6
M [PHP] Problemi con il riconoscimento login. PHP 21
M Problemi con database Apache/2.4.37 (Win32) OpenSSL/1.1.1a PHP/7.3.1 PHP 6
S [PHP] problemi con le sessioni PHP 3
T [PHP] problemi con il browser PHP 0
spider81man [PHP] Problemi cancellazione dato su DB [RISOLTO] PHP 1
M [PHP] Problemi con login facebook PHP 0
F [PHP] Problemi di base con bot di telegram PHP 9
D problemi login php 5.6 mysql PHP 1
G Problemi con pagina online.php di una chat in php PHP 38
S Problemi con impostazioni php PHP 3
M Problemi tra GROUP BY e tabella 'datagrid.class.php' PHP 6
S [PHP] Problemi con Login e pagina Utente PHP 5
ANDREA20 problemi carrello in php PHP 0
ANDREA20 [PHP] Problemi carrello commerciale PHP 0
P [PHP] problemi con session_start PHP 15
giuseppe_123 Problemi form php/html PHP 33
webmachine [PHP] Problemi con Login e pagina Utente PHP 3
robertolp problemi e html php PHP 9
M problemi javascript/php Javascript 0
M Problemi PHP e MySQL PHP 1
L Refresh include php con jquery problemi negli script dopo load jQuery 2
F Problemi login con lo script php PHP 2
W problemi incomprensibili invio mail dal sito in PHP PHP 3
C Problemi con esercizi di php PHP 0
I Problemi di sicurezza php PHP 1
C problemi link in tabella php PHP 8
B Problemi con pannello di controllo PHP PHP 0
B Problemi con pannello di controllo PHP PHP 0
G Problemi PHP Hidden e Visible PHP 0
F Problemi php-html PHP 0
D PROBLEMI invio posta con php PHP 3
G Problemi PHP PHP 7
F nl2br di php crea problemi con javascript PHP 7
S php problemi di funzione header usando la fuzione di jquery post PHP 4
F Problemi di settaggio Php per mail in locale PHP 3
F problemi form utenti php e database PHP 9
S problemi con ajax e php Ajax 3
Albertoesse Problemi Interazione tra PHP\JS\MYSQL PHP 3
V Usa la libreria "phpgraphlib.php" problemi nell'includere altri file PHP 2
S problemi jquery ajax chiamare una pagina php Ajax 5
R problemi con un vostro tutorial php. PHP 0

Discussioni simili