Oppure

Loading
01/06/10 12:00
NickoMaiden
stavo facendo esperimenti con la creazione di una semplice rubrica. ecco tutto il sorgente:

FILE lawl.php

<html>
<body>

<form action="lawl.php" method="post">

Nome: <input type="text" name="nome" />
<br>Cognome: <input type="text" name="cognome" />
<br>Numero di tel: <input type="text" name="tel" />
<input type="submit" value="Salva" />
</form>

</body>
</html>



<?php

include "stampa.php";
include "connetti_db.php";

loggadb(NULL);

//elimina

$elimina=$_GET['canc'];
if($elimina)
{
$DBdrop='DELETE FROM mio_database.rubrica WHERE rubrica.ID_RUB='.$elimina;
$uhm=mysql_query($DBdrop);
}



//fine elimina




if($_POST["nome"]==NULL||$_POST["cognome"]==NULL||$_POST["tel"]==NULL)
   {
   echo("Tutti i campi sono obbligatori");
   stampa();
   loggadb("chiudi");
   die();
   }
$nome=$_POST["nome"];
$cognome=$_POST["cognome"];
$tel=$_POST["tel"];



//lista query
$DB_crea=  "
				CREATE TABLE IF NOT EXISTS Rubrica
                   (
				    ID_RUB int(10) AUTO_INCREMENT,
                    nome char(50),
                    cognome char(50) ,
                    numero int(15),
					PRIMARY KEY(ID_RUB)
                   )
			";


$DB_aggiungi="
			INSERT INTO mio_database.rubrica (
			ID_RUB ,
			nome ,
			cognome ,
			numero
			)
VALUES (
NULL , '".$nome."','".$cognome."','".$tel."'
			)";
			 
			
			



// creo una rubrica.
$uhm=mysql_query($DB_crea);
				

$uhm=mysql_query($DB_aggiungi);


stampa();

loggadb("chiudi");


?> 



FILE connetti_db.php
<?php

function loggadb($azione)
{


//dati del database
$host="localhost";
$username="root";
$password="";
$nome_db="mio_database";

$link = mysql_connect($host,$username,$password)
    or die('Impossibile connettersi al database!: ' . msql_error($link));

mysql_select_db($nome_db, $link)
    or die('Database Non Trovato!');
	

	if($azione=="chiudi")	
	mysql_close($link);
	
	}
	
?>


FILE stampa.php

<?php

//stampa!

function stampa()
{
$DBnome=mysql_query('SELECT nome FROM mio_database.rubrica');
$DBcognome=mysql_query('SELECT cognome FROM mio_database.rubrica');
$DBtel=mysql_query('SELECT numero FROM mio_database.rubrica');
$DBid=mysql_query('SELECT ID_RUB FROM mio_database.rubrica');

$i=0;


if(!mysql_num_rows($DBnome))
 die();

echo('<table border="3">');
echo('<tr> <td> NOME </td> <td>COGNOME</td> <td>TELEFONO</td> <td>ELIMINA</td> </tr>');
while($i<mysql_num_rows($DBnome))
{
echo ('<tr> <td>');
echo (mysql_result($DBnome, $i).$i);
echo ('</td> <td>');
echo (mysql_result($DBcognome, $i).$i);
echo ('</td> <td>');
echo (mysql_result($DBtel, $i).$i);
echo ('</td> <td>');
echo ('<a href="lawl.php?canc='.mysql_result($DBid, $i).'"><center>x'.$i.'</center></a>');
echo ('</td> </tr>');
$i++;
}
echo('</table>');
}
?>



finchè inserisco campi tutto va bene, dal momento in cui cancello un campo succede il finimondo:
cancello i campi e va tutto bene finchè non ne inserisco uno nuovo!
dal momento che inserisco un nuovo campo si crea una confusione con la chiave primaria che crea problemi quando vado a cancellare un ulteriore campo, ad esempio voglio eliminare il 1° e invece mi elimina il 3°.
se avete tempo di provarlo 5 secondi capirete che è + facile capire il problema che spiegarlo. chi mi dice dove sbaglio?
grazie in anticipo :)
Ultima modifica effettuata da NickoMaiden 01/06/10 13:23
aaa
01/06/10 13:05
Thejuster
sinceramente non riesco a trovare il problema pur avendo letto il sergente ben 3 volte.
ma posso dirti che vedo abbastanza chiasso nel codice.

