Newsgroup: it.comp.www.php
Titolo: Inserimento dati dentro un Database

Salve,
ho un problemino, ho fatto un file php che mi da un Form, dove inserisco
i dati, e lui li va a mettere nel mio database.
Il problema è che la prima volta funziona, poi dopo, non funziona piu,
mi da errore:
Non riesco ad eseguire la query  INSERT INTO news
(data,titolo,image,testo)  VALUES ('',         '21 Ottobre 2003',
'Seconda Prova di Invio del Testo',         'images/news1.jpg',
'Questa è una prova che faccio per inserire i dati. Seconda Prova di
testo, adesso dovrei avere 255 caratteri a mia disposizione e voglio
vedere quanti posso inserirne, adesso vediamo se davvero') 
Come se non riuscisse ad inserire piu di un record.
questa è la parte del php:
<?php
if (isset($data)){
include("datas.php");
$link=mysql_connect("$db_host", "$db_login", "$db_pass")
or die ("Non riesco a connettermi a <b>$db_host");
mysql_select_db($database, $link)
or die ("<center class='testobox'>Non riesco a selezionare il db
<b>$database</b></center>");
$dati=" INSERT INTO news VALUES ('',
        '$data',
        '$titolo',
        '$image',
        '$testo')";
mysql_query ($dati, $link)
or die ("<center class='testobox'>Non riesco ad eseguire la query
$dati</center>");
Echo "<center class='testobox'>I Dati sono Stati Archiviati con successo
nel Database $database</center>";
mysql_close($link);
echo "<meta http-equiv=refresh content=3;url=$PATH_INFO>";
}
?>
grazie mille,
Dimitri

         '$testo')";
Prova a scrivere la query per esteso:
INSERT INTO table (campo1, campo2, ..., campoN) VALUES(valore1, valore2,
..., valoreN);
Se la query non funziona, fai una verifica stampando a video la query che
devi eseguire, per verifica. E poi verifica anche il db, se ci sono campi
obbligatori.
Ciao
Marco

 obbligatori.
ho risolto, non avevo messo auto_increment alla voce ID, ora funziona
alla grande=)
senti, posso farti un'altra domanda?
Vorrei avere un campo dove posso metterci un testo molto lungo, piu dei
255 caratteri possibili con VARCHAR, ho provato TEXT, BLOB, mettendo a
Valore per esempio 1000, ma da sempre errore..
Dove sbaglio? perchè gli errori che da sono strani, se metto TEXT 1000,
mi dice che non ho specificato la lunghezza della chiave, invece ho
messo 1000, se invece non metto niente, mi dice che devo mettere
qualcosa..
bho..
grazie mille cmq,
Dimitri

 qualcosa..
Metti TEXT e basta. Senza specificare la dimensione.
BLOB serve per i dati binari, non per il testo.
Ciao
Marco

 BLOB serve per i dati binari, non per il testo.
mi da errore:
#1170 - BLOB column 'testo' used in key specification without a key
length 
ho messo TEXT senza alcun valore.
questa è la query che mi da phpMyAdmin nel cambiarlo:
ALTER TABLE `news` CHANGE `testo` `testo` TEXT NOT NULL 
che faccio?
non riesco a capire come mai..
Me lo fa sia sul mio comp. dove ho installato oggi il tutto che sul
server dove ho il mio sito.
grazie ancora e scusa la mia vera ignoranza in materia,
Dimitri

 che faccio?
Perchè? Cosa c'è che non va?
Male che vada elimina il campo e ricrealo.
Ciao
Marco

 Male che vada elimina il campo e ricrealo.
ho rifatto la tabella da capo, ma è uguale, dove sbaglio?
Errore 
query SQL :  
CREATE TABLE `news` (
`ID` TINYINT (4)NOT NULL AUTO_INCREMENT ,
`data` VARCHAR (20 )NOT NULL ,
`titolo` VARCHAR (100 )NOT NULL ,
`image` VARCHAR (50 )NOT NULL ,
`testo` TEXT NOT NULL ,
PRIMARY KEY (`ID` ),
INDEX (`data` ,`titolo` ,`image` ,`testo` )
)
Messaggio di MySQL: 
#1170 - BLOB column 'testo' used in key specification without a key
length 
non riesco a capire, dove sbaglio?
grazie mille
Dimitri

 )
Perchč la chiave primaria č un TINYINT?
Cmq, stai creando un indice su tutti i campi.
E' quello che vuoi fare realmente?
Prova ad eliminarlo.
Ciao
Marco

 Prova ad eliminarlo.
Vorrei creare dei campi che poi posso anche farci delle ricerche, quindi
dovrei indicizzarli..
forse sbaglio anche qui?
provo a non creare l'indice?
Dimitri

 provo a non creare l'indice?
Il fatto che devi fare delle ricerche non implica per forza che devi farti
un indice.
L'indice serve per "sveltire" le query, ma funziona tutto anche se non c'č.
Ciao
Marco

 L'indice serve per "sveltire" le query, ma funziona tutto anche se non c'č.
capito, adesso faccio le modifiche..
dove posso trovare una buona guida? magari in italiano dato che ho poco
tempo per dedicarmici..
grazie di cuore,
Dimitri

 tempo per dedicarmici..
Puoi provare con la doc di Mysql, ma non penso sia la strada migliore.
Molto meglio un manuale sulla progettazione di basi di dati relazionali.
E poi uno su Mysql per gli aspetti applicativi.
Ciao
Marco