Errori in una pagina php

  • Creatore Discussione Creatore Discussione newanfa
  • Data di inizio Data di inizio

newanfa

Utente Attivo
12 Mag 2010
131
0
0
Salve grandi amici miei. Sto impazzendo da giorni. Sto seguendo un corso denominato "Webmaster avanzato siti con PHP". In pratica il corso alla fine aiuta a costruire un database di libri con la possibilità di aggiungere o rimuovere dei nuovi ecc...

Alla creazione della pagina "Ricerca" che è la pagina che dovrebbe dare all'utente la possibilità di cercare un titolo o una parola all'interno del database mi escono questa serie di errori. Non so cm'è...Eppure ho fatto copia/incolla del codice del file del corso.
Ecco il link della pagina con gli errori che mi da.

http://img19.imageshack.us/img19/9004/errorejr.jpg

Aiutatemi vi scongiuro!!!

Come server locale uso XAMPP perchè siccome ho windows 7 con easyPHP avevo problemi!
Grazie

Ahhh dimenticavo!!!
Questo è il codice:
Codice:
<html>
<head> echo "<td>$array[lib_tit]</td> ";
<title>Estrazione record</title>
</head>
<body bgcolor="#99CCCC">
<table width="750" bgcolor="#666666" align="center" cellpadding="0" cellspacing="5" border="0">
<tr>
<td>
<div align="center"><h1><font color="#FFFFFF">LIBRI TROVATI</font></h1></div>
<br>
</td>
</tr>
</table>
<br>
<table bgcolor="#FFFFCC" border="1" cellpadding="4" cellspacing="0" width="750" align="center">
<?php
$cerca2=$_POST["cerca"];
$cerca2=trim($cerca2);
include("mysql.php");
$dati = mysql_query("select lib_id, lib_tit, lib_aut from libri where lib_tit LIKE '%".$cerca2."%' OR lib_aut LIKE '%".$cerca2."%'" );
while ($array = mysql_fetch_array($dati))
{
echo "<tr>";
echo "<td>$array[lib_tit]</td> ";
echo "<td><a href=\"06_dettagli.php?id=$array[lib_id]\">dettagli</td> ";
echo "</tr>";
}
mysql_close();
?>
</table>
</body>
</html>
 
ciao! che problemi avevi con easyphp??
comunque principalmente ci sono 2 errori, in ordine:
1.qui:
PHP:
<head> echo "<td>$array[lib_tit]</td> ";
<title>Estrazione record</title>
</head>
dopo il tag <head> devi indicare che stai iniziando col php,quindi metti <? e poi ?> prima di </head>.Inoltre la echo scritta cosi non funziona,vedrai scritto "$array[lib_tit]",come gia puoi vedere.scrivi cosi
PHP:
echo "<td>".$array['lib_tit']."</td>";
in questo modo hai "testo"+variabile+"testo" (in php il punto è una congiunzione!) .Lo stesso errore devi correggerlo verso la fine della pagina..

2.non trova il file che effettua la connessione al database. quindi in include("mysql.php") O il percorso è sbagliato, O mysql.php non esiste. hai detto che il codice l'hai copiato, magari nella guida trovi il codice di mysql.php separatamente..

ciao!
 
Grazie in anticipo per le dritte...ma ti dico che gli errori rimangono e pure il fatto che si vede echo "$array[lib_tit] "; in alto a sinistra!

Ma tu non hai la possibilità di provarlo il mio codice?

P.S. ma il comando include("mysql.php") che fà? Cioè quel file dove lo dovrei avere? E se non lo tengo come dovrebbe essere composto?
 
Ciao nephilim89. Grazie ancora per le dritte! Senti, per la maggiorparte degli errori mancava il file mysql.php che non avevo letto bisognava crearlo a parte. Un'ultima cosa. Per il fatto che usciva echo "$array[lib_tit] ";in alto a sinistra, anche modificandolo come hai detto tu usciva. Ma senti una cosa...secondo te non è un errore? Secondo me nello scrivere il codice lo hanno riportato ma li dove sta a mio avviso non ha nessun valore. Infatti se lo tolgo proprio funziona! Mi potresti dare certezza di questo? Grazie
 