ti direi semplicemente di provare a riscriverlo.

prova a rifarlo magari omettendo l'html e testando prima di tutto le query
cercando di capire dove sia il problema.

dalla forma delle query mi sembra di vedere l'output generato da phpmyadmin e non una query fatta manualmente.

personalmente farei connettere il database in anticipo prima che entri nella pagina
all'inizio della pagina in modo che rimanga sempre connesso per tutta la sessione.

$host = 'localhost';
$db = '';
$user = '';
$pass = '';

$connect = mysql_connect($host,$user,$pass);
mysql_select_db($db,$connect);



prova ad usare una forma semplice di query

mysql_query("INSERT INTO Rubrica (nome,cognome,numero) VALUES ('$nome','$cognome','$numero'");


almeno prova con una semplice query e controlla se tutto funziona bene.

magari semplifica un pò anche la query di stampa anziché usare quel metodo prova questo


$sql = mysql_query("SELECT * FROM Rubrica");

echo "<table border='3'>"; 
echo "<tr><td> NOME </td><td>COGNOME</td><td>TELEFONO</td><td>ELIMINA</td></tr>"; 
while($row = mysql_fetch_array($sql)) {

echo "<tr><td>"; echo "$row[nome]";
echo "<tr><td>"; echo "$row[cognome]";
echo "<tr><td>"; echo "$row[telefono]";
echo "<tr><td>"; 
echo "$row[telefono]";
echo "<a href='lawl.php?canc=$id'>Elimina</a>";

}
}



prova a riscrivere tutto,
questo e un mio consiglio :)
mire.forumfree.it/ - Mire Engine
C# UI Designer
01/06/10 13:35
NickoMaiden
bhe si il codice è incasinato soprattutto perchè è la prima cosa che ho tentato di realizzare in php.
ora mi metto a riscriverlo comunque usando le indicazioni che mi hai dato.
le query le ho generate con phpmyadmin ma non perchè non conosco l'sql, ma per evitare di commettere errori.
non ho capito tanto bene la stampa che hai fatto tu:


$sql = mysql_query("SELECT * from Rubrica");  

echo "<table border='3'>";
echo "<tr><td> NOME </td><td>COGNOME</td><td>TELEFONO</td><td>ELIMINA</td></tr>";

// fin qui ci siamo

while($row = mysql_fetch_array($sql)) { // mi spieghi esattamente che fa qui che non riesco a capire? cioè non ci dovrebbe essere un indice per passare da riga a riga?

echo "<tr><td>"; echo "$row[nome]";
echo "<tr><td>"; echo "$row[cognome]";
echo "<tr><td>"; echo "$row[telefono]";
echo "<tr><td>";
echo "$row[telefono]";
echo "<a href='lawl.php?canc=$id'>Elimina</a>";

}
}


Ultima modifica effettuata da NickoMaiden 01/06/10 13:37
aaa
01/06/10 14:53
Thejuster
infatti il ciclo while fa tutto lui
non serve un indice perchè stampa a video tutto il contenuto riga per riga
poi se tu che in quella riga puoi scegliere anche quale campo vedere o non.


while($row = mysql_fetch_array($sql)) {

nella variabile $row và tutta la riga della tabella compreso nome,cognome,numero ecc. ecc.
quindi $row diventa un array come dice la sintassi stessa.

quindi recupero dall'array il valore della seguente riga

echo $row[nome];

successivamente se ci sono più righe il valore $row[nome] cambia :)
così eviti di farti tutto quel ciclo inutile

saluti
mire.forumfree.it/ - Mire Engine
C# UI Designer
01/06/10 17:01
NickoMaiden
Postato originariamente da Thejuster:

infatti il ciclo while fa tutto lui
non serve un indice perchè stampa a video tutto il contenuto riga per riga
poi se tu che in quella riga puoi scegliere anche quale campo vedere o non.


while($row = mysql_fetch_array($sql)) {

nella variabile $row và tutta la riga della tabella compreso nome,cognome,numero ecc. ecc.
quindi $row diventa un array come dice la sintassi stessa.

quindi recupero dall'array il valore della seguente riga

echo $row[nome];

successivamente se ci sono più righe il valore $row[nome] cambia :)
così eviti di farti tutto quel ciclo inutile

saluti





ahhhhhhh capito grazie 1000 gentilissimo :D
aaa