PDA

View Full Version : PHP Select da Mysql


bRaSkA
31-01-2012, 11:13
Ciao a tutti, spero possiate darmi una mano perchè non so più dove cercare!!

Sto cercando di fare un insert su un database vuoto con rimando alla pagina in cui ci sarà il select che visualizza quello che è stato inserito. ma al select in esecuzione mi viene questa scritta:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /web/htdocs/www.(MIOSITO).it/home/select.php on line 33


ora vi metto il codice, se qualcuno può darmi una mano gliene sarei molto grato :)

Allora qui c'è l'insert:

<?php
// connessione al database

$database="xxxxx";
$conn=mysql_connect("localhost","xxxx","xxxx");
if (!$conn)
{
die ('Errore. E\' mpossibile accedere al database./n'. mysql_error());
mysql_select_db($database,$conn);
}

$giorno=$_POST[giorno];
$mese=$_POST[mese];
$anno=$_POST[anno];
$piatto=$_POST[piatto];

$sql="INSERT INTO piattodelgiorno"."(giorno, mese, anno, piatto)"."VALUES ('$giorno','$mese','$anno','&piatto')";



mysql_close($conn);

header("location: http://www.xxxxxxxxx.it/select.php");
exit;


?>

qui invece c'è il select dove dovrebbe esserci il problema, localizzato al WHILE:

<?php
// connessione al database

$database="xxxxxx";
$conn=mysql_connect("localhost","xxxx","xxxx");
if (!$conn)
{
die ('Errore. E\' mpossibile accedere al database./n'. mysql_error());
mysql_select_db($database,$conn);
}

$richiesta="SELECT * FROM menugiorno ";
$risultato=mysql_query($richiesta);

echo "<table border='1'>
<tr>
<td>Giorno</td>
<td>Mese</td>
<td>Anno</td>
<td>Piatto</td>
</tr>";

while ($riga=mysql_fetch_array($risultato)) // --> qui è localizzato l'errore <--
{

echo $riga['giorno'] ;
echo $riga['mese'];
echo $riga['anno'];
echo $riga['piatto'];

}
mysql_close($conn);

?>

Ho coperto il sito, le password ecc.. per la privacy (lo sto creando per esterni..).
Grazie a chiunque mi voglia aiutare!!

Mettiu_
31-01-2012, 12:28
Ciao :)
Ho varie domande/appunti da farti:
- la insert viene fatta su una tabella di nome 'piattodelgiorno' mentre la select dalla tabella 'menugiorno' e qui c'è il primo problema/svista;
- la insert, a occhio e croce, mi sembra sbagliata... Prova a cambiarla:
$sql = "INSERT INTO piattodelgiorno(giorno, mese, anno, piatto) VALUES('".$giorno"','".$mese."','".$anno."','".$piatto."')";
- hai provato a farti stampare le query EFFETTIVE che esegui sul db (ad esempio con echo $sql) e ad eseguirle manualmente tramite phpMyAdmin (o qualunque tool tu voglia) per vedere se FUNZIONANO?

bRaSkA
31-01-2012, 12:41
Inanzitutto grazie per avermi risposto :) poi.. per il primo punto hai ragione, ho appena aggiustato! per la seconda parte ho provato a sostituire ma l'errore è sempre quello.. mi sta venendo il dubbio che sia nel collegamento al database o proprio nella creazione del database. Come si crea il db su aruba? ho provato ad usare il pannello che mettono a disposizione ma sembra sempre sia vuoto anche se l'ho riempito con dei dati provvisori..

Mettiu_
31-01-2012, 12:46
Non sono cliente di aruba quindi non so dirti come si crea di preciso il db... Suppongo che loggandoti al tuo pannello di controllo hai a disposizione qualche tool per gestire il db (come il già citato phpMyAdmin)... Da lì dovresti poter creare/modificare/distruggere tabelle e/o interi db. Fermo restando che tutto quello che fai con l'interfaccina grafica lo puoi fare con un pò di sql, vedi questo (http://www.w3schools.com/sql/sql_create_table.asp), per esempio... Ora, la domanda, sorge spontanea: ma prima di scrivere questo bel codice, l'hai creata la tabella 'piattodelgiorno'? Altrimenti a cosa la fai la select (o la insert)? :D
Ma poi, nel primo codice tu dichiari la variabile $sql e quando la usi?? Cioè quando la fai la query?

bRaSkA
01-02-2012, 12:25
la tabella piattogiorno non esiste infatti è stato un errore precedente, l'ho sostituita con menugiorno che è esistente. l'interfaccia di aruba è identica a quella di phpmyadmin, quindi so che la tabella è stata creata!!

per la variabile $sql ho letto su vari tutorial che si imposta così l'insert.. come imposto che $sql deve essere eseguito?

Mettiu_
01-02-2012, 12:37
la tabella piattogiorno non esiste infatti è stato un errore precedente, l'ho sostituita con menugiorno che è esistente. l'interfaccia di aruba è identica a quella di phpmyadmin, quindi so che la tabella è stata creata!!

per la variabile $sql ho letto su vari tutorial che si imposta così l'insert.. come imposto che $sql deve essere eseguito?

Per eseguire la query devi fare:
$risultato = mysqli_query($conn, $sql);
subito dopo aver definito $sql. Nel secondo codice che hai postato (quello dove fai la select) devi sistemare la chiamata a mysqli_query perchè è sbagliata... infatti devi passare anche la connessione, come nell'istruzione che ti ho appena scritto.