Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    176

    Problema ad incominciare ad usare PHP + MySQL

    Ciao a tutti!
    Sto cercando di imparare a gestire l'accoppiata "Php + MySQL" ma sto avendo dei seri problemi! So che è un problema molto dibattuto ma pur avendo cercato sul forum nn riesco a capire dove sbaglio. Ho seguito la guida su FreePhp.it ma al momento di testare il tutto mi appare questo errore:
    FREEPHP.IT

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in h:\dangelabs_webtest\test\index.php on line 12
    Io ho copiato esattamente il codice che compare nella guida! Qualcuno sa aiutarmi?
    Grazie!

  2. #2
    Non so a quale esempio tu ti riferisca ma è sbagliata la query (una select, avendo utilizzato mysql_fetch_array) che invii a mysql.

    Nel tuo codice probabilmente ci sarà una prima stringa dove scrivi la query, qualcosa del tipo:
    $query = "SELECT Bla Bla Bla FROM Bla WHERE Bla Bla";

    Poi ci sarà l'esecuzione della query:
    $risultato = mysql_query($query);

    n.b. potrebbe esserci anche una sola riga tipo $risultato = mysql_query("SELECT Bla Bla Bla FROM Bla WHERE Bla Bla");

    Una volta che hai a disposizione il risultato con la query, la scorri con mysql_fetch_array, ad esempio con:
    list($var1, $var2) = mysql_fetch_array($risultato);



    Quando hai un errore di questo tipo (query errata) la prima cosa che ti conviene fare è stamparti a video la query.

    Utilizza il comando die($query); da inserire subito dopo la scrittura della query.

    Una volta che posti la query forse qualcuno saprà darti qualche indicazione più precisa su come risolvere l'errore.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    176
    Dunque, questo post sarà un po' lunghetto ma è per essere il + chiari possibile..
    La guida a cui mi riferisco è la "Guida pratica Php/MySQL"
    Ho seguito la guida passo passo creando i seguenti files:

    config.inc.php

    con il seguente codice:
    codice:
    // parametri del database
    $db_host = "localhost";
    $db_user = "user";
    $db_password = "password";
    $db_name = "test";
    //password per inserimento articoli
    $password = "";
    ?>
    Ho notato che manca il "<?" all'inizio del codice ma nn so se è un errore.. cmq, andiamo avanti..

    install.php

    codice:
    include("config.inc.php");
    $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");
    $query = "CREATE TABLE news (id INT (5) UNSIGNED not null AUTO_INCREMENT, titolo VARCHAR (255) not null , testo TEXT not null , data INT (11) , autore VARCHAR (50) , mail VARCHAR (50) , PRIMARY KEY (id))";
    if (mysql_query($query, $db))
    echo "L'installazione è stata eseguita correttamente";
    else
    echo "Errore durante l'installazione";
    mysql_close($db);
    ?>
    Anche in questo caso mi sembra che manchi il tag di apertura del codice Php!
    E' la volta ora di:

    top_foot.inc.php

    codice:
    <? function top() { ?>
    <HTML>
    <HEAD>
    <meta name=generator content="Script di freephp.it">
    </HEAD>
    <BODY bgcolor=ffffff text=000000>
    <font face=verdana,tahoma,arial size=-1>
    <h1>FREEPHP.IT</h1>
    
    <? }
    
    function foot() { ?>
    </body></HTML>
    <? } ?>
    Ecco ora:

    insert.php

    codice:
    <?
    include ("config.inc.php");
    include ("top_foot.inc.php");
    
    //intestazione
    top();
    ?>
    
    <form method=post action=save.php>
    Titolo:
    
    <input type=text size=40 name=titolo>
    
    
    
    Data:
    
    <select name=giorno>
    <?
    for ($i=1; $i<=31; $i++)
    echo "<option value=$i>$i";
    ?>
    </select>
    <select name=mese>
    <option value=1>Gennaio
    <option value=2>Febbraio
    <option value=3>Marzo
    <option value=4>Aprile
    <option value=5>Maggio
    <option value=6>Giugno
    <option value=7>Luglio
    <option value=8>Agosto
    <option value=9>Settembre
    <option value=10>Ottobre
    <option value=11>Novembre
    <option value=12>Dicembre
    </select>
    <select name=anno>
    <option value=2001>2001
    <option value=2002>2002
    <option value=2003>2003
    <option value=2004>2004
    <option value=2005>2005
    </select>
    
    
    
    Autore:
    
    <input type=text size=40 name=autore>
    
    
    
    E-mail:
    
    <input type=text size=40 name=mail>
    
    
    
    Testo:
    
    <textarea cols=60 rows=40 name=testo></textarea>
    
    
    
    Password:
    
    <input type=password size=40 name=pass>
    
    
    
     <input type=submit value=Invia> </form>
    <?
    // chiusura pagina
    foot();
    ?>
    E' la volta di:

    save.php
    codice:
    <? include("top_foot.inc.php");
    include("config.inc.php");
    top();
    if ($pass != $password):
    echo "Password errata";
    elseif (trim($titolo) == "" OR trim($testo) == ""):
    echo "I campi Titolo e Testo devono essere riempiti!";
    else:
    $titolo = addslashes(stripslashes($titolo));
    $autore = addslashes(stripslashes($autore));
    $mail = addslashes(stripslashes($mail));
    $testo = addslashes(stripslashes($testo));
    $titolo = str_replace("<", "&lt;", $titolo);
    $titolo = str_replace(">", "&gt;", $titolo);
    $autore = str_replace("<", "&lt;", $autore);
    $autore = str_replace(">", "&gt;", $autore);
    $testo = str_replace("<", "&lt;", $testo);
    $testo = str_replace(">", "&gt;", $testo);
    $testo = nl2br($testo);
    $data = mktime("0", "0", "0", $mese, $giorno, $anno);
    $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");
    $query = "INSERT INTO news (titolo, testo, data, autore, mail) VALUES ('$titolo', '$testo', '$data', '$autore', '$mail')";
    if (mysql_query($query, $db))
    echo "L'articolo è stato inserito correttamente";
    else
    echo "Erorre durante l'inserimento";
    mysql_close($db); endif;
    foot();
    ?>
    index.php
    codice:
    <?
    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");
    $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 "<a href=\"view.php?id=$row[id]\">" . date("j/n/y", $row[data]) . " - $row[titolo]</a>
    "; }
    mysql_close($db); foot();
    ?>
    view.php
    codice:
    <? 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");
    $query = "SELECT titolo,testo,data,autore,mail FROM news WHERE id='$id'";
    $result = mysql_query($query, $db);
    $row = mysql_fetch_array($result);
    
    $data = date("j/n/y", $row[data]);
    echo "$row[titolo]
    
    ";
    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);
    foot();
    ?>
    all.php
    codice:
    <?
    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 = 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>
    "; }
    ?>
    
    
    
    <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<20; $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();
    ?>
    search.php
    codice:
    <?
    include("top_foot.inc.php");
    include("config.inc.php");
    top();
    ?>
    <form method=post action=result.php>
    <input type=text name=chiave><input type=submit value=cerca>
    
    </form>
    <?
    foot();
    ?>
    ultimo:
    result.php
    codice:
    <?
    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");
    $keys = explode (",", $chiave);
    $query = "";
    reset ($keys);
    while (list(,$parola) = each ($keys))
    { $parola = trim($parola);
    if ($parola != "")
    $query .= "titolo LIKE '%$parola%' OR testo LIKE '%$parola%' OR autore LIKE '%$parola%' OR ";
    }
    $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>
    "; }
    foot()
    ?>
    A questo punto, dovrei già riuscire a vedere funzionare qualcosa ed invece questo è l'errore che mi dà il browser:
    codice:
    // parametri del database $db_host = "localhost"; $db_user = "user"; $db_password = "password"; $db_name = "test"; //password per inserimento articoli $password = ""; ?> 
    
    FREEPHP.IT   
    
    Errore nella selezione del database. Verificare i parametri nel file config.inc.php
    Nn capisco! Anche perchè essendo un newbie su queste cose nn so dove mettere le mani!

  4. #4
    Scusami, ma non ti seguo.

    Prima avevi scritto che ricevevi un errore di query, il che presuppone che i parametri di connessione al db siano corretti.

    Ora sei regredito, perché non stabilisci neanche la connessione al db.

    Rimettiti nelle condizioni precedenti, ossia quando ricevevi come errore: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in h:\dangelabs_webtest\test\index.php on line 12
    in quanto se compare questo errore vuol dire che la connessione al db è corretta.

    Altra cosa, quando hai eseguito install.php ti è comparsa la scritta L'installazione è stata eseguita correttamente oppure Errore durante l'installazione?
    Questo perché l'errore che hai scritto nel tuo primo post compare probabilmente perché non sei riuscito a creare la tabella.


    Ti consiglio di affrontare i problemi uno alla volta:
    1. Assicurati di stabilire la connessione a mysql (cosa che avevi ottenuto quando hai scritto il primo post ma che hai perso successivamente)
    2. Inizia ad utilizzare un programma per gestire il database: phpmyadmin è il più comune, ma in locale puoi adottare molte altre soluzioni.
    3. Controlla di aver creato correttamente la tabella news, altrimenti riesegui la query CREATE TABLE news (id INT (5) UNSIGNED not null AUTO_INCREMENT, titolo VARCHAR (255) not null , testo TEXT not null , data INT (11) , autore VARCHAR (50) , mail VARCHAR (50) , PRIMARY KEY (id))

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    176
    Al momento l'unica cosa di cui sono certo è che aprendo PhpMyAdmin vedo il database che ho creato a mano e nn con il file "install.php".
    Ho usato il metodo della query fatta eseguire direttamente da PhpMyAdmin anche perchè se faccio partire il file "install.php" così com'è, nn avendo il tag di apertura "<?" nn va, mentre se lo aggiungo mi dà il seguente errore:
    codice:
    // parametri del database 
    $db_host = "localhost"; $db_user = "user"; $db_password = "password"; $db_name = "test"; 
    //password per inserimento articoli 
    $password = ""; ?> Errore nella selezione del database. Verificare i parametri nel file config.inc.php
    Proprio nn capisco.
    Sono regredito perchè ho tolto i tag "<?" che avevo aggiunto ai vari files che mi sembravano incompleti ma che poi ho tolto per ripristinare i suddetti come appaiono nella guida.

  6. #6
    E' fuori discussione che <?PHP ?> vanno messi sia in apertura che in chiusura del codice PHP, quindi su questo non avere dubbi.

    Quanto all'errore che ti dà il file install.php è un errore di selezione del database e non di connessione (svista mia). Però è molto strano, perché stando al codice, ti dovrebbe dare lo stesso identico errore quando fai partire index, e invece quando vai su index la selezione del db avviene correttamente.

    Comunque controlla che $db_name = "test"; corrisponda effettivamente al nome del tuo database in mysql.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    176
    ho inserito i tag mancanti e ora funziona!

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    176
    Come non detto! Il database e php sicuramente si vedono ma ho dei problemi a visualizzare l'articolo di prova della news, inserito nella query con questo codice:
    codice:
    INSERT INTO news (titolo, testo, data, autore, mail) 
    VALUES ('primo articolo', 'Ecco il primo articolo', '1002664800', 'freephp.it', 'mail@html.it');
    Ecco quello che vedo:
    lucadangelo.altervista.org/freephp_php-mysql1.gif
    e questo quando clicco sull'articolo:
    lucadangelo.altervista.org/freephp_php-mysql2.gif

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    176
    up

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    176
    Per favore, nessuno può darmi un suggerimento? Ho messo i link alle 2 immagini che meglio spiegano il comportamento del browser. Nn so cosa fare! Grazie a chi mi aiuterà!

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.