Select da database

intimoviro

Utente Attivo
18 Ago 2009
272
0
0
Salve sto cercando d'inserire in un form una query che mi preleva direttamente i dati dal database e l'inserisce in una select.
Finora ho sempre usato questo script e non mi ha mai dato problemi, posto il codice:

PHP:
<?php
                    $sql2 = "SELECT * FROM regioni ORDER BY id";
                    $res2 = mysql_query($sql2);
                    while ($row2=mysql_fetch_assoc($res2)){
                    echo "<option value=\"" . $row['id'] .  "\">" . $row['regione'] . ""; 
                    }
                    ?>

Mi da questo errore:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING
sulla riga dell'echo

Cosa può essere di errato?

Grazie :confused:
 
Ho provato ma non funziona, mi da sempre lo stesso errore, potrebbe essere perchè eseguo una query in un comando heredoc, cioè:

PHP:
echo <<<EOQ
<?php
                    $sql2 = "SELECT * FROM regioni ORDER BY id";
                    $res2 = mysql_query($sql2);
                    while ($row1=mysql_fetch_assoc($res2)){
                    echo "<option value=\"" . $row1['id'] .  "\">" . $row1['regione'] . ""; 
                    }
EOQ;
?>

Perchè ho provato in un'altro file e funziona, cioè fuori dal comando heredoc.

Potreste aiutarmi?

Grazie
 
ciao
poi non capisco
metti un <?php dentro l'eredoc pero echo <<<EOQ
deve essere anche lui dentro il php

e lo chiudi dopo
secondo me stai facendo una cosa un po "strana" perchè

echo <<<EOQ o è dentro php e quindi non serve <?php dentro la stringa
o è fuori quindi il bw lo considera html e stamperà a monitor echo <<<EOQ

non credo che possa essere fatto php nidificato come gli if (qualcuno più esperto di me se vuole può contraddirmi)
 
Ho provato così:

tutto questo fuori dall'heredoc
PHP:
$s = "SELECT * FROM regioni";
                    $re = mysql_query($s);
                    while ($r=mysql_fetch_assoc($re)){
                    $region = "<option value=\"" . $r['id'] .  "\">" . $r['regione'] . ""; 
                    }

Poi in heredoc ho inserito tra i tag select la varibile $region

Ora funziona, però non mi da la lista di tutte le regioni, ma solo l'ultima presente nel database, come posso fare?

Grazie
 
Credo che tu non abbia ben capito come funziona HEREDOC. Puoi usare qualunque stringa preceduta da tre segni di minore (<), ad esempio:
PHP:
<?php
echo <<<PIPPO
PIPPO;
?>
E quando lo chiudi deve essere completamente allineato a sinistra. Niente tab, niente spazi.

HEREDOC processa solamente testo e variabili, racchiuse tra parantesi graffe. Niente istruzioni. Un esempio:
PHP:
<?php
$var = "Ciao";
echo <<<PIPPO
<b>La variabile è: {$var}</b>
PIPPO;
?>

Il vantaggio è che puoi usare sia gli apici che le doppie virgolette senza il bisogno di utilizzare il simbolo di escape.
 
ciao
.... però non mi da la lista di tutte le regioni, ma solo l'ultima presente nel database, come posso fare?

secondo me (se provi con carta e penna a simulare il ciclo while) al primo giro dentro $s trovi il primo valore, al secondo il secondo....all'ultimo l'ultimo e quindi quando lo stampi trovi solo l'ultimo
 

Discussioni simili