Vai al contenuto

Sto Impazzendo - Problema Codice PHP -


Kemikal

Messaggi raccomandati

Ciao a tutti!

Che bello usare MAMP per testare in locale quello che hai scritto, il problema nasce quando quello che hai scritto non funziona! ;)

Sono oramai sei ore che provo e riprovo senza ottenere risultati e fra un pò --> :ghghgh:

Ci sarebbe qualche anima pia che mi aiuta?

Il risultato che vorrei ottenere non è (almeno credo) difficilissimo, ma, io, di php fino a ieri, non ne sapevo un h :DD

Ho fatto 1 pagina di login (Funziona Correttamente)

Ho fatto 1 pagina che controlla il login (Funziona Correttamente)

Ho fatto 1 pagina per la gestione (Che invia dati per la ricerca di midi sul database attraverso dei POST che poi sono recuperabili da una pagina di elaborazione dati).

La pagina di elaborazione dati, non funziona.

La riporto qui, così, qualcuno magari mi sa dire dove sbaglio....

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 TRANSITIONAL//EN">

<html>

<head>

<title>

Ricerca Midi

</title>

</head>

<body style="background-color: rgb(255, 255, 204);">

<TABLE WIDTH=100% BORDER=2 CELLSPACING=4 CELLPADDING=4 style="border-collapse: collapse" bordercolor="#111111">

<TR>

<TD align="center" bgcolor="#FFCC66">

<b>

<font face="Verdana" size="2">

Nome Midi

</font>

</b>

</TD>

<TD align="center" bgcolor="#FFCC66">

<b>

<font face="Verdana" size="2">

Autore

</font>

</b>

</TD>

<TD align="center" bgcolor="#FFCC66">

<b>

<font face="Verdana" size="2">

Genere

</font>

</b>

</TD>

<TD align="center" bgcolor="#FFCC66">

<b>

<font face="Verdana" size="2">

Consono

<br>

</font>

</b>

</TD>

<TD align="center" bgcolor="#FFCC66">

<b>

<font face="Verdana" size="2">

Url

<br>

Clic per ascoltare

<br>

</font>

</b>

</TD>

<?php

include ("config.inc.php");

$nome= $_POST['titolo'];

$artista=$_POST['autore'];

$genere=$_POST['genere'];

// CASO C - Nome Vuoto Autore "Indicato" Genere "Tutti" -

if ($_POST['titolo'] == null || $_POST['titolo'] == "" && $artista != "0" && $genere="0")

{

$query=mysql_query("SELECT * fROM m_midi WHERE id_artista=$artista");

while ($dati = mysql_fetch_array($query))

{

$nome= htmlentities($dati["nome"]);

$autore= htmlentities($dati["id_artista"]);

$genere= htmlentities($dati["id_genere"]);

$consono= htmlentities($dati["consono"]);

$url= htmlentities($dati["url"]);

$query1=mysql_query("SELECT * FROM m_artisti WHERE id_artista='$autore'");

while($temp1=mysql_fetch_array($query1))

{

$artista= htmlentities($temp1["nome"]);

}

$query2=mysql_query("SELECT * FROM m_generi WHERE id_genere='$genere'");

while($temp2=mysql_fetch_array($query2))

{

$genere2= htmlentities($temp2["descrizione"]);

}

if ($consono=="1")

{

$bit="Si";

}

elseif ($consono=="0")

{

$bit="No";

}

echo "

<tr>

<td>

$nome

</td>

<td>

$artista

</td>

<td>

$genere2

</td>

<td>

$bit

</td>

<td>

<a href='$url'>

$url

</a>

</td>

<tr>";

}

}

// OK VA!

// CASO A - Nome Vuoto Autore "Tutti" Genere "Tutti -

if ($_POST['titolo'] == null || $_POST['titolo'] == "" && $artista="0" && $genere="0")

{

$query=mysql_query("SELECT * fROM m_midi");

while ($dati = mysql_fetch_array($query))

{

$nome= htmlentities($dati["nome"]);

$autore= htmlentities($dati["id_artista"]);

$genere= htmlentities($dati["id_genere"]);

$consono= htmlentities($dati["consono"]);

$url= htmlentities($dati["url"]);

$query1=mysql_query("SELECT * FROM m_artisti WHERE id_artista='$autore'");

while($temp1=mysql_fetch_array($query1))

{

$artista= htmlentities($temp1["nome"]);

}

$query2=mysql_query("SELECT * FROM m_generi WHERE id_genere='$genere'");

while($temp2=mysql_fetch_array($query2))

{

$genere2= htmlentities($temp2["descrizione"]);

}

if ($consono=="1")

{

$bit="Si";

}

elseif ($consono=="0")

{

$bit="No";

}

echo "

<tr>

<td>

$nome

</td>

<td>

$artista

</td>

<td>

$genere2

</td>

<td>

$bit

</td>

<td>

<a href='$url'>

$url

</a>

</td>

<tr>";

}

}

// CASO B - Nome Scritto Autore "Tutti" Genere "Tutti -

if ($_POST['titolo'] != null || $_POST['titolo'] != "" && $artista="0" && $genere="0")

