- Home
- Categorie
- Coding e Sistemistica
- MYSQL e altri Database
- inserimento dati in mysql
-
@streghetta said:
Ciao a tutti!!
Innanzitutto scusatemi per l'errore è la prima volta che mi inscrivo a un forum e non sapevo nemmeno come inviare il messaggio.Per cui vi prego di perdonarmi.
Figurati,ci sono passato anch'io e anzi,per essere appena arrivata prometti bene :);)
Apprenderai un sacco di cose nuove quiPoi voglio ringraziare Probid per avermi risposto.
:):)Segui le istruzioni di fdalesio,dovresti risolvere
Se non riesci a giungere alla soluzione,posta qui e saremo pronti ad aiutarticiao!
-
Ciao a tutti!!!
Ma un saluto particolare va a Fdalesio ed a Probid
Grazie per avermi fatto notare l'errore.
Non l'avevo notato.
Grazie anche per le tue parole. Non ti nasconto che mi hanno fatto piacere
anche se esagerati, purtroppo devo deluderti, mi sa che mi fermo qui, perchè nonostante il prov il problema è sempre lo stesso.
Non riesco a inserire i dati.
Navigando in internet "sembra" che la procedura sia corretta e ho trovato anche questo comando ":$sql".
Inserito in questo modo:
$query = mysql_query ($sql,$db) or die ("Non riesco ad inserire i dati nel DB!!!:<br><b>$sql");
visualizza l'intera striga dell'errore (scusate non so se sto usando il termine giusto).
Comunque io visualizzo questo:Non riesco ad inserire i dati nel DB!!!:
INSERT INTO 'identita' (cognome, nome, indirizzo, citta, cap, prov, regione, ntel, email)
VALUES ('Cesaroni', 'Cesare', 'Via Giulio Cesare', 'Palermo', '90100','Pa', 'sicilia', '1313134564', 'Cesare_Cesaroni @gigio.it')come vedete il form invia i dati al file di inserimento e i dati arrivano correttamente, ma non li registra. Riesco a inserire i dati solo con easy php cliccando amministrazione e inserendoli direttamente nella tabella, addirittura registra i campi vuoti nonostante "not null" ma dal form niente. Non vi nascondo che ignorantemente ho creato con easy php
il database e la tabella con i campi e poi sono passata direttamente in php quindi se c'era qualche collegamento fa fare o file da creare (oltre a quelli che vi ho detto) io non lo fatto.
Sapete dirmi che manca?
-
streghetta fai una prova:
al posto di or die ("Non riesco ad inserire i dati nel DB!!!:<br><b>$sql")
metti or die(mysql_error())così ti dice che errore è e ti da qualche suggerimento e magari incollalo qui!
ciao
-
@streghetta said:
Non riesco ad inserire i dati nel DB!!!:
INSERT INTO 'identita' (cognome, nome, indirizzo, citta, cap, prov, regione, ntel, email)
VALUES ('Cesaroni', 'Cesare', 'Via Giulio Cesare', 'Palermo', '90100','Pa', 'sicilia', '1313134564', 'Cesare_Cesaroni @gigio.it')non conosco php ma con la sintassi SQL me la cavo un po' meglio:
ipotesi:- il nome della tabella identita non dovrebbe essere tra apici singoli, prova a toglierli o mettere delle quadre [identita]
- non è che alcuni dei campi del DB sono definiti come numerici ? (ad. es...il CAP e il Telefono)...tu gli butti dentro delle stringhe e forse si arrabbia...
- controlla la lunghezza massima dei campi del DB magari alcune stringhe (es. email sono troppo lunghe)
-
ciao a tutti!
Oggi sono al settimo cielo!!! Forse vi sembrerà un'esagerazione ma è così.
PROBLEMA RISOLTO!!:ola:
Grazie di cuore a tutti. Credetemi ragazzi siete stati fantastici.
Non solo mi avete incoraggiato e vi siete messi a disposizione per aiutarmi,
ma soprattutto mi avete sempre dato i consigli giusti.citazione di fdalesio:
streghetta fai una prova:
al posto di or die ("Non riesco ad inserire i dati nel DB!!!:<br><b>$sql")
metti or die(mysql_error())così ti dice che errore è e ti da qualche suggerimento e magari incollalo qui!
l'errore era il seguente:
Errore di sintassi nella query SQL vicino a ''identita' ( 'cognome', 'nome', 'indirizzo', 'citta', 'cap', 'prov', 'regione',' linea 1e grazie anche a ciò che mi ha consigliato autodafe
citazione:
non conosco php ma con la sintassi SQL me la cavo un po' meglio:
ipotesi:- il nome della tabella identita non dovrebbe essere tra apici singoli, prova a toglierli o mettere delle quadre [identita]
- non è che alcuni dei campi del DB sono definiti come numerici ? (ad. es...il CAP e il Telefono)...tu gli butti dentro delle stringhe e forse si arrabbia...
- controlla la lunghezza massima dei campi del DB magari alcune stringhe (es. email sono troppo lunghe)
Effettivamente avevo 3 campi numerici (id, ntel, cap) due dei quali ho modificato per utilizzare le stringhe e ho tolto (dopo vari tentativi fra parentesi e virgolette) gli apici singoli che avevo aggiunto nei miei tentativi anche in $tabella.
e FINALMENTE FUNZIONA!!
Qui vi riporto il programma corretto chissà possa essere utile a qualcun altro ma soprattutto per darvi la soddisfazione che per me il vostro aiuto è stato importante<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title> Inserimento anagrafica </title>
<!-- Versione 0.1 -->
</head>
<body bgcolor="#FFFFFF">
<? include ("routine/config.php");
$cognome = $_POST["cognome"];
$nome = $_POST["nome"];
$indirizzo = $_POST["indirizzo"];
$cap = $_POST["cap"];
$citta = $_POST["citta"];
$prov = $_POST["prov"];
$regione = $_POST["regione"];
$ntel = $_POST["ntel"];
$email = $_POST["email"];$db = mysql_connect($sqlhostname, $login, $password);
if ($db == FALSE)
die ("Errore nella connessione. Verificare i parametri di configurazione");
mysql_select_db($base, $db)
or die ("Errore nella selezione del database. Verificare i parametri di configurazione");$sql = "INSERT INTO $tabella( cognome, nome, indirizzo, citta, cap, prov, regione, ntel, email) VALUES ('$cognome', '$nome', '$indirizzo', '$citta', '$cap', '$prov', '$regione', '$ntel', '$email')";
$query = mysql_query ($sql) or die(mysql_error());echo "<b>Hai inserito i seguenti dati:</b><br>";
echo "Cognome/Nome : <b>$cognome $nome</b><br>";
echo "Residente in : <b>$indirizzo</b><br>";
echo "Città e cap : <b>$citta e $cap</b><br>";
echo "Numero telefonico ed e-mail : <b>$ntel e $email</b><br>";
?>
Naturalmente è da sistemare graficamente.
Ho ancora tantissimo da fare es eliminare i campi vuoti.
E ho già una domanda.
Successivamente devo inserire in tabella delle immagini credo di dover usare il campo blob per cui se per i campi numerici non si possono usare le stringhe la stessa cosa vale per i blob?
Un bacione a tutti by streghetta:36:
-
contento che tu abbia risolto...
per le immagini in mySql purtroppo non saprei...
ma come alternativa potresti memorizare in un campo testuale del DB la URL dell'immagine anzichè caricare l'immagine stessa nel DB...
-
Per le immagini forse è meglio salvarle su una cartella con diritti di scrittura e nel database memorizzare solo il percorso al file (o il nome, se il percorso rimane lo stesso per tutti i file). In questo modo alleggerisci il carico che il dbms deve sopportare e recuperi tutte le informazioni in poco tempo.
Ciao!
-
Ciao ragazzi!;)
Per ora sto cercando di risolvere il problema dei campi vuoti.
Ho letto i vostri messaggi e onestamente non ho capito bene.
Citazione Nasozor:
Per le immagini forse è meglio salvarle su una cartella con diritti di scrittura e nel database memorizzare solo il percorso al file (o il nome, se il percorso rimane lo stesso per tutti i file). In questo modo alleggerisci il carico che il dbms deve sopportare e recuperi tutte le informazioni in poco tempo.Mi vergogno a dirlo....cos'è una cartella con diritti di scrittura? come si imposta e utilizza?
-
@streghetta said:
Ciao ragazzi!;)
Per ora sto cercando di risolvere il problema dei campi vuoti.
Ho letto i vostri messaggi e onestamente non ho capito bene.
Citazione Nasozor:
Per le immagini forse è meglio salvarle su una cartella con diritti di scrittura e nel database memorizzare solo il percorso al file (o il nome, se il percorso rimane lo stesso per tutti i file). In questo modo alleggerisci il carico che il dbms deve sopportare e recuperi tutte le informazioni in poco tempo.Mi vergogno a dirlo....cos'è una cartella con diritti di scrittura? come si imposta e utilizza?
Qui si apre un mondo, cerco di sintetizzare il più possibile. Se hai un server tuo (ovvero sul tuo pc hai installato apache/php/mysql) e sei su windows, tutte le cartelle hanno diritti di scrittura, quindi no problem. Basta che usi le funzioni php che ti servono (fopen, fwrite, move_uploaded_file, ecc...) nel modo corretto e sei a posto. Se il tuo server è linux, allora devi creare una cartella e dare chmod 660 (o 777 per andare sul sicuro, anche se non è il massimo) e chown utente:utente (dove "utente" è il proprietario del sito). Se il server non è tuo, dovresti fare delle prove per vedere se hai una cartella che accetta di scrivere file tramite php (basta che esegui la chiamata fopen("prova.txt", "w+"), che cerca di aprire il file e se non lo trova lo crea. Se non crea il file allora devi chiedere al tuo host di abilitarti una cartella in lettura/scrittura (dovrebbero farlo senza troppi problemi).
Spero di essermi spiegato, ma l'unica è che tu faccia delle prove con la funzione fopen per vedere se funziona.
Ciao!
-
CIAO A TUTTI!!!!
Ho letto il messaggio di Nasozor ho capito che usando easyphp posso utilizzare senza troppi problemi le cartelle con diritti di scrittura, ma per il resto non ho capito molto come usarle con i form.
Io per intanto ho dato un'occhiata a qualche libro e anche su internet...
Per Blob (a differenza dei campi numerici) posso utilizzare le variabili e funziona benissimo ma il mio problema ora e nella convalida di tutto. Lasciando da parte per il momento la convalida delle altre informazioni (ho provato vari script ma non funzionano) ho per intanto trovato come convalidare un'immagine (non è una mia creazione) ma non le due immagini di cui ho bisogno.
questo è il programma che ho trovato e che vorrei includere nel mio form:tabella img:
$sql = 'CREATE TABLE
immagini
('
. 'id
int(11) NOT NULL auto_increment,'
. 'nome
varchar(50) NOT NULL default "",'
. 'size
varchar(25) NOT NULL default "",'
. 'type
varchar(25) NOT NULL default "",'
. 'immagine
blob NOT NULL,'
. ' PRIMARY KEY (id
)'. ' )';Upload.php (Upload dei file in MySQL):
<?function upload(){ $result = false;
$immagine = '';
$size = 0;
$type = '';
$nome = '';
$max_size = 300000;
$result = @is_uploaded_file($_FILES['file']['tmp_name']);
if (!$result) { echo "Impossibile eseguire l'upload."; return false; }else{
$size = $_FILES['file']; if ($size > $max_size) { echo "Il file è troppo grande."; return false; }
$type = $_FILES['file']['type'];
$nome = $_FILES['file']['name'];
$immagine = @file_get_contents($_FILES['file']['tmp_name']);
$immagine = addslashes ($immagine);
@include 'config.php';
$sql = "INSERT INTO immagini (nome, size, type, immagine) VALUE('$nome','$size','$type','$immagine')";
$result == @mysql_query ($sql) or die (mysql_error()); return true;}}?>config.php
<?$host = 'localhost'; $username = 'user'; $password = 'password'; $db = 'img';
$conn = @mysql_connect($host,$username,$password) or die (mysql_error());
$sel = @mysql_select_db($db) or die (mysql_error());?><?@include 'upload.php';
if (isset($_FILES['file'])){ upload();} echo "<h3>Upload</h3>
<form enctype="multipart/form-data"
action="".$_SERVER['PHP_SELF']."" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="300000" />
<input type="file" name="file" size="40" />
<input type="submit" value="Invia" /></form><br /><a href="link.php">Elenco</a>";?>(se provo ad aggiungere il form di un'altra immagine ne salva solo una, naturalmente ho cercato di modificare anche il file upload.php senza successo)
per creare e visualizzare un'elenco:
link.php:<?@include 'config.php';
$sql = "SELECT id, nome FROM immagini ORDER BY id DESC";
$result = @mysql_query($sql) or die (mysql_error ());
while ($row = @mysql_fetch_array($result)){ $id = $row['id'];
$nome = $row['nome']; echo "<a href="show.php?id=".$id."">".$nome."</a><br />";}?>show.php:
<?if (isset($_GET['id'])){$id = @intval($_GET['id']); @include 'config.php';
$sql = "SELECT id,type,immagine FROM immagini WHERE id='$id'";
$result = @mysql_query($sql) or die(mysql_error ());
$row = @mysql_fetch_array($result);
$id_img = $row['id'];
$type = $row['type'];
$img = $row['immagine'];
if (!$id_img) { echo "Id sconosciuto"; }else{@header ("Content-type: ".$type);
echo $img;}}else{echo "Impossibile soddisfare la richiesta.";}?>Per la soddisfazione della richiesta di visualizzazione occorre che venga
specificato nell'Header dell'output il Content-type relativo alla tipologia di immagine
che voglio mostrare; per fare un esempio, un'immagine gif sarà specificata da un
Content-type sul modello del seguente: Content-type: image/gif
altro problema visualizzo sempre:
"Impossibile soddisfare la richiesta"
Non riesco a capire come va impostato nell'header content-type
potete aiutarmi?
Lo so sono una frana:bho:NB come create il quadretto delle citazioni?
-
E' un casino se vuoi fare così. Più o meno hai capito tutto, ma dovrei star qui 1 ora a scrivere per spiegarti più in dettaglio come fare e soprattutto come estrarre l'immagine dal db da un campo blob con l'header giusto... Come ti avevo consigliato, invece di memorizzare l'immagine nel campo di tipo blob (dispendiosa in termini di gestione del database), memorizza il path all'immagine nel db (basta un varchar(127)) e usa la funzione "move_uploaded_file" per salvare l'immagine nel path corretto. Trovi tantissime classi già pronte che fanno tutto ciò di cui hai bisogno...
Scusa se non sono stato molto tecnico, ma sono a lavoro e tra 2 ore parto per la repubblica ceca quindi non avrò tempo per scriverti ulteriori dettagli.
In caso ci si risente lunedì.
Spero tu riesca a risolvere.
Ciao!
-
Innanzitutto grazie per la risposta
Io in questi giorni proverò a risolvere ma mi sa che aspetto te! comunque anche in caso che risolvo ti faccio sapere.
Ti auguro buon viaggio.
Un abbraccio by streghetta
ciao!!