ciao! allora la funzione include serve a "includere" nel tuo file,un altro file! in modo da poter usare le sue funzioni e le sue variabili. nel tuo caso tu includi quel mysql.php, che presuppongo faccia la connessione al database.
poi quell echo all'inizio della pagina non può funzionare perchè non esiste ancora $array[lib_tit] , in quanto viene creata all'interno del while + in basso. in ogni caso dovrebbe darti un messaggio che ti dice che la variabile non esiste,oppure non farti vedere niente!
se ti esce proprio la scritta $array[lib_tit] significa che stai scrivendo una stringa con la echo,usando male gli apici ".

se tu scrivi:
PHP:
echo "<td>";
echo $array[lib_tit];
echo "</td>";
è la stessa cosa di scrivere:
PHP:
echo "<td>".$array[lib_tit]."</td>";
l'importante è che gli apici delimitino un testo che deve comparire nella pagina html, e che invece le variabili siano senza apici.
poi ti ripeto,all'inizio della pagina non potrai mai vedere il valore di $array[lib_tit] dato che viene creata nel while.quindi questo discorso è per la echo che hai in fondo.

se hai ancora problemi posta tutto il codice.fammi sapere!
 
Guarda ti ricapitolo il tutto. Il problema che non trovava il file.php l'ho risolto! Ora funziona tutto alla perfezione tranne che in alto a sinistra compare il solito errore come puoi vedere dall'immagine:
errorea.jpg
.

Tale errore compare sia con il mio codice originale sia con le tue correzioni.

Ti chiedo:
1) Qual'è il significato e la funzione di quell'eco nell'HEAD? Non è che è un errore e non ci deve essere? Perchè se tolgo quello, l'errore scompare!

Ti riposto il codice completo:
<html>
<head> echo "<td>$array[lib_tit]</td>";
<title>Estrazione record</title>
</head>
<body bgcolor="#99CCCC">
<table width="750" bgcolor="#666666" align="center" cellpadding="0" cellspacing="5" border="0">
<tr>
<td>
<div align="center"><h1><font color="#FFFFFF">LIBRI TROVATI</font></h1></div>
<br>
</td>
</tr>
</table>
<br>
<table bgcolor="#FFFFCC" border="1" cellpadding="4" cellspacing="0" width="750" align="center">
<?php
$cerca2=$_POST["cerca"];
$cerca2=trim($cerca2);
include("mysql.php");
$dati = mysql_query("select lib_id, lib_tit, lib_aut from libri where lib_tit LIKE '%".$cerca2."%' OR lib_aut LIKE '%".$cerca2."%'" );
while ($array = mysql_fetch_array($dati))
{
echo "<tr>";
echo "<td>$array[lib_tit]</td>";
echo "<td><a href=\"06_dettagli.php?id=$array[lib_id]\">dettagli</td> ";
echo "</tr>";
}
mysql_close();
?>
</table>
</body>
</html>

Grazie
 
non funziona perchè devi aprire il php!
NON:
PHP:
<head> echo "<td>$array[lib_tit]</td>";
MA:
PHP:
<head>
<?php 
echo "<td>".$array[lib_tit]."</td>";
?>

echo serve unicamente a stampare del testo o i valori delle variabili. ma comunque nell'head non ci sta a fare niente. 1. perchè nell'head non si mette del testo, 2. perchè cmq la variabile è vuota.

quindi toglila e basta!
 
Ultima modifica:
Quindi secondo te, leggendo il mio codice, quella nell'HEAD sarà stato un errore di stampa np?. QUindi la posso tranquillamente togliere?
Dammi l'ultima conferma. Ciao e grazie 1000!
 
Ciao nephilim89, ho bisogno ancora del tuo grande aiuto!
Ho completato quel famoso corso che ti dicevo che non fa altro che creare in php delle pagine che ti permettono di inserire dei libri in unDB e ti da la possibilità di eliminarli o modificarli.

Alla fine però mi rendo conto che il tutto non funziona come dovrebbe...Ti dico gli errori:
1) In pratica io inserisco il titolo, l'autore, il prezzo e la descrizione tramite il file php "02_formInse". Tutto ok. Mi esce la pagina di conferma "03_inse.php" che mi dice quello che ho inserito con tutti i dettagli. Poi clicco -visualizza tutti i libri- che mi porta nella pagina "01_estrazione.php" che mi mostra l'aggiornamento di tutti i miei libri. Quando da questa pagina clicco su -dettagli- o -modifica- che mi portano rispettivamente alle pagine "06_dettagli.php" e "07_modifica.php" non mi compare la descrizione dei libri.