{

$query=mysql_query("SELECT * fROM m_midi WHERE nome like '%$nome%'");

while ($dati = mysql_fetch_array($query))

{

$nome= htmlentities($dati["nome"]);

$autore= htmlentities($dati["id_artista"]);

$genere= htmlentities($dati["id_genere"]);

$consono= htmlentities($dati["consono"]);

$url= htmlentities($dati["url"]);

$query1=mysql_query("SELECT * FROM m_artisti WHERE id_artista='$autore'");

while($temp1=mysql_fetch_array($query1))

{

$artista= htmlentities($temp1["nome"]);

}

$query2=mysql_query("SELECT * FROM m_generi WHERE id_genere='$genere'");

while($temp2=mysql_fetch_array($query2))

{

$genere2= htmlentities($temp2["descrizione"]);

}

if ($consono=="1")

{

$bit="Si";

}

elseif ($consono=="0")

{

$bit="No";

}

echo "

<tr>

<td>

$nome

</td>

<td>

$artista

</td>

<td>

$genere2

</td>

<td>

$bit

</td>

<td>

<a href='$url'>

$url

</a>

</td>

<tr>";

}

}

?>

</body>

</html>

Spiego meglio la situazione.

Il caso C preso in singola funziona benissimo.

Il caso B preso in singola funziona benissimo.

Il caso A preso in singola funziona benissimo.

A e B insieme funzionano

C e A insieme funzionano

A e C non funzionano insieme, C mi dovrebbe mostrare solo 1 dato ed invece me ne mostra 3, ovvero : 1 dato proveniente dalla query di C + 2 dati provenienti dalla query di A....sono disperato....help me!

Grazie a tutti!

Ma quando una lunga serie di abusi e usurpazioni, volti a perseguire il medesimo obbiettivo, rivela il disegno di riunire tutti gli uomini all'assolutismo, è loro diritto e loro dovere rovesciare un sì fatto governo e provvedere alla sicurezza per l'avvenire.

Link al commento
Condividi su altri siti

nn te la prendere, ma è impossibile leggere del codice simile... per nn fare delle semplici join hai annidato 3 while :| e poi potresti gestire il tutto creandoti dinamicamente i where delle select sql anzichè gli if (dove tra l'altro secondo me qualche parentesi nn avrebbe fatto male).

sarà che io a mysql delego quasi tutto il lavoro, ma come hai fatto tu fa rabbrividire :ghghgh:

scusa la franchezza. Se hai bisogno chiedi pure

Link al commento
Condividi su altri siti

No, no, anzi, fai bene perchè così solo posso imparare qualcosa.

Essenzialmente l'esecuzione di così tanti while è stata una "forzatura", inizialmente ero partito con l'idea di gestire differenti join, ma, dopo averne fatta una molto semplice per prova, ho scoperto che, all'atto della stampa alcune cose non andavano per il meglio.

Ovvero, dopo la select (verificata su SQL)

[...]

echo "0";

$nome= htmlentities($dati["m_midi.nome"]);

echo "$nome";

L'indicazione del m_midi.nome non sembrava piacergli, ovvero l'esecuzione del file si fermava a "0" e non mi arrivava mai a "nome" cosa che mi ha "costretto" dopo due giorni di tentativi ad optare per questa soluzione strana.

Riprovo comunque a riscrivere la join...magari va :-p

Ma quando una lunga serie di abusi e usurpazioni, volti a perseguire il medesimo obbiettivo, rivela il disegno di riunire tutti gli uomini all'assolutismo, è loro diritto e loro dovere rovesciare un sì fatto governo e provvedere alla sicurezza per l'avvenire.

Link al commento
Condividi su altri siti

anche a me sembra che il codice php sia scritto in un modo decisamente poco leggibile e sicuramente disordinato, il che potrebbe essere causa non ultima del cattivo funzionamento che hai osservato.

per inciso: in tutti i tre casi A, B, e C la condizione "if titolo==null || titolo="" è comune a tutti, tanto valeva fare un unico if su questa condizione che comprende poi i casi A, B e C con il test soltanto sui campi Autore e Genere.

un altro suggerimento: forse ti conviene non scrivere in html in quel modo, con i vari tag <font> e la tabella controllata con gli attributi invece che con le direttive di stile. vai di xhtml e css, ti semplifichi la vita e controlli meglio la presentazione.

Serve aiuto? Posso darti una mano in

Webmasters - Aiuto Software - Da Windows a Mac

Mappa Utenti ItaliaMac

[[miao]]

Link al commento
Condividi su altri siti

$dati["m_midi.nome"] si scrive semplicemente $dati["nome"], viceversa non ha senso per php.

Naturalmente se hai + campi nella select che si chiamano nome li devi ridefinire tramite il comando sql "as" per esempio

SELECT m_midi.nome as nome_midi.

In questo caso lo richiamerai tramite $dati["nome_midi"]

Link al commento
Condividi su altri siti

Ok, mi avete illuminato :-p potrei amarvi entrambi.

Non ci avevo mica pensato che bastasse assegnare un alias...

Grazie!

Stasera riscrivo all!

Ma quando una lunga serie di abusi e usurpazioni, volti a perseguire il medesimo obbiettivo, rivela il disegno di riunire tutti gli uomini all'assolutismo, è loro diritto e loro dovere rovesciare un sì fatto governo e provvedere alla sicurezza per l'avvenire.

Link al commento
Condividi su altri siti

Archiviato

Questa discussione è archiviata e chiusa a future risposte.

×
×
  • Crea Nuovo...