Pagina 1 di 1

Errore apache

Inviato: mar 6 mar 2012, 16:15
da RedSkull92
Ho bisogno di una mano.
Ho appena avviato httpd e ho abilitato php nel file di configurazione, se provo un semplice

Codice: Seleziona tutto

<?php
echo "ciao";
?>
Funziona tutto perfettamente.

Devo fare un esercizio e ho creato un db su mysql contenente questi campi:

mysql> SELECT * FROM prodotti;
+----+---------------+-------------------------------+--------+
| id | nome | descrizione | prezzo |
+----+---------------+-------------------------------+--------+
| 1 | Penna Bic | Normalissima penna bic | 2 |
| 2 | Penna Parker | Una bellissima penna parker | 31 |
| 3 | Gomma Pelikan | Una banalissima gomma pelikan | 0.5 |
+----+---------------+-------------------------------+--------+
e ho creato la pagina cerca.php

Codice: Seleziona tutto


<?php
if(isset($_POST['cerca']))
{
    //Dati
    $db_host = "localhost";
    $pass = "***";
    $user = "root";
    $db = "azienda";

    //Connessione
    $conn = mysql_connect($db_host,$user,$pass) || die("Impossibile stabilire una connessione con il database");
    
    mysql_select_db($db,$conn) || die("Impossibile usare il database.");
    
    $query = "SELECT descrizione FROM prodotti WHERE nome LIKE %$_POST['cerca']%";

    $ris = mysql_query($query,$conn) || die("Errore nella query");
    
    if(count($ris) > 0)
    {
        while($riga = mysql_fetch_assoc($ris))
            echo "Risultato: $riga['descrizione']</br>";
    }
    else
        echo "Nessun elemento trovato</br>"
    
    mysql_close($conn);
}
?>
e l'index

Codice: Seleziona tutto

<html>
    <head>
        <title>Ricerca articoli</title>
    </head>
    <body>
        <form action="cerca.php" method="post">
            Keywords: <input type="text" name="cerca" /></br>
            <input type="radio" name="tipo" value="0" /> Descrizione <input type="radio" name="tipo" value="1" /> Prezzo</br>
            <input type="submit" name="send" value="Cerca" />
        </form>
    </body>
</html>
Ma una volta avviato il submit il server mi restituisce errore 500.
Cosa sbaglio ?

Re: Errore apache

Inviato: mar 6 mar 2012, 16:36
da RedSkull92
Ho tolto tutto il codice e il problema sembra essere nel mysql_select_db.
ecco i database in mysql
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| azienda |
| mysql |
+--------------------+
3 rows in set (0.00 sec)
Dove sbaglio ?

Re: Errore apache

Inviato: mar 6 mar 2012, 16:40
da targzeta
Se il server gira in locale puoi settare la visualizzazione degli errori impostando:

Codice: Seleziona tutto

error_reporting  =  E_ALL
display_errors = On
controlla che siano decommentate nel file /etc/httpd/php.ini. Questo dovrebbe aiutarti a capire l'errore.

Emanuele

Re: Errore apache

Inviato: mar 6 mar 2012, 16:45
da RedSkull92
Mi restituisce:
Warning: mysql_select_db() expects parameter 2 to be resource, boolean given in /var/www/htdocs/cerca.php on line 13

Re: Errore apache

Inviato: mar 6 mar 2012, 16:53
da targzeta
Quindi la connect non funziona e ti restituisce FALSE. Inoltre il costrutto '|| die...' evidentemente non funziona.

Emanuele

Re: Errore apache

Inviato: mar 6 mar 2012, 16:57
da RedSkull92
Ho modificato il source

Codice: Seleziona tutto

<?php
if(isset($_POST['cerca']))
{
    //Dati
    $db_host = "localhost:3306";
    $pass = "****";
    $user = "root";
    $db = "azienda";

    //Connessione
    $conn = mysql_connect($localhost,$user,$pass) || die("Impossibile stabilire una connessione con il database\n".mysql_error());
    
    $lol = mysql_select_db($db,$conn) ||  die("Errore: ".mysql_error());

    $query = "SELECT descrizione FROM prodotti WHERE nome LIKE %$_POST['cerca']%";

    $ris = mysql_query($query,$conn) || die("Errore nella query");
    
    if(count($ris) > 0)
    {
        while($riga = mysql_fetch_assoc($ris))
            echo "Risultato: $riga['descrizione']</br>";
    }
    else
        echo "Nessun elemento trovato</br>"
    
}
?>
mi restituisce
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /var/www/htdocs/cerca.php on line 15

Re: Errore apache

Inviato: mar 6 mar 2012, 17:10
da targzeta
Cavolo, pensavo di aver risposto!! Che fine ha fatto la mia risposta ???

Comunque, dicevo che evidentemente la connect non funziona e ti restituisce FALSE invece di una risorsa. Il costrutto '|| die' non funziona perché l'assegnamento ' $conn=mysql_connect()' va a buon fine.

Prova a verificare se username e pass sono corrette, lancia mysql da linea di comando passandogli esattamente gli stessi dati.
Emanuele

Re: Errore apache

Inviato: mar 6 mar 2012, 17:31
da RedSkull92
in mysql_connect ho inserito direttamente i dati (senza metterli in variabili) e ora funziona.

Codice: Seleziona tutto

<?php
    $link = mysql_connect('localhost:3306', 'root', '***');	
    if (!$link) {
       die('Not connected : ' . mysql_error());
    }

    // make foo the current db
    $db_selected = mysql_select_db('azienda', $link);
    if (!$db_selected) {
       die ('Can\'t use foo : ' . mysql_error()); 
    } 
    echo $_POST['cerca'];
    $cq= mysql_query("SELECT descrizione FROM prodotti WHERE nome LIKE '%".$_POST['cerca']."%'");
    while($ris=mysql_fetch_assoc($cq))
    {
        echo $ris['descrizione']."</br>";
    }

?>

Re: Errore apache

Inviato: mar 6 mar 2012, 17:35
da targzeta
RedSkull92 ha scritto:Ho modificato il source

Codice: Seleziona tutto

<?php
if(isset($_POST['cerca']))
{
    //Dati
    $db_host = "localhost:3306";
    $pass = "****";
    $user = "root";
    $db = "azienda";

    //Connessione
    $conn = mysql_connect($localhost,$user,$pass) || die("Impossibile stabilire una connessione con il database\n".mysql_error());
L'errore è qui. Setti $db_host ma usi $localhost. Inoltre, usa sempre l'apice singolo per le stringhe che non devono essere valutate.

Emanuele

Re: Errore apache

Inviato: mar 6 mar 2012, 20:17
da RedSkull92
Perfetto, ora va.
Grazie per i chiarimenti.