foreach e fetchAll dove recupero solo l'ultimo record

  • Creatore Discussione Creatore Discussione twogate
  • Data di inizio Data di inizio

twogate

Utente Attivo
30 Ago 2018
28
0
1
buon giorno a tutti
premettendo che io non sono un programmatore professionista ma solo un appassionato,
volevo recuperare dei record da una tabella mysql e impostarli come value di vari input type con un ciclo foreach, ma riesco solo a passare l'ultimo record, qui di seguito posto lo script
PHP:
<!DOCTYPE html>


<html>

    <head>

        <meta charset="UTF-8">

        <title></title>

    </head>

    <body>

        <?php

             try {

    $hostname = "localhost";

    $dbname = "geristo";

    $user = "francesco";

    $pass = "675";

    $db = new PDO ("mysql:host=$hostname;dbname=$dbname", $user, $pass);

} catch (PDOException $e) {

    echo "Errore: " . $e->getMessage();

    die();

    }

      

   $sql=("SELECT tavolo FROM tavoli");

           $st= $db->prepare($sql);

           $st->execute();

           $mio= $st->fetchAll();   

      

   foreach ($mio as $nome )

//          $nome=$nome['tavolo'];

      var_dump($nome);

           {?>

             <input type="submit" name=" <?php echo $nome['tavolo']?>"  value=<?php echo $nome['tavolo']?> >

       <?php  } ?>

 

    </body>

</html>
 
Ultima modifica di un moderatore:
twogate

avviso.png
 
Ultima modifica:
foreach ($mio as $nome ) // $nome=$nome['tavolo']; var_dump($nome); {?> <input type="submit" name=" <?php echo $nome['tavolo']?>" value=<?php echo $nome['tavolo']?> > <?php } ?>

Ma....le parentesi....

Buongiorno, prova in questo modo

PHP:
foreach ($mio as $nome ){
echo '<input type="text" name="'.$nome['tavolo'].'" value="'.$nome['tavolo'].'" />';
}

Piccolo hack.... Farei una cosa di questo genere per rendere più leggibile il tutto

PHP:
$input='<input type="text" name="tavolo" value="tavolo" />';
foreach($nome as $el) echo str_replace('tavolo',$el['tavolo'],$input);
 
E fare tutto insieme?
PHP:
$sql = 'SELECT tavolo FROM tavoli ORDER BY tavolo DESC; --';  //  In ordine alfabetico discendente.
$input = '';

foreach ( $conn->query( $sql ) as $row )
{
    $input .= "<input type=\"text\" name=\"{$row['tavolo']}\" value=\"{$row['tavolo']}\">\n";
}
echo $input;

Quello che non ho capito leggendo i commenti precedenti, è: ma vuoi davvero realizzare una lista di campi di input con i nomi di tutti i tavoli presenti nel database?
Se sono centinaia? Ma anche che so una ventina?
Riempi la pagina di campi di input, ma poi a che servirebbe una pagina così?
 
Ma....le parentesi....

Buongiorno, prova in questo modo

PHP:
foreach ($mio as $nome ){
echo '<input type="text" name="'.$nome['tavolo'].'" value="'.$nome['tavolo'].'" />';
}

Piccolo hack.... Farei una cosa di questo genere per rendere più leggibile il tutto

PHP:
$input='<input type="text" name="tavolo" value="tavolo" />';
foreach($nome as $el) echo str_replace('tavolo',$el['tavolo'],$input);



TI ringrazio ,ho modificato il mio script era solo un problema di parentesi come mi hai fatto notare
PHP:
   foreach ($mio as $nome ) {?>
                          <input type="submit" name=" <?php $nome['tavolo']?>"  value=<?php echo $nome['tavolo']?> >
       <?php  } ?>
 

Discussioni simili

L
Risposte
0
Visite
897
PHP
leonte54
L