Récupérer dans la Bdd et ressortir en tableau

Petit nouveau ! | 9 Messages

13 déc. 2012, 15:52

Bonjour, je souhaite récupérer dans ma base de donnée des informations et les avoir sous forme de tableau : du genre
array =>
[0] user ="test"
[1] user =''test2"

Comment faire ceci? moi j'ai fais cela :
$cnx = mysql_connect( "localhost", "root", "" );
//sélection de la base de données:
$db= mysql_select_db( "ecriture" );
//création de la requête SQL:
$sql = "SELECT * FROM user";
//exécution de notre requête SQL:
$requete = mysql_query( $sql, $cnx ) or die( "ERREUR MYSQL numéro: ".mysql_errno()."<br>Type de cette erreur: ".mysql_error()."<br>\n" );
//récupération avec mysql_fetch_array(), et affichage de nos résultats :
 
 // $result = mysql_fetch_array($requete);
while ($result = mysql_fetch_array( $requete )) {
echo "<pre>";
print_r($result);
echo "<pre>";
}


?>
Si quelqu'un à une idée? merci à vous :)

Mammouth du PHP | 702 Messages

13 déc. 2012, 15:58

tu as déjà un tableau avec le mysql_fetch_array ton tableau s'appelle $result
donc tu peux faire un var_dump($result) tu verra ce qu'il contient.

Ton while va servir à chercher toutes les infos de ta base de donnée.
tant que la condition est remplie.

Petit nouveau ! | 9 Messages

13 déc. 2012, 16:10

merci à toi ! parce que enfaite j'ai un premier tableau avec des données qui je voudrais mettre dans ma bdd. Cependant je voudrais vérifier si il n'y a pas déja des élements présents dans ce tableau dans ma bdd et si il y en a, comment les supprimés? as -tu une idée de comment faire?

Mammouth du PHP | 702 Messages

13 déc. 2012, 16:27

oui c'est très simple.

Alors en fait tu veux supprimer des données mais il faut que tu me dise quels sont tes critères ?

Petit nouveau ! | 9 Messages

13 déc. 2012, 16:35

Enfaite je récupère des données qui sont susceptibles de déjà ce trouver dans ma base de donnée. C'est ça :
<?php 
 // require('connect.php');
$keyword = "#coca";  

$prct_keyword = urlencode($keyword);  
  
$search_string = "http://search.twitter.com/search.json?q=".$prct_keyword."&rpp=100&include_entities=false&result_type=recent"; 

$json = file_get_contents($search_string);  
$array = json_decode($json);  

foreach( $array->results as $index ) { 


		$tweet= $index->text.'<br>' ;
		$dbhost='localhost';
		$dbname='ecriture';
		$dblogin='root';
		$dbpasse='';
	
		try{
		$bdd= new PDO('mysql:host='.$dbhost.';dbname='.$dbname,$dblogin,$dbpasse)or die(print_r($bdd->errorInfo()));

		}
		catch(exeption $e){
		die('Ereur:'.$e->getMessage());
		}
		$req = $bdd->query("INSERT INTO user (id,user_name) VALUES ('','$tweet')");
	
 }


?>
Ces données je l'ai insère dans la table user. Je veux tout simplement supprimer ceux qui ont le même user_name

Mammouth du PHP | 702 Messages

13 déc. 2012, 16:46

dans ce cas la tu fais un foreach pour ton array

et pour chaque enregistrement tu fais d'abord un
 mysql_query($sql="delete FROM `table` WHERE `user_name` ='".mysql_real_escape_string($var)."'")
et après tu fais juste après une requête d'insertion classique.

comme ça il va d'abord tester ceux qui ont le même user_name si il existe il va les supprimer sinon il les insère, dans les deux cas tu n'as pas de doublons.

ViPHP
xTG
ViPHP | 7331 Messages

13 déc. 2012, 16:48

Ces données je l'ai insère dans la table user. Je veux tout simplement supprimer ceux qui ont le même user_name
DELETE FROM users WHERE username IN ('username1', 'username7', 'username8', 'username12')
Autrement formulé :
$sql = 'DELETE FROM users WHERE username IN (' . $variable . ')';
Je te laisse construire ta chaîne. ;)

Petit nouveau ! | 9 Messages

13 déc. 2012, 17:00

ah parfait ça marche :) merci beaucoup :)

Petit nouveau ! | 9 Messages

13 déc. 2012, 19:37

Je reviens vers vous, car la solution que je fais pose un problème, étant donné que je supprime tout ce qui est dans la base de donnée quand c'est un doublon, cela change d'id, du coup je ne peux pas savoir qu'elle sont les derniers élements rajoutés. Avez vous une solution à cela?
<?php 
$keyword = "#coca";  

$prct_keyword = urlencode($keyword);  
  
$search_string = "http://search.twitter.com/search.json?q=".$prct_keyword."&rpp=100&include_entities=false&result_type=recent"; 

$json = file_get_contents($search_string);  
$array = json_decode($json);  

foreach( $array->results as $index ) { 


		$tweet= $index->from_user_name;
		// echo $tweet;
		$dbhost='localhost';
		$dbname='ecriture';
		$dblogin='root';
		$dbpasse='';
	
		try{
		$bdd= new PDO('mysql:host='.$dbhost.';dbname='.$dbname,$dblogin,$dbpasse)or die(print_r($bdd->errorInfo()));

		}
		catch(exeption $e){
		die('Ereur:'.$e->getMessage());
		}

		$req = $bdd->query("DELETE FROM `user` WHERE `user_name` ='".mysql_real_escape_string($tweet)."'");
		// mysql_query($sql="delete FROM `user` WHERE `user_name` ='".mysql_real_escape_string($tweet)."'");

		$req = $bdd->query("INSERT INTO user (id,user_name) VALUES ('','$tweet')");
 }

?>

ViPHP
xTG
ViPHP | 7331 Messages

13 déc. 2012, 19:48

Ces données je l'ai insère dans la table user. Je veux tout simplement supprimer ceux qui ont le même user_name
DELETE FROM users WHERE username IN ('username1', 'username7', 'username8', 'username12')
Autrement formulé :
$sql = 'DELETE FROM users WHERE username IN (' . $variable . ')';
Je te laisse construire ta chaîne. ;)
:roll:

Petit nouveau ! | 9 Messages

13 déc. 2012, 19:56

désolé mais je ne comprends pas trop ce que tu veux dire par ce bout de code, je ne vois pas comment il vérifie si il y a des éléments de mon tableau qui sont présent dans la base de donnée

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

13 déc. 2012, 20:35

la solution indiqué c'est de supprimer les éléments existants avec la requete.

si un élément n'est pas trouvé, pas de suppression et pas d'erreur ;)

Ensuite insertion de tout le tableau.

Tu peux aussi imaginer une procédure stockée qui prend en paramètre l'info a ajouter. Cette procédure commence par tester l'existence dans la base, si elle n'existe pas on insère sinon rien.


@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 9 Messages

13 déc. 2012, 21:01

ah oui c'est plutot ta dernière solution qu'il me faut, tester dans la base de donnée l'existence, si elle y est elle fait rien sinon elle ajoute. Malheureusement je ne vois pas trop comment faire :/ peux tu m'aiguiller un peu plus stp :oops:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

13 déc. 2012, 22:36

un select count(*) sur la table avec en condition le "tweet" courant.

si le résultat du count est zéro tu exécute la requête insert.

essai de formaliser les deux requêtes et ensuite on vois leur utilisation.


@+
Il en faut peu pour être heureux ......