2)Nella pagina 06_dettagli mi esce questo errore boleano :"Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\fabio\06_dettagli.php on line 23"

3)Nella pagina 07_modifica mi esce questo errore:"Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\fabio\07_modifica.php on line 25"

4)nella pagina 10_estrpag mi esce questo errore:"Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\fabio\10_estrpag.php on line 27"

Mi aiuti per favore???Ti scongiuro!!!


Per una tua migliore comprensione ti scrivo i file zip che contiene tutte le pagine php casomai ti serve! Grazie in anticipo.
 

Allegati

Quando clicchi su dettagli o modifica assicurati che il parametro id sia valorizzato sulla url. La pagina 06_dettagli.php recupera in get tale parametro e poi effettua la select da DB. Probabilmente la select non va a buon fine.
Controlla sul DB se i campi lib_id della tabella libri sono correttamente valorizzati.
 
nella pagina 03 c'è un errore nella query: per lib_desc viene preso il valore di $descrizione, che non esiste. La variabile giusta si chiama $desc, come puoi vedere all'inizio della pagina.
quindi avviene che la query inserisce tutti gli altri valori nel database ma NON descrizione,che viene lasciato vuoto. Per questo motivo in 06_dettagli e 07_modifica non vedi la descrizione.

in 08_modifica non c'è $id. quindi la select non funziona e non viene modificato niente!

modificalo poi vedi se anche gli altri errori ci sono ancora, perchè a me non ne da altri!
 
Ultima modifica:
Ci siamo quasi.
Nella 03 ho modificato $descrizione con $desc. Nella 08 ho aggiunto $id = $_POST["id"];. Ora le modifiche funzionano tutte.

Rimangono però gli errori delle pagine 06-07-10 nelle quali compare rispettivamente l'errore:
"Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\fabio\06_dettagli.php on line 23"

"Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\fabio\07_modifica.php on line 25"

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\fabio\10_estrpag.php on line 27".

Da che dipende?

P.s: Se ti può servire il mio db si chiama corso, ha una tabella di nome libri ed ha 5 campi:lib_id(chiave primaria), lib_aut, lib_tit, lib_prezzo, lib_desc
 
The error and logging functions allows error handling and logging.

The error functions allow users to define error handling rules, and modify the way the errors can be logged.

The logging functions allow users to log applications and send log messages to email, system logs or other machines.
 
innanzittutto puoi provare a verificare che la query venga eseguita facendo cosi:
PHP:
if ( $dati = mysql_query("select * from libri where lib_id = $id "))
{
//il resto del codice
}

poi è sempre meglio essere precisi con la sintassi delle query,cioè:
-parole "chiave" tipo select,from,where MAIUSCOLI
-i valori tra apici singoli
-i nomi dei campi e delle tabelle tra apici inversi `libri`
quindi
PHP:
mysql_query("SELECT * FROM `libri` WHERE `lib_id` = '$id' ")

prova cosi!
 
Gli errori della pagina 6 e 7 risolti. Ora mi rimane l'errore della pagina 10 che nonostante abbia modificato come hai detto tu mi rimane.

Alla pagina 10 ho modificato la stringa così:
$limiteQuery = mysql_query("SELECT `lib_id`, `lib_tit` from `libri` LIMIT '$prRec', '$perPagina' ");

ma mi da sempre questo errore:
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\fabio\10_estrpag.php on line 27.
 
altro errore di variabili. $prRec non esiste!

il corso che hai scelto è veramente fatto male! cercatene un altro, ce ne sono un infinità sul php + mysql
 
se mysql_fetch_array() ti da un errore, è probabile che questo stia in mysql_query, prova così aggiungendo un mysql_error() per rilevare gli errori
 
Ciao gentilissimo nephilim89.
Mi hai detto che $prRec non esiste! Ma ora non so che fare. Guarda, se fosso ulteriormente approfittare della tua gentilezza ti allego il file del corso per la creazione della pagina 10.
Perchè vorrei risolvere il problema in quanto ho finito il corso e mi manca la pagina più importante. Grazie ciao
 

Allegati

Discussioni simili