Problema con versioni diverse di PHP

sarablack

Nuovo Utente
15 Apr 2008
13
0
0
Ciao a tutti. Sto studiando php per un'esame di informatica però abbiamo un libro che fa riferimento a script php di una versione precedente rispetto a quella che dobbiamo usare. Stiamo usando la versione easyphp 2.0b1 il problema è quando andiamo a fare query per i database.
ovvero nella parte id del codice.
Vi riporto una parte dell'esercizio che stavo facendo:

<HTML>
<BODY>
<?php
# see_rec.php
# include il file esterno
include ("test_holding_inc.php");

$sql="SELECT * FROM nomi WHERE ID = '$ID_record'";

$risultati_mysql=mysql_query($sql,$connessione);
$num_righe=mysql_num_rows($risultati_mysql);

if ( $num_righe == 0 ) {
echo "Spiacente, non ci sono informazioni";
} else {
# abbiamo dei risultati
echo "<TABLE ALIGN=\"CENTER\" BORDER=\"3\">";
echo "<TR><TH>nome</TH><TH>Indirizzo</TH><TH>Città</TH><TH>Paese</TH></TR>";

while ($riga=mysql_fetch_array($risultati_mysql))
{
$nome=$riga["nome"];
$indirizzo=$riga["indirizzo"];
$città=$riga["città"];
$paese=$riga["paese"];
$ID=$riga["ID"];
# mostra i risultati
echo "<TR><TD>$nome</TD><TD>$indirizzo</TD><TD>$città</TD><TD>$paese</TD></TR>";
}
} # fine dell'else
mysql_close($connessione);
?>

</TABLE>
<BR><A HREF="per_selection.php"> Indietro</A>
</BODY>
</HTML>

Nella parte $sql="SELECT * FROM nomi WHERE ID = '$ID_record'"; c'è un problema con la variabile ID perchè quando vado a testare il form mi restituisce un errore a questa riga per variabile id non definita. Cosa dovrei mettere per defirla? grazie dell'aiuto.
Sara
 
Potresti riportare il testo esatto dell'errore che ti compare ed il contenuto del file "test_holding_inc.php"?
 
Ho modificato qualcosa perchè c'erano errori il file è diventato questo:

<HTML>
<BODY>
<?php
include ("connessione mysql e database.php");

$ID_record=$_GET['ID_record'];
$sql="SELECT * FROM nomi WHERE ID = '$ID_record'";

$risultati_mysql=mysql_query($sql,$connessione);
$num_righe=mysql_num_rows($risultati_mysql);

if ($num_righe == 0) {
echo "Spiacente, non ci sono informazioni";
} else {

echo "<TABLE ALIGN=\"CENTER\" BORDER=\"3\">";
echo "<TR><TH>Nome</TH><TH>Indirizzo></TH><TH>citta</TH><TH>Paese</TH></TR>";

while ($riga=mysql_fetch_array($risultati_mysql))
{
$nome=$riga['nome'];
$indirizzo=$riga['indirizzo'];
$citta=$riga['citta'];
$paese=$riga['paese'];
$ID=$riga['ID'];

echo "<TR><TD>$nome</TD><TD>$indirizzo</TD><TD>$citta</TD><TD>$paese</TD></TR>";
}
}
mysql_close($connessione);
?>
</TABLE>
<BR><A HREF="html1pag325.php">Indietro</A>
</BODY>
</HTML>

L'errore che mi da è:
Notice: Undefined index: ID in C:\Program Files\EasyPHP 2.0b1\www\Esercizi per esame\MySQL\form1.php on line 25

Poi mi fa vedere la tabella con i dati però
 
La riga incriminata è questa:

PHP:
$ID=$riga['ID'];

Attenzione che PHP è case-sensitive, non è che nel DB il campo si chiama "id" o "Id" e non "ID" come hai scritto?

Prova a fare:

PHP:
print_r($riga);

così vediamo i nomi degli indici.
 
no è cosi, ho anche provato a metterlo minuscolo perchè non ricordavo ma se faccio così non mi da informazioni.
Io credo che il problema stia nel fatto che lo script è stato fatto su una versione vecchia di php e io ho l'ultima la 2.0b1 penso sia per questo che non mi viene giusto.
 
Puoi modificare così questa parte di codice:

