Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: Sezione Guide Errori?

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    10

    Sezione Guide Errori?

    Ragazzi ho un problema con le guide, inizialmente ho letto la guida Base, nel mettere in pratica gli esempi ho trovato degli errori che volevo segnalare ma la guida è sparita appunto per essere aggiornata come ho scoperto qui.

    Capisco che la stiate aggiornando ma non capisco perchè rimuovere la vecchia guida dato che come inizio la stavo prendendo come riferimento e ora sono in difficoltà.

    Sono passato avanti e più precisamente alla Guida PHP/MySql pratica, molto interessante ma ho enormi difficoltà perchè non mi girano gli script e non riesco a capire il perchè, alcuni problemi li ho risolti e ve li espongo, altri no.
    L'esempio proposto è la gestione di un Archivio Articoli, vengo al punto: dopo aver creato nel file insert.php il form per inserire Autore, Titolo, Data, Testo e Password questi dati vengono passati al file save.php che si occiperà di inserire il tutto nel DB. Qui subito il primo problema perchè il tutto non funziona, dopo varie prove ho capito che i dati passati dal form non andavano in ingresso al file save.php per cui mi sono attivato in numerose ricerche ed ho scoperto che bisogna richiamare le variabili tramite l'espressione:
    Codice PHP:
    $variabile=$_POST['variabile']; 
    Ora immagino che per voi sia una stupidaggine ma per uno che si affida ad una guida per imparare non lo è.
    Con la consapevolezza che il tutto non è dovuto ad un errore nella guida ma al fatto che la guida è datata e che ci sono differenze con le vecchie versioni di PHP, sono andato avanti.
    L'altro scoglio l'ho trovato subito, in pratica dopo aver inserito nel DB vari articoli creiamo uno script index.php per richiamare gli ultimi 5 articoli e fin qui tutto ok, ad ogni titolo elencato si associa un link che rimandi al relativo testo nel file view.php, ecco qui ho avuto l'altro blocco:

    Codice PHP:
    while ($row mysql_fetch_array($result))
    { echo 
    "<a href=\"view.php?id=$row[id]\">" date("j/n/y"$row['data']) . " - $row[titolo]</a>
    "
    ; } 
    Non capivo a cosa servisse quel punto di domanda in view.php?id=$row[id], dopo le ulteriori ricerche però mi era chiaro che passavo al file view.php il valore della chiave primaria degli articoli su cui cliccavo per visualizzarne il contenuto. Dopo svariate ricerche scopro che devo usare il:
    Codice PHP:
    $id=$_GET['id']; 
    Ripeto, sono sicuro che per voi sono stupidaggini ma il mio intento è mostrarvi quali sono le difficoltà che un niubbo come me può trovare nonostante stia seguendo delle guida di base che servono proprio ad imparare e non a creare difficoltà. Spero che in futuro questo 3D serva a sistemare le guide o ad aiutar efuturi niubbi con gli stessi problemi.
    Fin qui direi che ho risolto tutto ma veniamo al dunque, ora sono ad un punto fermo.
    Sempre seguendo la guida ho creato un file all.php dove voglio elencare tutti gli articoli immessi mostrandone 20 per volta e quindi distribuendoli su più pagine. Sotto gli articoli elencati ho una tabella con 3 celle su una riga con all'interno rispettivamente:
    -un link alla pagina (e agli articoli) precedente;
    -i numeri di pagina che mi linkino direttamente alla relativa lista di 20 articoli;
    -un link alla pagina (e agli articoli) successiva;
    Questo lo faccio passando la variabile $start ricorsivamente allo stesso script all.php, il valore di $start in LIMIT $start,$step varia in funzione del link che seguo in tabella, su "precedenti" arretra di vent articoli e va alla pagina precedente, sui numeri di pagina salta di un valore pari al numero di pagina moltiplicato * 20 e su "successivi" salta avanti di 20 articoli.

    Il problema è che pur avendo riempito 3 pagine:
    - non mi esce la scritta "precedenti" nel primo campo della tabella
    - se clicco sui numeri di pagina dall'URL vedo che effettivamente il valore di start cambia di 20 in 20 ma l'elenco articoli non varia, mi restituisce sempre gli ultimi immessi, lo stesso se clicco su successivi.

    Ora non credo sia un problema riguardante il passaggio delle variabili come prima appunto perchè nell'URL compaiono i valori giusti di $start, il file mi sembra corretto così come l'ho copiato dalla guida ma davvero non so dov'è l'errore, potreste aiutarmi perfavore?

    Ecco lo script:
    Codice PHP:
    <?
    include("top_foot.inc.php");
    include(
    "config.inc.php");
    top();
    $db mysql_connect($db_host$db_user$db_password);
    if (
    $db == FALSE)
    die (
    "Errore nella connessione. Verificare i parametri nel file config.inc.php");
    mysql_select_db($db_name$db)
    or die (
    "Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
    if (!isset(
    $start) OR $start<0)
    $start=0;
    $step 5;
    $query "SELECT id,data,titolo FROM news ORDER BY data DESC LIMIT $start,$step";
    $result mysql_query($query$db);
    while (
    $row mysql_fetch_array($result))
    { echo 
    "<a href=\"view.php?id=$row[id]\">" date("j/n/y"$row['data']) . " - $row[titolo]</a>
    "
    ; }
    ?>



    <table width=90% border=0><tr>
    <td width=20% align=left>
    <?
    if ($start>0)
    $start_back $start $step;
    echo 
    "<a href=all.php?start=$start_back>precedenti</a>";
    }
    ?>
    </td>
    <?
    $query 
    "SELECT count(*) AS tot FROM news";
    $result mysql_query($query$db);
    $row mysql_fetch_array($result);
    $pages intval(($row['tot']-1) / $step)+1;
    ?>
    <td width=60% align=center>
    <?
    for ($i=0$i<$pages AND $i<10$i++)
    $start_page $i $step;
    echo 
    "<a href=all.php?start=$start_page>" . ($i+1) . "</a> ";
    }
    ?>
    </td>
    <td width=20%>
    <?
    if ($start $step $row['tot'])
    $start_next $start $step;
    echo 
    "<a href=all.php?start=$start_next>successivi</a>";
    }
    ?>
    </td>
    </tr></table>


    <?
    echo "<a href=search.php>Cerca negli articoli</a>";
    foot();
    ?>

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    867
    ma la variabile start la leggi dall'url ?

    Codice PHP:
    $start=$_GET['start']; 
    perche' nel codice che hai postato non lo vedo...
    No pvt per sollecitare risposte, grazie.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    10
    Grazie della risposta.
    Ho provato a inserirlo ma non cambia nulla, di preciso mi è sembrato logico inserirlo prima dell'if così:

    Codice PHP:
    .....
    mysql_select_db($db_name$db)
    or die (
    "Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
    $start=$_GET['start'];
    if (!isset(
    $start) OR $start<0)
    $start=0;
    $step 5;
    $query "SELECT id,data,titolo FROM news ORDER BY data DESC LIMIT $start,$step"
    ..... 
    mi dà errore:
    Notice: Undefined index: start in c:\programmi\easyphp1-8\www\archivio articoli\all.php on line 18

    dove sulla line 18 c'è proprio l'aggiunta:
    Codice PHP:
    $start=$_GET['start']; 
    EDIT: vedo ora con piacere che funziona eppure ieri nn andava
    Evidentemente mi sono fatto influenzare dall'errore notice che so non essere importante ma comunque ci dovrebbe essere un modo per non farlo comparire (a parte disabilitare gli errori notice).

  4. #4
    Utente di HTML.it L'avatar di luke83
    Registrato dal
    Jul 2000
    Messaggi
    1,217
    il notice è solo un avviso di variabile nn dichiarata e alla quale stai assegnando direttamente un valore, tutto lì.. puoi disabilitare i warning oppure dichiarare la variabile $start prima di assegnare il valore..

    ..::Luca::..
    » "se nn riesci a venirene a capo.. usa il tasto INVIO" © 2005 Luke83
    » "letta la documentazione, spazio all'immaginazione.." © 2006 Luke83
    [frasi random] - [Lucopedia] - [laFetta]

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    867
    non sono daccordo... il notice si presenta in questo caso quando tu richiami la pagina senza parametro, quindi la variabile $_GET['start'] non eiste, probabilmente nella pagine successive il notice non c'è in quanto la variabile esiste..... quindi....

    Io eviterei di disabilitare i notice, soprattutto perchè stai imparando.... piuttosto risolviamo il problema che mi sembra la cosa piu' furba...

    correggi cosi':
    Codice PHP:
    if (isset($_GET['start']) && $_GET['start']!="")
        
    $start $_GET['start'];
    else
        
    $start 0
    Cosi' la variabile avrà sempre il vlore giusto e non userai una variabile che non esiste.....
    per dubbi sono qua
    No pvt per sollecitare risposte, grazie.

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    10
    Grandioso! Anche io avevo pensato di includere nell'if ma ancora non avevo provato.
    Grazie mille ragazzi per l'attenzione, come inizio su HTML.it direi che non c'è male, siete stati davvero gentili e disponibili.

    Ragazzi nessuno di voi ha i file della Guida PHP di Base che erano qui fino a pochi giorni fa? L'avevo presa a riferimento e mi stavo trovando bene... non posso aspettare fino al 12.

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    867
    Figurati, è un piacere aiutare gente cosi' entusiasta
    No pvt per sollecitare risposte, grazie.

  8. #8
    Utente di HTML.it L'avatar di luke83
    Registrato dal
    Jul 2000
    Messaggi
    1,217
    io intendevo fare una cosa simile (abbastanza equivalente):

    Codice PHP:
    $start 0// mi paro da qualsiasi inconveniente

    if (isset($_GET['start']) && $_GET['start']!="")
        
    $start $_GET['start']; // se passo un valore tanto meglio 
    dei notice spesso si arriva all'esasperazione per questo consigliavo di disabilitarli.. spesso fanno avvilire per delle bazzecole..

    ..::Luca::..
    » "se nn riesci a venirene a capo.. usa il tasto INVIO" © 2005 Luke83
    » "letta la documentazione, spazio all'immaginazione.." © 2006 Luke83
    [frasi random] - [Lucopedia] - [laFetta]

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    867
    Ci tengo a sottolineare per chiarezza che il notice non compariva perchè $start non era dichiarata, infatti inizializzarla a 0 è di per se inutile.... ma perchè si cercava di copiare $_GET['start'] dentro a $start in un momento in cui $_GET['start'] non esisteva.....

    Per quanto riguarda i notice io trovo che insegnino molto, e soprattutto il codice che scrivi con i notice attivi andrà bene su tutti i server.... senza rischiare di doverlo correggere se sposti il sito su un server con i notice attivi......

    Tutto ciò solo per chiarezza

    No pvt per sollecitare risposte, grazie.

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    10
    Originariamente inviato da afurly
    Ci tengo a sottolineare per chiarezza che il notice non compariva perchè $start non era dichiarata, infatti inizializzarla a 0 è di per se inutile.... ma perchè si cercava di copiare $_GET['start'] dentro a $start in un momento in cui $_GET['start'] non esisteva.....

    Per quanto riguarda i notice io trovo che insegnino molto, e soprattutto il codice che scrivi con i notice attivi andrà bene su tutti i server.... senza rischiare di doverlo correggere se sposti il sito su un server con i notice attivi......

    Tutto ciò solo per chiarezza

    Concordo, infatti da quel che ho capito i notice non sono errori veri e propri e lo script funziona ugualmente, tuttavia dal punto di vista didattico insegnano molto come in questo caso in riferimento al fatto che inizializzavo $start con $_GET['start'] pur non essendo quest'ultimo inizialmente definito.

    In pratica con l'if abbiamo messo l'inizializzazione a zero dello $start nella condizione else anicipando in if la verifica dell'esistenza del $_GET['start']. Una cosa non mi è chiara, a cosa serve mettere in AND con $_GET['start']!="" ?
    A cosa equivale scrivere ="" ?

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.