Flex+PHP+MySql

  • Creatore Discussione Creatore Discussione dream88
  • Data di inizio Data di inizio

dream88

Utente Attivo
8 Apr 2009
62
0
0
Ciao a tutti!!
Io ho un problema a collegare Flex BUilder 3, Php e Mysql...
Lo scopo è quello di prendere i valori di un form e attraverso PHP inserirli nel database. Questo è il codice che ho postato:

prova.mxml

Codice:
<?xml version="1.0" encoding="utf-8"?>
   <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="userRequest.send()">
   <mx:HTTPService id="userRequest" url="http://localhost/sonia/pagina.php" useProxy="false" method="POST">
   <mx:request xmlns="">
   <Nome>{Nome.text}</Nome><Cognome>{Cognome.text}</Cognome>
   </mx:request>
   </mx:HTTPService>
   <mx:Form x="22" y="10" width="493">
   <mx:HBox>
   <mx:Label text="Nome"/>
   <mx:TextInput id="Nome"/>
   </mx:HBox>
   <mx:HBox>
   <mx:Label text="Cognome"/>
   <mx:TextInput id="Cognome"/>
   </mx:HBox>
   <mx:Button label="Submit" click="userRequest.send()"/>
   </mx:Form>
  </mx:Application>

pagina.php

PHP:
<?php
   Define( “DATABASE_SERVER”, “localhost” );
   Define( “DATABASE_USERNAME, “root” );
   Define( “DATABASE_PASSWORD”, “” );
   Define( “DATABASE_NAME”, “users” );
  
   //connect to the database
   $mysql = mysql_connect(DATABASE_SERVER, DATABASER_USERNAME, DATABASE_PASSWORD);
   mysql_select_db( DATABASE_NAME );
   if( $_POST["Nome"] AND $_POST["Cognome"])
   {
     //add the user
     $Query = "INSERT INTO accounts VALUES ('', '".$_POST['Nome']."', '".$_POST['Cognome']."')";
     $Result = mysql_query( $Query );
   }

   //return a list of all the users
   $Query = "SELECT * from accounts";
   $Result = mysql_query( $Query );
   $Return = "<accounts>";

   while ( $User = mysql_fetch_object( $Result ) )
   {
     $Return .= "<accounts><id>".$User->id."</id><Nome>".$User->Nome."</Nome><Cognome>".$User->Cognome."</Cognome></accounts>"; 
   }
   $Return .= "</accounts>";
   mysql_free_result( $Result );
   print ($Return)
 ?>

Siccome utilizzo xampp, non so se il problema deriva dall'indirizzo di localhost! Quando inserisco i dati non mi si visualizzano nel database... Come faccio a sapere se si collega o no? C'è qualche errore?

Grazie anticipatamente a chi mi da una mano!
 
Prova con queste:

Errato:
PHP:
   Define( “DATABASE_SERVER”, “localhost” );
   Define( “DATABASE_USERNAME, “root” );
   Define( “DATABASE_PASSWORD”, “” );
   Define( “DATABASE_NAME”, “users” );
   [...]
   $mysql = mysql_connect(DATABASE_SERVER, DATABASER_USERNAME, DATABASE_PASSWORD);
Corretto:
PHP:
   define("DATABASE_SERVER", "localhost");
   define("DATABASE_USERNAME", "root");
   define("DATABASE_PASSWORD", "");
   define("DATABASE_NAME", "users");
   [...]
   $mysql = mysql_connect(DATABASE_SERVER, DATABASE_USERNAME, DATABASE_PASSWORD);

I "doppi apici" in define devono essere ["..."] e non [“...”]. In mysql_connect DATABASER_USERNAME ha una "R" di troppo...
 
Bisognerebbe vedere se il PHP riporta degli errori. Ci sono due modi: abilitare (se non lo è) il logging su file degli errori nel php.ini oppure aggiungere un controllo nell'applicazione Flex che visualizzi la risposta del webserver.

Vado al secondo metodo, in rosso le modifiche:

<mx:HTTPService id="userRequest" resultFormat="text" url="http://localhost/sonia/pagina.php" useProxy="false" method="POST">


Aggiungi questo dopo </mx:Form>:

<mx:TextArea id="htmlResponse" text="{userRequest.lastResult}" x="22" y="278" width="239" height="81"/>

E rimuovi l'evento creationComplete che è inutile. Nella TextArea ti ritorna il codice HTML di risposta del WebServer
 
Mi sa che sbaglio a collocare i file salvati in Flex! Perché se eseguo direttamente il php funziona...
Il file pagina.php in Flex in che cartella devo salvarlo? Nella cartella src o bin-debug? Scusa ma lo sto usando da poco e non ne so molto...
Grazie per il tuo aiuto!
 
Gli script PHP devono rimanere separati dal progetto Flex, non devono essere messi né in src né in bin-debug.

Quando dici:

Perché se eseguo direttamente il php funziona...

In che modo lo esegui? Col browser andando su "http://localhost/sonia/pagina.php"?

Hai provato a modificare il progetto Flex come da mio post precedente? Quando premi "Submit" cosa ritorna scritto nella TextArea?
 
Grazie!! Funziona!!!

Ti posso chiedere ancora una cosa... è possibile fare lo stesso senza utilizzare un form ma con dei bottoni con differente valore?
Per esempio i bottoni si e no che una volta schiacciati trasmetteno si o no al database??
Te lo chiedo più dal punto di vista di flex...
Grazie davvero per il tuo aiuto!!!