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

Discussione: Errore script php

  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    150

    Errore script php

    Ciao a tutti

    Stavo leggendo la guida php-mysql presente sul sito, piu precisamente sono arrivato a questo punto: http://php.html.it/guide/lezione/228...egli-articoli/

    Nello specifico ho semplicemente creato un db con phpmyadmin, con un script php ho creato la tabella news contenente 5 campi.
    Con lo script insert.php inserisco tramite form e motodo post degli articoli nel db.

    Ora con il codice seguente voglio stampare gli ultimi 5 articoli inseriti in ordine di tempo:

    <?php

    include "top_foot.inc.php";
    include "config.inc.php";
    echo 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 db.Verificare i parametri nel file config.inc.php");
    $query="SELECT id,data,titolo FROM news ORDER BY data DESC LIMIT 0,5";
    $result= mysql_query ($query, $db);
    while ($row=mysql_fetch_array ($result))
    {
    echo "".date("j/n/y",$row[data])." - $row[titolo]
    ";
    }
    mysql_close ($db);
    echo foot();
    ?>

    i primi 2 include li ho gia usati negli altri file e sono per forza corretti.
    Pero' eseguendo lo script mi da il seguente errore:


    Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in C:\xampplite\htdocs\es\index.php on line 3

    Ci sto sbattendo sopra la testa da un po non capisco dove sia l'errore. Sembrerebbe esserci un errore negli include ma essendo che li ho usati e senza problemi in un altro script non capisco a cosa si riferisca l'errore.
    Potreste aiutarmi a capire dove sta la magagna?

    ciao

  2. #2
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478
    Aggiungi dei backslash in questa stringa

    echo "<a href=\"view.php?id=$row[id]\">".date("j/n/y",$row[data])." - $row[titolo]</a>
    ";

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    150
    mannaggia, grazie risolto

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    150
    Potreste aiutarmi anche su questo script?
    E' praticamente il link (view.php) a cui si riferisce lo script sopra postato.

    Il codice e':

    view.php
    <?
    include "top_foot.inc.php";
    include "config.inc.php";

    echo top();

    $db=mysql_connect ($db_host, $db_user, $db_password);

    if ($db == FALSE)
    die ("Errore durante la connessione. Verificare i parametri nel file config.inc.php");

    mysql_select_db ($db_name, $db)
    or die ("Errore nella selezione del db. Verificare i parametri nel file config.inc.php");

    $query="SELECT titolo,testo,data,autore,mail FROM news WHERE id='$id'";

    /* Ricaviamo i dati e li visualizziamo*/

    $result = mysql_query ($query,$db);
    $row=mysql_fetch_array ($result);
    $data= date ("j/n/y",$row[data]);
    echo "
    $row[titolo][/b]

    ";
    echo "$row[testo]

    ";

    if ($row[mail]!= "")
    echo "$data, <a href=mailto:$row[mail]>$row[autore]</a>
    ";
    else
    echo "$data, $row[autore]
    ";

    echo "
    <a href=index.php>Torna alla pagina iniziale</a>
    ";
    echo "<a href=all.php>Visualizza tutti gli articoli</a>
    ";

    mysql_close($db);
    echo foot();


    ?>

    Ora all'esecuzione, mi visualizza:

    FREE:IT (il contenuto di include foot_inc.php)


    1/1/70 (per ogni articolo esce questa data)

    Torna alla pagina iniziale //link inserito nel codice
    Visualizza tutti gli articoli //link inserito nel codice

    Ora l'errore penso di averlo capito in parte, ovvero secondo me le variabili quali $id sono vuote.
    Infatti la data stampa quella predefinita(la stessa per tutti gli articoli) no nmi visualizza titolo email etc.
    Da phpmyadmin ho controllato il db ed e' pieno. La pagina postata prima e' corretta e mi visualizza gli articoli in modo corretto.

    Io uso php5, e penso ci sia un prob di variabili, ma non so come passargliele al file view.php.
    Avessi avuto un form con metodo post, avrei aperto il file view.php con stringhe del tipo:

    $titolo=$_POST['titolo'];

    Ma in questo caso come faccio (Sempre che cio' che ho detto sia vero, ovvero un problema di variabili non passate correttamente) partendo dal link:

    echo "<a href=\"view.php?id=$row[id]\">".date("j/n/y",$row[data])." - $row[titolo]</a>
    ";

    visto nel primo post?

    (e' sempre l'esempio della guida di html.it)

    ciao a tutti

  5. #5
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478
    Il tutorial che stai seguendo è abbastanza datato e non tiene conto di alcune variazioni sul modo di recuperare i dati inviati attraverso gli array $_POST e $_GET. Penso tu debba modificare tutte le variabili che invii sia tramite link, recuperandole con $_GET che quelle provenienti dal form, con $_POST.

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    150
    perfetto non avevo pensato a $_GET per i link (ovviamente leggendo i dati dopo il ? nell'URL , $_GET e' l'ideale)

    Inserito

    $id=$_GET ['id'];

    e si e' risolto tutto

    grazie ancora, in caso di ulteriori dubbi riposto magari ok?

    p.s.
    non sarebbe una buona idea cambiare lo script della guida?per chi si avvicina a php ora potrebbe essere un ostacolo trovarsi di fronte a una guida 'datata'.
    Se interessa lo script completo e aggiornato lo sto riscrivendo io quindi, in caso fatemi sapere


  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    150
    Altra pagina sempre della guida in cui c'e un errore anche se non riesco ben a capire dove (premetto che son ore che son sopra questo testo , inizio a dare i numeri).
    Il codice e':

    all.php
    ?
    include "top_foot.inc.php";
    include "config.inc.php";

    echo top();

    $start=$_GET ['start'];
    $db=mysql_connect ($db_host, $db_user,$db_password);

    if ($db==FALSE)
    die ("Errore nella connessione del db.Verificare i dati nel file config.inc.php");

    mysql_select_db ($db_name, $db)
    or die ("Errore nella selezione del db.Verificare i dati nel file config.inc.php");

    /* Il primo articolo da visualizare sara' memorizzato in una variabile che passeremo alla pagina con il metodo get.
    Se questa non viene passata assumiamo questo valore uguale a zero,quindi visualizzeremo gli ultimi articoli.
    Impostiamo inoltre il numero di articoli da visualizzare contemporaneamente a 20:*/

    if ( isset($start) || $start<0 )
    $start=0;

    $step=20;

    $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>
    ";
    }

    /*infine dobbiamo creare il link per accedere alle pagine successive.
    Per posizionare i link nella pagina,li inseriamo all'interno di una tabella.
    */
    ?>




    <table width=90% border =0><tr>
    <td width=20% align=left>

    <?
    /* Abbiamo cosi creato una tabella che conterra' 3 celle.ça prima, quella piu a sinistra,
    conterra' il link per tornare alla pagina precedente, se esiste*/
    if ($start>0)
    {
    $start_back=$start - $step;
    echo "<a href=all.php?start=$start_back>precedenti</a>";
    }
    ?>
    </td>
    <?

    /* Prima di inserire il link alla pagina successiva,creiamo una sorta di indice
    con tutte le pagine elencate e numerate.Questo permettera' all'utente di
    accedere rapidamente ad articoli distanti da quelli attualmente visualizzati.
    Prima di tutto per abbiamo bisogno di sapere quanti sono gli articoli inseriti
    nel db. Inseriamo quindi l'apposita query: */

    $query="SELECT count(*) AS tot FROM news";
    $result=mysql_query ($query, $db);
    $row=mysql_fetch_array($result);

    /* Quindi il numero totale di articoli sara' contenuto in $row[tot]
    Vadiamo a questo punto in quante pagine sara' suddiviso il risultato*/

    $pages=intval (($row[tot]-1)/ $step)+1;

    /* A questo punto possiamo creare i link,uno per ogni pagina,all'interno della
    cella centrale della tabella.*/

    ?>
    <td width=60% align=center>
    <?
    for ($i=0; $i<$pages && $i<20; $i++)
    {
    $start_page=$i*$step;
    echo "<a href=all.php?start=$start_page>".($i+1)."</a>";
    }
    ?>
    </td>

    /* Infine possiamo inserire il link alla pagina successiva. Prima pero
    dobbiamo verificare che questa pagina esista e che non porti a pagine vuote.*/

    <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>";

    echo foot();


    ?>

    QUando eseguo il file mi viene in output:

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\xampplite\htdocs\es\all.php on line 28


    /* Infine possiamo inserire il link alla pagina successiva. Prima pero dobbiamo verificare che questa pagina esista e che non porti a pagine vuote.*/
    1

    strano mi venga fuori il commento pure..mi pare le parentesi siano tutte ok.
    E non capisco il warning sulla fetch mi pare corretta.
    cliccando 1 invece mi pare reindirizzi alla pagina corretta con tutti gli articoli fino a quel momento inseriti.

    Riuscite a vederci chiaro voi?

    ciao

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    150
    Ho trovato la magagna..

    if (! isset($start) ..


    mancava il !

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    150
    altro dubbio sempre sullo script della guida pratica php/mysql presente su html.it:

    faccio un file search.php che prende in input una parola (name="chiave)" e invia il tutto con post alla seguente pagina:

    <?php

    include "top_foot.inc.php";
    include "config.inc.php";

    echo top();

    $chiave=$_POST['chiave'];
    $db=mysql_connect ($db_host, $db_user,$db_password);

    if ($db==FALSE)
    die ("Errore nella connessione col db.");

    mysql_select_db($db_name,$db)
    or die ("Errore nella selezione del db");

    /* PEr prima cosa dovremmo suddividere la stringa nelle chiavi da ricercare.
    Supporremo che le diverse chiavi siano separate da virgole.*/

    $keys=explode (",",$chiave); /* spezzato la stringa keys in
    corrispondenza di ogni virgola, e abbiamo suddivisio i frammenti all'interno
    di $keys*/

    $query="";
    reset ($keys);
    while(list(,$parola)=each ($keys))
    {
    $parola=trim($parola);
    if ($parola != "")
    query.="titolo LIKE '%$parola%' || testo LIKE '%$parola%' || autore LIKE '%$parola%' ||";
    } // while
    $query.="0";

    $query="SELECT id,titolo,data FROM news WHERE ".$query;

    $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>
    ";

    } // while

    echo foot();
    }

    Mi da il seguente errore:

    Parse error: syntax error, unexpected T_CONCAT_EQUAL in C:\xampplite\htdocs\es\result.php on line 34

    sospetto riguardi il ciclo while each (obsoleto , ma in caso come lo si sostituisce con un semplice foreach? ) ma non capisco dove, aiutatemi pls



  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    150
    scusate lo uppo solo perche' ho aggiunto un altra domanda con edit e se qualcuno mi aveva gia risp magari non rileggeva il post

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.