• User Attivo

    ciclo for

    Ciao a tutti
    vi chiedo un po di pazienza, ma devo imparare
    devo fare un ciclo per estrarre alcuni dati da una tabella
    con il while non ho avuto problemi
    con il for invece non riesco a farlo
    sembra una scemità
    [PHP]<?php
    //richiamo il file di configurazione
    require 'Config.php';
    //richiamo il file di connessione
    require 'Connect.php';

    //creo la SELECT
    $query="SELECT * FROM categorie";
    //eseguo la query
    $risultato=mysql_query($query);
    if(!$risultato)
    {
    die("errore nella query;".mysql_error());
    }
    //chiudo la connessione
    mysql_close();

    for($i=0; $i<=$risultato; $i++)
    {
    print"<tr>";
    print"<td><p class='b01'>
    <img src='images/e02.gif' width='6' height='5' border='0' align='absmiddle'>  <a href=''>$i</a></p>
    <div align='center'><img src='images/hr01.gif' width='137' height='3' border='0'></div>
    </td>";
    print"</tr>";
    }
    ?>
    [/PHP]

    mi dite cosa manca?

    grazie e buona domenica
    ciao da danny


  • User Attivo

    Devi prendere il risultato e popolare un'array mysql_fetch_array()... poi col for scorri l'array e a ogni giro associ list() i risultati a delle variabili che visualizzi... se non capisci stasera ti posto il codice...

    keiske


  • User Attivo

    Ciao, sto provando ed ho fatto una cosa del genere
    [php]
    $dati=mysql_fetch_assoc($risultato)
    for($i=0; $i=count($dati); $i++)
    [/php]

    poi dove faccio la stampa metto
    $dati*

    va tutto in loop

    quindi la soluzione non è questa

    ciao


  • User Attivo

    usa mysql_num_rows() per contare le righe della query e limiti il for a quella variabile...


  • User Attivo

    @Khendall said:

    usa mysql_num_rows() per contare le righe della query e limiti il form a quella variabile...

    [PHP]
    $dati=mysql_fetch_rows($risultato)
    for($i=0;$i<=count($dati);$i++)
    [/PHP]

    e poi nella stampa mettere solo $dati

    cosi dici?

    ciao


  • User Attivo

    no perche nums_rows già ti restituisce il numero di righe trovate, ma scusa perche devi usare per forza for? usa while + mysql_fetch_array e sei apposto:

    [PHP]<?php
    //richiamo il file di configurazione
    require 'Config.php';
    //richiamo il file di connessione
    require 'Connect.php';

    //creo la SELECT
    $query="SELECT * FROM categorie";
    //eseguo la query
    $risultato=mysql_query($query)or die("errore nella query;".mysql_error());
    //chiudo la connessione
    mysql_close();

    while($row=mysql_fetch_array($risultato))
    {
    print"<tr>";
    print"<td><p class='b01'>
    <img src='images/e02.gif' width='6' height='5' border='0' align='absmiddle'>  <a href=''>".$row['nome_tuo_campo_db']."</a></p>
    <div align='center'><img src='images/hr01.gif' width='137' height='3' border='0'></div>
    </td>";
    print"</tr>";
    }
    ?>
    [/PHP]


  • User Attivo

    Ciao e grazie per il codice
    ma ho già detto all'inizio che il ciclo while non era un
    problema
    visto che sto cercando di imparare php, e mi sono imposto
    di impararlo bene, non conle semplici copie

    stavo dicendo io il ciclo while già lo fatto, e cioò vorrei
    farlo col for

    ciao e grazie


  • User Attivo

    [php]<?php
    //richiamo il file di configurazione
    require 'Config.php';
    //richiamo il file di connessione
    require 'Connect.php';

    //creo la SELECT
    $query="SELECT * FROM categorie";
    //eseguo la query
    $risultato=mysql_query($query)or die("errore nella query;".mysql_error());

    // conto i record
    $num_ris = msql_num_rows($risultato);

    //chiudo la connessione
    mysql_close();

    for($x=0;$x<$num_ris;$x++){

    print"<tr>";
    print"<td><p class='b01'>
    <img src='images/e02.gif' width='6' height='5' border='0' align='absmiddle'>  <a href=''>".mysql_result($risultato,$x,'nome_tuo_campo')."</a></p>
    <div align='center'><img src='images/hr01.gif' width='137' height='3' border='0'></div>
    </td>";
    print"</tr>";

    }
    ?>[/php]


  • User Attivo

    ciao ho fatto come hai detto
    ma mi dice

    **Warning**: msql_num_rows(): supplied resource is not a valid mSQL result resource in **c:\programmi\easyphp1-8\www\web_site\index.php** on line **98**
    
    

    riga 98

    $num_ris = msql_num_rows($risultato);
    

    strano che bisogna scrivere tutte quelle cose dove stampo la riga

    non xrchè non mi fido eee
    però pensavo + una cosa del genere

    [HTML]
    $num_ris[$x]
    [/HTML]

    ciao e grazie


  • User Attivo

    // conto i record
    $num_ris = msql_num_rows($risultato);

    errore di sintassi, sarebbe

    // conto i record
    $num_ris = mysql_num_rows($risultato); (manca la y)

    $num_ris[$x] tradotto sarebbe numero record[valore x] senza senso mentre

    mysql_result($risultato,$x,'nome_tuo_campo')

    (risorsa del db $risultato)+( riga $x(0,1,2,3,4,5 ecc)) (piu il nome del campo del db)


  • User Attivo

    ciao e grazie
    va benissimo
    non ci sarei mai arrivato da solo
    quel mysql_result non l'avrei mai messo

    cmq grazie tante

    ciao da danny


  • User Attivo

    [PHP]
    <?php
    //richiamo il file di configurazione
    require 'Config.php';
    //richiamo il file di connessione
    require 'Connect.php';

    //creo la SELECT
    $query="SELECT * FROM categorie ORDER BY descrizione";
    //eseguo la query
    $risultato=mysql_query($query);
    if(!$risultato)
    {
    die("errore nella query;".mysql_error());
    }
    //chiudo la connessione
    mysql_close();
    ?>
    <html>
    <head>
    <title>TEMPLATE BY ALIBI74.IT</title>
    <link rel="stylesheet" type="text/css" href="style.css">
    <meta name="generator" content="Namo WebEditor v5.0">
    </head>
    <body leftmargin=0 topmargin=0 marginheight="0" marginwidth="0" bgcolor="#E6E6E6">
    <table border="0" cellpadding="0" cellspacing="0" width="758" align="center">
    <tr valign="top">
    <td><img src="images/logo.gif" alt="" width="184" height="129" border="0"></td>
    <td>
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
    <tr>
    <td colspan="2">
    <table border="0" cellpadding="0" cellspacing="0">
    <tr>
    <td><img src="images/but01.gif" width="115" height="30" alt="" border="0"></td>
    <td><img src="images/but02.gif" alt="" width="114" height="30" border="0"></td>
    <td><img src="images/but03.gif" width="112" height="30" alt="" border="0"></td>
    <td><img src="images/but04.gif" width="116" height="30" alt="" border="0"></td>
    <td><img src="images/but05.gif" width="117" height="30" alt="" border="0"></td>
    </tr>
    </table>
    </td>
    </tr>
    <tr>
    <td background="images/fon_top01.gif" colspan="2" height="37">
    <table border="0" cellpadding="0" cellspacing="0" width="100%" background="">
    <tr>
    <td><p class="menu01"><a href=""><img src="images/e01.gif" width="8" height="7" alt="" border="0">  Company history</a></p></td>
    <td><p class="menu01"><a href=""><img src="images/e01.gif" width="8" height="7" alt="" border="0">  Executives management</a></p></td>
    <td><p class="menu01"><a href=""><img src="images/e01.gif" width="8" height="7" alt="" border="0">  Contact Info</a></p></td>
    <td><p class="menu01"><a href=""><img src="images/e01.gif" width="8" height="7" alt="" border="0">  Our Partners</a></p></td>
    <td><p class="menu01"><a href=""><img src="images/e01.gif" width="8" height="7" alt="" border="0">  Contacts</a></p></td>
    </tr>
    </table>
    </td>
    </tr>
    <tr>
    <td><img src="images/form01.gif" width="341" height="22" alt="" border="0"></td>
    <td><img src="images/form02.gif" width="233" height="22" alt="" border="0"></td>
    </tr>
    <tr>
    <form action="" method="post">
    <td height="40" background="images/form03.gif" width="341" alt="" border="0" align="center">
    <input type="Text" name="" value=" USERNAME" size="10">
    <input type="Text" name="" value=" PASSWORD" size="10">
    <input type="image" src="images/b_login.gif" width="79" height="20" alt="" border="0" align="absbottom">
    </td>
    </form>
    <td background="images/form04.gif" width="233" height="40">
    <table border="0" cellpadding="0" cellspacing="0" width="100%" background="">
    <tr align="center">
    <td><p style="color: #FFFFFF; font-size: 10px;"><b>TOTAL<br>$11500,00</b></p></td>
    <td><a href=""><img src="images/b_vew.gif" width="79" height="20" alt="" border="0"></a></td>
    </tr>
    </table>
    </td>
    </tr>
    </table>
    </td>
    </tr>
    </table>
    <table border="0" cellpadding="0" cellspacing="0" width="758" align="center">
    <tr valign="top">
    <td width="185" background="images/fon_left03.gif">
    <table border="0" cellpadding="0" cellspacing="0" background="images/fon_left01.gif" width="100%">
    <tr>
    <td align="right">
    <table border="0" cellpadding="0" cellspacing="0" width="165" background="images/fon_left02.gif">
    <tr>
    <td background="images/left01.gif" height="26"><p class="title">NAVIGAZIONE</p></td>
    </tr>
    <?php
    //while($riga=mysql_fetch_array($risultato,MYSQL_ASSOC))
    $num_ris = mysql_num_rows($risultato);
    for($x=0; $x<$num_ris; $x++)
    {
    print"
    <tr>";
    print"
    <td><p class='b01'>
    <img src='images/e02.gif' width='6' height='5' border='0' align='absmiddle'>  
    <a href=''>".mysql_result($risultato,$x,'descrizione')."</a></p>
    <div align='center'><img src='images/hr01.gif' width='137' height='3' border='0'></div>
    </td>";
    print"
    </tr>";
    }
    ?>
    [/PHP]


  • User Attivo

    Beh magari scrivi prima:

    $variabile = mysql_result($risultato,$x,'descrizione');

    E poi nell'a href ci passi $variabile e non tutta la funzione...

    Detto questo mi sembra tutto corretto... è il modo migliore per usare il ciclo for...

    Resta sempre una cosa... non capisco perchè ti ostini (in cima al codice) a identificare la mancanza di $risultato come errore... semplicemente non c'è un risultato e se non c'è è perchè non ci sono categorie, non per un errore... ergo quello che vuoi tu è

    $risultato=mysql_query($query)
    or die("errore nella query;".mysql_error());

    Questo sì che dà errore se c'è un errore nella connessione o nell'esecuzione della query...


  • User Attivo

    ciao il fatto che ho un libro che dice come te
    e un tutorial che invece fa come ho scritto io

    poi le ho provate entrambe , ma non ho notato differenza

    tu dici che c'è?

    ciao da danny


  • User Attivo

    Il punto è che se passi al die() un mysql_error() deve esserci questo errore...

    se tu il die() lo passi nel caso in cui !$risultato, l'errore non c'è...

    Prova a applicare la query a una tabella vuota, oppure aggiungi alla query un WHERE 1=2, così da ottenere !$risultato e vedrai se ti dà un errore...

    Detto questo, a parte un errore strutturale, per eventi come mancanza di risultato devi gestire l'output diversamente..

    Ipotizziamo che prepari un altra query su una "ricerca" e la ricerca dà risultato nullo... cosa dici al tuo visitatore? "Errore di mysql: bla bla bla"?

    E poi lui cosa pensa? Che la sua ricerca non ha dato risultati o che c'è un errore nel sito?

    if(!$risultato) {
    echo "Spiacente, non c'è risultato";
    exit;
    }

    oppure

    if(!$risultato) {
    $mess = "Spiacente, non c'è risultato";
    header("pagina.php?mess=$mess");
    }

    E nella pagina.php

    if($_GET['mess'])
    $mess = $_GET['mess'];
    else
    $mess = "";

    <div id="messaggivari"><?=$mess?></div>

    e poi magari sotto al div ci metti un bel codice che cliccando nasconde il messaggio una volta letto... (un po' come fa google su analytics/adsense/adwords)

    <a href="#" onclick="document.getElementById('messaggivari').innerHTML = '';return false"><span style="float:right;font-size:small">nascondi</span></a>

    keiske


  • User Attivo

    grazie ho capito
    adesso si che ho capito

    ciao