Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    387

    select form dinamica non passa valori corretti

    Ciao a tutti...
    tabella MYsql "genere" con 2 campi, id_genere e genere.
    Ad esempio

    id_genere = 1 e genere = horror
    id_genere = 2 e genere = fantascienza

    e cosi via...

    Ora sto popolando una select dinamicamente in questa maniera:

    codice:
    <label for="genere">Genere</label><select name="id_genere" id="id_genere">
    <?php
    $sql = "SELECT id_genere, genere FROM genere ORDER by genere";
    $result = @$mysql->query($sql);
    							
    // controllo sul numero dei record coinvolti
    if(@$result->num_rows > 0)
    	{
    	 // risultato
    	while($row = $result->fetch_array(MYSQLI_ASSOC)) {
    
    	$id_genere = $row['id_genere'];
    	$genere = $row['genere'];
    	echo "<option value=\"".$id_genere."\">$genere</option>";
    														
    	}
    								
    	echo "</select></p>";
    	}
    	// liberazione della memoria dal risultato della query
    	@$result->close();
    ?>
    E recupero con:
    codice:
    $genere = $_POST['id_genere'];
    Mi stampo la SQL e la sql esce cosi:

    codice:
    insert into dvd (titolo, anno, genere, regista, locandina, attori, trama) values ('2001 odissea nello spazio', '1968', 'genere', 'kubrick', '', '', '')
    Cioè come vedete mi mette la stringa GENERE... nè fantascienza (da me scelto) nè l'id_genere (che vorrei inserire)....

    grazie in anticipo...

    EDIT: ho provato a modificare anche cosi:

    codice:
     <option value="<?php echo $row['id_genere']; ?>"><?php echo $genere; ?></option>
    e stampare:

    codice:
    $id_genere = $_POST['id_genere'];
    	echo "il genere e". $id_genere;
    cosi mi stampa il valore.... grrrrr ma nella sql passa sempre la stringa "genere"


  2. #2
    Questa riga non mi convince molto...
    while($row = $result->fetch_array(MYSQLI_ASSOC)) {

    Devi fare l'array sulla query eseguita. Che centra mysqli?
    while($row = mysql_fetch_array($result)) {

    Poi togli tutti gli @, così vedi se qualcosa ti crea errore.
    Ce l'ho fatta! - ItalianPixel -

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    387
    Uso quella stringa perchè uso mysqli...

    codice:
    $spazio = "localhost";
    	$user = "dvdteca";
    	$password = "dvdteca";
    	$db = "dvdteca";
    	$mysql = new mysqli($spazio, $user, $password, $db);
    la sto usando un po' su tutto il sito di test e "vedo" che mi funziona....

    Ho risolto il problema dell'id... non so come, ma ho riscritto tutte le procedure e alla fine "ha passato"....

    Però voglio tornare su quell' osservazione che mi hai sollevato...

    sto sbagliando tutto il sito?

  4. #4
    a me sembra di aver visto o tutte query mysql o mysqli, a seconda.
    Poi magari mi sbaglio perché non ho mai avuto occasione di utilizzare mysqli.
    Perciò a questa domanda mi ritraggo

    Per quanto riguarda gli @, toglili sempre in fase di programmazione.
    Se il problema viene dato da una query imperfetta o da una funzione errata non lo saprai mai, e potrai andare avanti giorni interi senza capire quale sia il problema.
    Ce l'ho fatta! - ItalianPixel -

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    387
    OK.. ho provato cmq a modificarla cosi


    while($row = mysqli_fetch_array($result))

    e funziona cmq....

    ps.. confesso una cosa... la mia prima echo "hello world" l'ho scritta ieri mattina

    Però è qualche annetto che programmo asp... non sono esattissimamente a digiunto...

  6. #6
    Benvenuto tra i phpiani.
    Siamo una tribù molto attiva ed esploratrice, ci piace la logica e un pò meno javascript ma dobbiamo conviverci e ci tocca farcela piacere
    Ce l'ho fatta! - ItalianPixel -

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    387
    grazie per il benvenuto..... (confesso che sto amando mysql )

    i.e. su php si trova 'sto mondo e quell'altro. Ma forse questo è anche a volte il punto a sfavore...

    Ci ho messo 2 ore solo per trovare le funzioni di estrapolazione codice.... ops, select da mysql

    ad esempio.... ne approfitto un attimo....

    per tirare fuori un solo record

    [sql = "SELECT titolo FROM dvd where id = $id]

    ma c'è x forza bisogno di un array?

    O tu come la scriveresti?

  8. #8
    Ti dirò, ci sono modi più rapidi ed altri meno.
    Io credo di usare quelli più rapidi (chiaramente a seconda delle necessità).
    Per esempio invece di creare 2 righe per la query, basta fare:
    Codice PHP:
    $sql =mysql_query("SELECT titolo FROM dvd WHERE id='$id' ") or die ("Errore query"); 
    Così in una riga hai query ed errore associati ad una variabile.
    Poi per un solo valore ti fai, al posto di un ciclo, una semplice variabile con il fetch array:
    Codice PHP:
    $array=mysql_fetch_array($query); 
    Da li poi ti tiri fuori quello che ti interessa:
    Codice PHP:
    $titolo=$array['titolo']; 
    Con 3 righe hai già estratto un valore.
    Ce l'ho fatta! - ItalianPixel -

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    387
    mi permetto di farti un appunto....

    $array=mysql_fetch_array($query);

    $query non dovrebbe essere nel tuo esempio $sql?

    Comunque... cis ono... l'estrazione, che sia di uno o di n elementi, si fa inserendoli in un array.. che poi richiameremo con l'indice uguale al nome della colonna...

    L'ultima domanda OT... e poi smetto giuro con l'OT.... A questo punto, se il ns DB è un db normale e non di 5465789765 campi.... non converebbe computazionalmente metterci tutto in un array e bon... se in seguito nel codice ci serviranno... prenderemo l'array direttamnte, senza magari dover fare una nuova sql.....?

  10. #10
    Ops, uso sempre $query e credevo di averlo scritto anche qui.
    Hai ragione è $sql.
    Per quanto riguarda la query... una volta che la domanda è stata fatta e i valori sono stati ricevuti, puoi farci quello che vuoi.
    La query viene eseguita una sola volta.
    Quindi nel nostro caso abbiamo estratto un campo solo (se più di uno verrà visualizzato solo il primo estratto) difatti non abbiamo usato un ciclo per visualizzare tutti i campi.
    Altrimenti avremmo dovuto fare:
    while($array=mysql_fetch_array($sql)){
    $titolo=$array['titolo'];
    }
    in questo modo avremmo tutti i titoli estratti dal db.
    Attento a non mettere due volte

    $array=mysql_fetch_array($sql);
    while($array=mysql_fetch_array($sql)){

    poiché in tal caso estrarresti prima il primo record e poi fai il ciclo dai secondo! (ci sono uscito pazzo all'inizio quando stavo imparando)

    Il fatto che recuperiamo subito i valori dall'array $array non significa che non puoi fare la query all'inizio della pagina e richiamare il titolo nel footer della stessa pagina.
    Una volta che hai l'array $array, puoi richiamare i dati ovunque nella pagina.
    Se crei una seconda query stai attento però a chiamarla $query2, $sql2 (o come preferisci) così come con l'array: $array2, $arr2 (o come preferisci).
    Così potrai estrarre i valori della prima query insieme a quelli della seconda.
    Potrai anche usare i valori della prima query per creare delle condizioni nella seconda query:
    $query2=mysql_query("SELECT * FROM tabella WHERE campo1='$array[campo4]' ");
    Ce l'ho fatta! - ItalianPixel -

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 © 2025 vBulletin Solutions, Inc. All rights reserved.