Errore apache

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
RedSkull92
Linux 3.x
Linux 3.x
Messaggi: 567
Iscritto il: mar 21 apr 2009, 17:25
Slackware: 64bit -current
Kernel: 3.5.4
Desktop: FluxBox
Località: Palermo
Contatta:

Errore apache

Messaggio 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 ?

Avatar utente
RedSkull92
Linux 3.x
Linux 3.x
Messaggi: 567
Iscritto il: mar 21 apr 2009, 17:25
Slackware: 64bit -current
Kernel: 3.5.4
Desktop: FluxBox
Località: Palermo
Contatta:

Re: Errore apache

Messaggio 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 ?

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6629
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: Errore apache

Messaggio 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
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Avatar utente
RedSkull92
Linux 3.x
Linux 3.x
Messaggi: 567
Iscritto il: mar 21 apr 2009, 17:25
Slackware: 64bit -current
Kernel: 3.5.4
Desktop: FluxBox
Località: Palermo
Contatta:

Re: Errore apache

Messaggio 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

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6629
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: Errore apache

Messaggio da targzeta »

Quindi la connect non funziona e ti restituisce FALSE. Inoltre il costrutto '|| die...' evidentemente non funziona.

Emanuele
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Avatar utente
RedSkull92
Linux 3.x
Linux 3.x
Messaggi: 567
Iscritto il: mar 21 apr 2009, 17:25
Slackware: 64bit -current
Kernel: 3.5.4
Desktop: FluxBox
Località: Palermo
Contatta:

Re: Errore apache

Messaggio 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

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6629
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: Errore apache

Messaggio 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
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Avatar utente
RedSkull92
Linux 3.x
Linux 3.x
Messaggi: 567
Iscritto il: mar 21 apr 2009, 17:25
Slackware: 64bit -current
Kernel: 3.5.4
Desktop: FluxBox
Località: Palermo
Contatta:

Re: Errore apache

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

?>

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6629
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: Errore apache

Messaggio 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
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Avatar utente
RedSkull92
Linux 3.x
Linux 3.x
Messaggi: 567
Iscritto il: mar 21 apr 2009, 17:25
Slackware: 64bit -current
Kernel: 3.5.4
Desktop: FluxBox
Località: Palermo
Contatta:

Re: Errore apache

Messaggio da RedSkull92 »

Perfetto, ora va.
Grazie per i chiarimenti.

Rispondi