Visualizzazione dei risultati da 1 a 8 su 8

Discussione: istruzione select

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    14

    [PHP e OGGETTI] istruzione select

    Innanzitutto ciao a tutto il forum, sono una neofita di php e sto cercando di imparare in vacanze un po di cose. sto facendo uno script per gestire un magazzino. ho iniziato usando le classi e gli oggetti. ho scritto una pagina che dovrebbe leggere una tabella caricata su db Mysql e con i dati letti popolare un menu' a tendina, purtroppo non funziona, sono ancora una dilettante. scrivo il codice, qualcuno puo' aiutarmi a capire dove sbaglio?
    grazie

    <?php


    include '../classi/articolo.php';

    include '../admin/index.php';
    include '../control/conn.php';



    $sql = " SELECT * FROM categorie ORDER by id ";

    $result = mysql_query($sql) or die(mysql_error());


    if (!$result) {

    die("Errore nella query $query: " . mysql_error());
    }
    while($righe = mysql_fetch_object($result)){

    ?>

    <h2>Inserisci articolo</h2>



    <form method="POST" action="_addarticolo.php">
    <table>
    <tr>
    <td>Codice</td>
    <td><input type="text" name="codice" value="" /> </td>
    </tr>
    <tr>
    <td>Descrizione</td>
    <td>
    <input type="text" name="descrizione" value="" />
    </td>
    </tr>
    <tr>
    <td>Udm</td>
    <td><input type="text" name="udm" value="" size="10" maxlength="10" /></td>
    </tr>
    <tr>
    <td>Prezzo</td>
    <td><input type="text" name="prezzo" value="" /></td>
    </tr>
    <tr>
    <td>Iva</td>
    <td><input type="text" name="iva" value="" /></td>
    </tr>
    <tr>

    <td>Categoria</td>
    <td><select>
    <option value="<?=$righe->id;?>"><?=$righe->nomecat;?></option>
    <option value="1">Opzione 1</option>
    <option value="2">Opzione 2</option>
    </select>
    </td>
    </tr>

    il problema ce l'ho su questo select qui sopra,

    ciao
    sam1961

  2. #2
    Utente di HTML.it L'avatar di polinet
    Registrato dal
    Nov 2000
    Messaggi
    993
    non so che classe stai usando, per popolare la tua select puoi fare:
    Codice PHP:
    $sql " SELECT * from categorie order by id";
    $result mysql_query($sql)or die(mysql_error());
    // dentro il tuo IF
    // ......
    //<select name="tuo_campo">
    while($row=mysql_fetch_array($result))
    {
    echo
    "<option value=" $row["tuo_campo"]  .">" $row["tuo_campo"]  ."</option>";    
    }
    //</select> 
    prova e facci sapere
    ¿Hasta la pasta?

  3. #3
    l'errore e' sicuramente nell'uso dello short tag php. invece di:

    <option value="<?=$righe->id;?>"><?=$righe->nomecat;?></option>

    dovresti mettere:

    <option value="<?php echo $righe->id; ?>"><?php echo $righe->nomecat; ?></option>

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    14

    Ho fatto cosi ma ancora non va

    <?php
    /*
    * To change this template, choose Tools | Templates
    * and open the template in the editor.
    */

    include '../classi/articolo.php';

    include '../admin/index.php';
    include '../control/conn.php';

    $query = "SELECT * FROM categorie";
    $result = mysql_query($query);
    if (!$result) {die("Errore nella query $query: " . mysql_error());
    }
    while ($row = mysql_fetch_array($result))
    {
    $Id = $row["id"];
    $Cat = $row["nomecat"];

    // prova presenza dati

    echo "<pre>";
    print_r ($Id);
    print_r ($Cat);
    echo "</pre>";
    // fine prova presenza dati

    }
    ?>

    <h2>Inserisci articolo</h2>

    <form method="POST" action="_addarticolo.php">
    <table>
    <tr>
    <td>Codice</td>
    <td><input type="text" name="codice" value="" /> </td>
    </tr>
    <tr>
    <td>Descrizione</td>
    <td>
    <input type="text" name="descrizione" value="" />
    </td>
    </tr>
    <tr>
    <td>Udm</td>
    <td><input type="text" name="udm" value="" size="10" maxlength="10" /></td>
    </tr>
    <tr>
    <td>Prezzo</td>
    <td><input type="text" name="prezzo" value="" /></td>
    </tr>
    <tr>
    <td>Iva</td>
    <td><input type="text" name="iva" value="" /></td>
    </tr>
    <tr>

    <td>Categoria</td>
    <td><select>
    <option value="<?php echo $Id; ?>"><?php echo $Cat; ?></option>
    </select>
    </td>
    </tr>

    allora nella select (qui sopra) mi compare solo 1 valore (nella tabella ce ne sono 3) e precisamente l'ultimo.

    posto qui il risultato del test fatto con print_r

    10magliette

    12braccialetti

    11pullover

    i record ci sono tutti nell'array
    sam1961

  5. #5

    Re: Ho fatto cosi ma ancora non va

    Originariamente inviato da sam1961

    Codice PHP:
    <?php
    while ($row mysql_fetch_array($result))
    {
    $Id $row["id"];
    $Cat $row["nomecat"];
    allora nella select (qui sopra) mi compare solo 1 valore (nella tabella ce ne sono 3) e precisamente l'ultimo.

    posto qui il risultato del test fatto con print_r

    10magliette

    12braccialetti

    11pullover

    i record ci sono tutti nell'array
    certo che si.

    Come puoi vedere il while sovrascrive l'array ad ogni ciclo e ti rende solo l'ultimo record.

    devi mettere un array che raccolga tutti i dati:

    Codice PHP:
    <?php
    while ($row mysql_fetch_array($result))
    {
    $Id[] = $row["id"];
    $Cat[] = $row["nomecat"];
    e poi per stamparli devi eseguire un ciclo che ti stampi il risultato riga per riga....

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    14

    ehm...

    un'esempio o una piccola traccia perche' non ci arrivo..

    grazie
    sam1961

  7. #7

    Re: ehm...

    Originariamente inviato da sam1961
    un'esempio o una piccola traccia perche' non ci arrivo..

    grazie
    tenendo buono il ciclo while di cui sopra

    Codice PHP:
    <td>Categoria</td>
    <td><select name="pippo">
    <?php 
    for($i 0$i <= count($Id); $i++ ) { 

          echo 
    "<option value='$Id[$i]'>$Cat[$i]</option>";

    }
    ?>
    </select>
    </td>
    devi dare un nome alla select. L'ho chiamata pippo ma tu puoi dare uno nome d'affezione che ti pare... ma daglielo. E' pure valido il modo segnalato da polinet ma forse spostare in questo punto il while ti potrebbe confondere ancor piu'.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    14

    grazie adesso funziona

    si infatti adesso capisco, ieri sera ero arrivata a fare il ciclo for ma lo mettevo sotto a questo codice:

    $query = "SELECT * FROM categorie";
    $result = mysql_query($query);
    if (!$result) {die("Errore nella query $query: " . mysql_error());
    }
    while ($row = mysql_fetch_array($result))
    {

    $Id[] = $row["id"];
    $Cat[] = $row["nomecat"];

    ciclo for---------- (non va bene qui)

    quindi poi non capivo come collegare la cosa alla select. tutto questo dipende forse dal fatto che mi stanno insegnando a tenere il codice php fuori dall'html.

    posto qui allora il codice completo


    $query = "SELECT * FROM categorie";
    $result = mysql_query($query);
    if (!$result) {die("Errore nella query $query: " . mysql_error());
    }
    while ($row = mysql_fetch_array($result))
    {

    $Id[] = $row["id"];
    $Cat[] = $row["nomecat"];


    }
    ?>

    <h2>Inserisci articolo</h2>

    <form method="POST" action="_addarticolo.php">
    <table>
    <tr>
    <td>Codice</td>
    <td><input type="text" name="codice" value="" /> </td>
    </tr>
    <tr>
    <td>Descrizione</td>
    <td>
    <input type="text" name="descrizione" value="" />
    </td>
    </tr>
    <tr>
    <td>Udm</td>
    <td><input type="text" name="udm" value="" size="10" maxlength="10" /></td>
    </tr>
    <tr>
    <td>Prezzo</td>
    <td><input type="text" name="prezzo" value="" /></td>
    </tr>
    <tr>
    <td>Iva</td>
    <td><input type="text" name="iva" value="" /></td>
    </tr>
    <tr>

    <td>Categoria</td>
    <td><select name="pippo">
    <?php
    for($i = 0; $i <= count($Id); $i++ ) {

    echo "<option value='$Id[$i]'>$Cat[$i]</option>";

    }
    ?>
    </select>
    </td>

    perche' ho visto in giro che la cosa interessa.
    grazie al forum
    sam1961

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.