PHP:
while ($riga=mysql_fetch_array($risultati_mysql))
{
$nome=$riga['nome'];
$indirizzo=$riga['indirizzo'];
$citta=$riga['citta'];
$paese=$riga['paese'];
$ID=$riga['ID'];
print_r($riga);
echo "<TR><TD>$nome</TD><TD>$indirizzo</TD><TD>$citta</TD><TD>$paese</TD></TR>";
}
 
fatto mi da cmq
Notice: Undefined index: ID_record in C:\Program Files\EasyPHP 2.0b1\www\Esercizi per esame\MySQL\form1.php on line 6
Spiacente, non ci sono informazioni
Indietro
 
La pagina 'form1.php' fa riferimento ad una variabile passata tramite GET. Quindi dovrà esserci un'altra pagina con una form che richiama questo script PHP. L'errore indica che lo script PHP è stato richiamato direttamente e quindi l'array GET è vuoto. Credo che sia da richiamare la pagina 'html1pag325.php'
e da lì ci sia poi la form, etc...
 
Si l'altro file è questo

<html>
<body>
<center><b><u><i>VISUALIZZA I RECORD DELLA TABELLA PERSONALE</i></u></b></center>
<?php
include ("connessione mysql e database.php");

$sql="SELECT nome,ID FROM nomi";
$risultati_mysql=mysql_query($sql,$connessione);
$num_righe=mysql_num_rows($risultati_mysql);
if ($num_righe == 0) {
echo "spiacente, non ci sono informazioni";
} else {
echo "<FORM METHOD=GET ACTION=\"form1.php\">";
echo "Per favore, seleziona una persona <br>";
echo "<SELECT NAME=\"ID_record\">";
while ($riga=mysql_fetch_array($risultati_mysql))
{
$nome=$riga["nome"];
$ID=$riga["ID"];
# mostra i risultati
echo "<OPTION VALUE=\"$ID\" >$nome";

}
echo "</SELECT>";
} # fine dell'else
echo "<BR><BR>";
echo "<INPUT TYPE=\"SUBMIT\" VALUE=\"Vedi le informazioni!\">";
echo "<INPUT TYPE=\"RESET\" VALUE=\"Cancella!\">";
mysql_close($connessione);
?>
</FORM>
</BODY>
</HTML>
 
Si l'altro file è questo

<html>
<body>
<center><b><u><i>VISUALIZZA I RECORD DELLA TABELLA PERSONALE</i></u></b></center>
<?php
include ("connessione mysql e database.php");

$sql="SELECT nome,ID FROM nomi";
$risultati_mysql=mysql_query($sql,$connessione);
$num_righe=mysql_num_rows($risultati_mysql);
if ($num_righe == 0) {
echo "spiacente, non ci sono informazioni";
} else {
echo "<FORM METHOD=GET ACTION=\"form1.php\">";
echo "Per favore, seleziona una persona <br>";
echo "<SELECT NAME=\"ID_record\">";
while ($riga=mysql_fetch_array($risultati_mysql))
{
$nome=$riga["nome"];
$ID=$riga["ID"];
# mostra i risultati
echo "<OPTION VALUE=\"$ID\" >$nome";

}
echo "</SELECT>";
} # fine dell'else
echo "<BR><BR>";
echo "<INPUT TYPE=\"SUBMIT\" VALUE=\"Vedi le informazioni!\">";
echo "<INPUT TYPE=\"RESET\" VALUE=\"Cancella!\">";
mysql_close($connessione);
?>
</FORM>
</BODY>
</HTML>
 
E richiamando questo file non da nessun errore e ti fa vedere l'elenco degli ID presenti nella tabella?

Ps. Il tag OPTION sarebbe meglio chiuderlo!

PHP:
echo "<OPTION VALUE=\"$ID\" >$nome</OPTION>";
 
Ultima modifica:
Grazie mille.. ho riprovato ora e con i tuoi consigli sono riuscita a trovare l'errore. nel database l'id l'ho scritto minuscolo era quello. non capisco perchè oggi pomeriggio quando l'avevo messo minuscolo mi dava comunque errore però ora funziona!
 
ora se posso chiedere di nuovo aiuto ho questo file:

<HTML>
<BODY>
<?php
# join_show.php

# include il file esterno
include ("connessione mysql e database.php");

$sql="SELECT hobby FROM nomi, hobby WHERE personale.ID=ID_nome AND ID='$ID_record'";

$risultati_mysql=mysql_query($sql,$connessione);
$num_righe=mysql_num_rows($risultati_mysql);

if ( $num_righe == 0 ) {
echo "Spiacente, non ci sono informazioni";
} else {
# abbiamo dei risultati
# crea la tabella

while ($riga=mysql_fetch_array($risultati_mysql))
{
$hobby=$riga["hobby"];
echo "<BR>$hobby";
}
} # fine dell'else
mysql_close($connessione);
?>
</BODY>
</HTML>

mi da questo errore:

Notice: Undefined variable: ID_record in C:\Program Files\EasyPHP 2.0b1\www\Esercizi per esame\MySQL\join_show.php on line 9

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\Program Files\EasyPHP 2.0b1\www\Esercizi per esame\MySQL\join_show.php on line 12
Spiacente, non ci sono informazioni
 
prova:
PHP:
$risultati_mysql = mysql_query($sql) or die (mysql_error());
senza passare il valore di connessione

Sicura che in questo caso maiuscole e minuscole siano apposto?
 
Ultima modifica:
La variabile $ID_record non è dichiarata da nessuna parte... Non è che anche questa pagina viene richiamata da una form, e quindi la variabile viene passata tramite un GET o un POST? Se è così la trovi in $_GET['ID_record'] (come per l'altro file) oppure in $_POST['ID_record'].
 
Problemi versioni php - variabili indefinite

Devo collegare 2 file e fare il join di due tabelle il primo è uno.php

<HTML>
<BODY>
<CENTER>Vedi i record della tabella nomi</CENTER>
<?php

$connessione=mysql_connect ("localhost","root","");
if (!$connessione){
echo "Impossible connettersi";
exit;
}
$db=mysql_select_db("sport",$connessione);
if (!$db) {
echo "impossibile selezionare db";
exit;
}

$sql="SELECT nome FROM nomi";
$risultati_mysql=mysql_query($sql,$connessione);
$num_righe=mysql_num_rows($risultati_mysql);
if ($num_righe == 0){
echo "non ci sono informazioni";
} else {
echo "<FORM METHOD=GET ACTION=\"visualizza.php\">";
echo "seleziona una persona";
echo "<SELECT NAME=\"id_record\">";
while ($riga=mysql_fetch_array($risultati_mysql))
{
$nome=$riga["nome"];
$id=$riga["ID_nome"];
echo "<OPTION VALUE=\"$id\">$nome";
}
echo "<\SELECT>";
}
echo "<BR>";
echo "<INPUT TYPE=\"SUBMIT\" VALUE=\"Visualizza info\">";
echo "<INPUT TYPE=\"RESET\" VALUE=\"cancella\">";
mysql_close($connessione);
?>
</FORM>
</BODY>
</HTML>

e mi da come errore

Vedi i record della tabella nomi
seleziona una persona SARA: Undefined index: ID_nome in C:\Program Files\EasyPHP 2.0b1\www\uno.php on line 28
Visualizza le info
Cancella

e l'altro file con cui si dovrebbe collegare è visualizza.php

<HTML>
<BODY>
<CENTER>Vedi i record della tabella nomi</CENTER>
<?php

$connessione=mysql_connect ("localhost","root","");
if (!$connessione){
echo "Impossible connettersi";
exit;
}
$db=mysql_select_db("sport",$connessione);
if (!$db) {
echo "impossibile selezionare db";
exit;
}


$sql="SELECT nome,hobby FROM nomi,hobby WHERE nomi.id=ID_nome ";
$risultati_mysql=mysql_query($sql,$connessione);
$num_righe=mysql_num_rows($risultati_mysql);
if ($num_righe == 0){
echo "non ci sono informazioni";
} else {
while ($riga=mysql_fetch_array($risultati_mysql))
{
$nome=$riga["nome"];

$id=$riga["id_record"];

}

}
echo "<BR>";

mysql_close($connessione);
?>
</FORM>
</BODY>
</HTML>


e mi da come errore:

Vedi i record della tabella nomi

Notice: Undefined index: id_record in C:\Program Files\EasyPHP 2.0b1\www\visualizza.php on line 28.

in teoria dovrebbe essere solo questo l'errore, l'interrogazione sql dovrebbe essere giusta perchè provandola sul prompt dei comandi mi da il join giusto tra la tabella nome e hobby. Come posso aggiustarlo? Il fatto è che la versione da dove ho preso il prompt è diversa da quella che sto usando come posso sistemarla?! Le due tabelle sono descritte così:


mysql> describe nomi;
+-----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+----------------+
| nome | varchar(20) | YES | | NULL | |
| indirizzo | varchar(30) | YES | | NULL | |
| provincia | varchar(20) | YES | | NULL | |
| citta | varchar(20) | YES | | NULL | |
| paese | varchar(20) | YES | | NULL | |
| id | int(11) | NO | PRI | NULL | auto_increment |
+-----------+-------------+------+-----+---------+----------------+

mysql> describe hobby;
+---------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| ID_nome | int(11) | YES | | NULL | |
| hobby | varchar(20) | YES | | NULL | |
+---------+-------------+------+-----+---------+-------+
 
uno.php:
$id=$riga["ID_nome"]; - ID_nome non è presente come colonna del database "nomi"

visualizza.php:
$id=$riga["id_record"]; - id_record non è presente come colonna del database hobby e manco in nomi
La query è totalmente errata, usa:
$sql="SELECT * FROM nomi n, hobby h WHERE n.id=h.ID_nome ";
 
Ragazzi forse sono riuscita allora:

<HTML>
<BODY>
<CENTER>Vedi i record della tabella nomi</CENTER>
<?php

$connessione=mysql_connect ("localhost","root","");
if (!$connessione){
echo "Impossible connettersi";
exit;
}
$db=mysql_select_db("sport",$connessione);
if (!$db) {
echo "impossibile selezionare db";
exit;
}
$sql="SELECT nome FROM nomi";
$risultati_mysql=mysql_query($sql,$connessione);
$num_righe=mysql_num_rows($risultati_mysql);
if ($num_righe == 0){
echo "non ci sono informazioni";
} else {
echo "<FORM METHOD=GET ACTION=\"visualizza.php\">";
echo "seleziona una persona";
echo "<SELECT NAME=\"id_nome\">";
while ($riga=mysql_fetch_array($risultati_mysql))
{
$nome=$riga["nome"];

echo "<OPTION VALUE=\"$nome\">$nome";
}
}

echo "<\SELECT>";

echo "<BR>";
echo "<INPUT TYPE=\"SUBMIT\" VALUE=\"Visualizza info\">";
echo "<INPUT TYPE=\"RESET\" VALUE=\"cancella\">";
mysql_close($connessione);
?>

Questo mi dà il form a tendina con i nomi, l'unica cosa che l'ultimo campo del menù è </SELECT> come posso toglierlo?!

e il secondo file:

<HTML>
<BODY>
<CENTER>Vedi i record della tabella nomi</CENTER>
<?php

$connessione=mysql_connect ("localhost","root","");
if (!$connessione){
echo "Impossible connettersi";
exit;
}
$db=mysql_select_db("sport",$connessione);
if (!$db) {
echo "impossibile selezionare db";
exit;
}


$sql="SELECT nome,indirizzo,provincia,citta,paese,hobby FROM nomi,hobby WHERE nomi.id=hobby.ID_nome";
$risultati_mysql=mysql_query ($sql,$connessione);
$num_righe=mysql_num_rows ($risultati_mysql);
if ($num_righe == 0){
echo "non ci sono informazioni";
} else {

echo "<table align=\"center\" border=\"4\">";
echo "<TR><TH>NOME</TH><TH>INDIRIZZO</TH><TH>PROVINCIA</TH><TH>CITTA</TH><TH>PAESE</TH><TH>HOBBY</TH></TR>";
while ($riga=mysql_fetch_array($risultati_mysql))
{
$nome=$riga["nome"];
$indirizzo=$riga["indirizzo"];
$provincia=$riga["provincia"];
$citta=$riga["citta"];
$paese=$riga["paese"];
$hobby=$riga["hobby"];

echo "<tr><td>$nome</td><td>$indirizzo</td><td>$provincia</td><td>$citta</td><td>$paese</td><td>$hobby</td>";
}

}
echo "<BR>";

mysql_close($connessione);
?>
</FORM>
</BODY>
</HTML>

Tutto ok, visualizzo tutti i nomi associati ai vari hobby. L'unica cosa è che nel collegamento tra i due file in teoria selezionando una persona dovrei vedere solo gli hobby di quella ma mi vengono fuori tutti i nomi ed i relativi hobby.

Grazie mille per l'aiuto.
 

Discussioni simili